public function fire() { $list = CustomerInvite::whereBonus(0)->with('customer')->get()->all(); $this->line('Найдено безбонусных инвайтов: ' . count($list)); foreach ($list as $item) { if ($item->customer && $item->customer->initExistsPaid()) { $this->line('Отправляем письмо по инвайту: ' . $item->id . ', customer = ' . $item->customer->name); Mailer::inviteIsPayment($item->customer, $item->owner); $item->bonus = 1; $item->save(); } } }
/** * @param CM $customer свежезарегистрированный пользователь * * @return null|\Symfony\Component\HttpFoundation\Cookie */ public function registerInvite(CM $customer) { // уже осуществлялся вход ранее, не обрабатываем if (!$customer->isEmptyAuthAt()) { return false; } // при регистрации должен был сохраниться телефон, если был инвайт, проверим $external = CustomerInviteExternal::wherePhone($customer->phone)->first(); if (!$external || empty($external->owner_id)) { return false; } // нельзя приглашать самого себя if ($external->owner_id == $customer->id) { return false; } Reporter::inviteCodeFound($customer->id, $external->owner_id); $invite = CustomerInvite::create(['customer_id' => $customer->id, 'owner_id' => $external->owner_id, 'source_id' => $external->source_id, 'customer_invite_external_id' => $external->id]); Reporter::inviteCodeRegistered($customer->id, $external->owner_id, $invite->id); return true; }