/**
  * Отклоняет объединение
  *
  * REQUEST:
  * - reason - str - причина отклонения
  *
  * @param int $id идентификатор объединения
  *
  * @return \yii\web\Response
  */
 public function actionReject($id)
 {
     return self::doAction($id, function (\app\models\Union $item) {
         $item->reject();
         \cs\Application::mail($item->getUser()->getEmail(), 'Ваше объединение отклонено модератором', 'moderator_unions/reject', ['item' => $item, 'reason' => self::getParam('reason')]);
     });
 }
Example #2
0
 /**
  * Sends an email to the specified email address using the information collected by this model.
  * @param  string  $email the target email address
  * @return boolean whether the model passes validation
  */
 public function contact($email)
 {
     if ($this->validate()) {
         Application::mail($email, 'Письмо с сайта galaxysss.ru: ' . $this->subject, 'contact', ['text' => $this->body, 'from' => ['email' => $this->email, 'name' => $this->name]]);
         return true;
     } else {
         return false;
     }
 }
 /**
  * AJAX
  * Добавляет свое сообщение
  *
  * REQUEST:
  * - text - string - текст собщения
  * - to - int - идентификатор пользователя, для кого
  *
  * @return string json html сообщение мое отформатированное для чата
  */
 public function actionSend()
 {
     $to = self::getParam('to');
     $message = ChatMessage::add(['message' => self::getParam('text'), 'user_id_to' => $to]);
     $cid = Yii::$app->params['chat']['consultant_id'];
     if ($to == $cid) {
         Application::mail(User::find($cid)->getEmail(), 'Новое сообщение', 'new_message', ['message' => $message, 'user' => Yii::$app->user->identity]);
     }
     return self::jsonSuccess($this->renderFile('@app/views/cabinet_chat/send.php', ['message' => $message, 'user' => Yii::$app->user->identity]));
 }
Example #4
0
 public function add($stock_id)
 {
     if ($this->validate()) {
         $stock = Stock::find($stock_id);
         $request = Request::insert(['stock_id' => $stock_id, 'month' => $this->monthCounter]);
         Application::mail(User::find(Yii::$app->params['chat']['consultant_id'])->getEmail(), 'Запрос на добавление услуги', 'request', ['stock' => $stock, 'user' => \Yii::$app->user->identity, 'request' => $request]);
         return true;
     } else {
         return false;
     }
 }
 /**
  * AJAX
  * Отправляет сообщение к заказу для клиента
  *
  * REQUEST:
  * - text - string - текст сообщения
  *
  * @param int $id  идентификатор заказа gs_users_shop_requests.id
  *
  * @return \yii\web\Response json
  */
 public function actionOrder_item_message($id)
 {
     $text = self::getParam('text');
     $request = \app\models\Shop\Request::find($id);
     if ($request->getField('user_id') != Yii::$app->user->id) {
         return self::jsonErrorId(101, 'Это не ваш заказ');
     }
     $request->addMessageToShop($text);
     Application::mail(\Yii::$app->params['mailer']['payment'], 'Новое сообщение', 'new_message_to_shop', ['request' => $request, 'text' => $text]);
     return self::jsonSuccess();
 }
Example #6
0
 /**
  * @return boolean
  *
  * @throws \cs\web\Exception
  */
 public function action()
 {
     if ($this->validate()) {
         /** @var \app\models\User $user */
         $user = Yii::$app->user->identity;
         // добавляю в диспечер
         $fields = EmailChangeDispatcher::add($user->getId(), $this->email);
         // отправляю письмо
         Application::mail($this->email, 'Заявка на смену Email/Логина', 'change_email', ['url' => Url::to(['auth/change_email_activate', 'code' => $fields->getField('code')], true), 'user' => $user]);
         return true;
     } else {
         return false;
     }
 }
Example #7
0
 /**
  * Sends an email to the specified email address using the information collected by this model.
  *
  * @param  string $email the target email address
  *
  * @return boolean whether the model passes validation
  *
  * @throws \cs\web\Exception
  */
 public function send()
 {
     if ($this->validate()) {
         $user = User::find(['email' => $this->email]);
         if (is_null($user)) {
             throw new Exception('Пользователь не найден');
         }
         $fields = \app\services\PasswordRecoverDispatcher::insert($user->getId());
         \cs\Application::mail($this->email, 'Восстановление пароля', 'password_recover', ['user' => $user, 'url' => Url::to(['auth/password_recover_activate', 'code' => $fields['code']], true), 'datetime' => Yii::$app->formatter->asDatetime($fields['date_finish'])]);
         return true;
     } else {
         return false;
     }
 }
 /**
  * Делает рассылку писем из списка рассылки
  */
 public function actionIndex($isEcho = 1)
 {
     $this->isEcho = $isEcho;
     $items = [];
     $list = Collection::getList();
     $c = $this->getIndex();
     $c++;
     if ($c >= count($list)) {
         $c = 0;
     }
     $item = $list[$c];
     $class = $item['class'];
     self::log('класс = ', $class);
     /** @var \app\services\investigator\InvestigatorInterface $class */
     $class = new $class();
     $className = $class->className();
     try {
         $new = $class->getNewItems();
         foreach ($new as $i) {
             $i['class'] = $className;
             $i['id'] = $c;
             $items[] = $i;
         }
     } catch (\Exception $e) {
     }
     if (count($items) > 0) {
         Application::mail('*****@*****.**', 'Появились новые послания', 'new_channeling', ['items' => $items]);
         self::log('новые = ', $items);
     } else {
         self::log('Нет ничего');
     }
     // получаю какие есть
     $existList = Investigator::query(['class_name' => $className, 'status' => \app\models\Investigator::STATUS_NEW])->select('url')->column();
     // добавляю свежие
     $rows = [];
     foreach ($items as $i) {
         if (!in_array($i['url'], $existList)) {
             $rows[] = [$i['class'], $i['url'], $i['name'], time(), \app\models\Investigator::STATUS_NEW];
         }
     }
     // добавляю в БД
     if (count($rows) > 0) {
         Investigator::batchInsert(['class_name', 'url', 'name', 'date_insert', 'status'], $rows);
     }
     $this->setIndex($c);
 }
Example #9
0
 public function insert($fieldsCols = null)
 {
     $row = parent::insert(['beforeInsert' => function ($fields) {
         $fields['user_id'] = Yii::$app->user->identity->getId();
         $fields['date_insert'] = gmdate('YmdHis');
         return $fields;
     }]);
     $item = new \app\models\Union($row);
     $fields = [];
     if ($row['description'] == '') {
         $item = new \app\models\Union($row);
         $fields['description'] = GsssHtml::getMiniText($row['content']);
         $item->update($fields);
     }
     Application::mail(Yii::$app->params['moderator']['email'], 'Добавлено новое объединение', 'new_union', ['union' => $item]);
     return $item;
 }
Example #10
0
 /**
  * AJAX
  * Создает подписку для авторизованного или неавторизованного пользователя
  * Высылает письмо подтверждения email
  *
  * @return string json
  *                error
  *                101, 'Такая почта уже зарегистрирована'
  */
 public function actionMail()
 {
     $email = self::getParam('email');
     $name = self::getParam('name');
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         return self::jsonErrorId(101, 'Не корректный формат адреса');
     }
     $email = strtolower($email);
     $user = User::find(['email' => $email, 'subscribe_is_tesla' => 1]);
     if ($user) {
         $user->update(['subscribe_is_tesla' => 1]);
     } else {
         $fields = ['email' => $email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 1, 'is_confirm' => 0, 'name_first' => $name, 'subscribe_is_tesla' => 1];
         $user = User::insert($fields);
         $fields = RegistrationDispatcher::add($user->getId());
         \cs\Application::mail($email, 'Подтверждение почты', 'subscribe_activate', ['url' => Url::to(['subscribe/activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]);
     }
     return self::jsonSuccess();
 }
Example #11
0
 /**
  * Делает заказ
  *
  * @param  int $id идентификатор генератора
  *
  * @return boolean whether the model passes validation
  */
 public function insert($fieldsCols = null)
 {
     $id = $fieldsCols;
     $request = parent::insert(['beforeInsert' => function ($fields) {
         $fields['email'] = strtolower($fields['email']);
         $fields['datetime'] = time();
         $fields['status'] = \app\models\Request::STATUS_1_WAIT;
         return $fields;
     }]);
     if ($request === false) {
         return false;
     }
     $request['product_id'] = $id;
     $this->email = strtolower($this->email);
     if (!Yii::$app->user->isGuest) {
         $user = Yii::$app->user->identity;
         $request = new \app\models\Request($request);
         $request->update(['user_id' => Yii::$app->user->getId(), 'product_id' => $id]);
         // письмо клиенту
         $result = \cs\Application::mail($user->getEmail(), 'Вы сделали очередной заказ', 'next_request_client', ['user' => $user, 'request' => $request]);
     } else {
         $fields = ['email' => $this->email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 1, 'is_confirm' => 0, 'subscribe_is_tesla' => 1, 'name_first' => $this->name, 'phone' => $this->phone];
         $user = User::insert($fields);
         $fields = \app\services\RegistrationDispatcher::add($user->getId());
         $request = new \app\models\Request($request);
         $request->update(['user_id' => $user->getId(), 'product_id' => $id]);
         // письмо им
         \cs\Application::mail($this->email, 'Поздравляем вы сделали первый шаг к своему полю коллективного счастья', 'new_request_client', ['url' => Url::to(['site/activate', 'code' => $fields['code']], true), 'user' => $user, 'request' => $request]);
     }
     foreach (\Yii::$app->params['requestMailList'] as $item) {
         // письмо нам
         $result = Application::mail($item, 'Появился заказ на TeslaGen', 'new_request', ['request' => $request, 'user' => $user]);
         //            VarDumper::dump([$result,$item]);
     }
     return $request;
 }
Example #12
0
 /**
  * AJAX
  * Создает подписку для авторизованного или неавторизованного пользователя
  * Высылает письмо подтверждения email
  *
  * @return string json
  *                error
  *                101, 'Такая почта уже зарегистрирована'
  */
 public function actionMail()
 {
     $email = self::getParam('email');
     $name = self::getParam('name');
     $email = strtolower($email);
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         return self::jsonErrorId(101, 'Не корректная почта');
     }
     if (User::query(['email' => $email])->exists()) {
         return self::jsonErrorId(101, 'Такая почта уже зарегистрирована');
     }
     if (Yii::$app->user->isGuest) {
         $fields = ['email' => $email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 0, 'is_confirm' => 0, 'name_first' => $name];
         foreach (Subscribe::$userFieldList as $field) {
             $fields[$field] = 1;
         }
         $user = User::insert($fields);
     } else {
         /** @var \app\models\User $user */
         $user = Yii::$app->user->identity;
         $fields = ['email' => $email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 0, 'is_confirm' => 0];
         foreach (Subscribe::$userFieldList as $field) {
             $fields[$field] = 1;
         }
         $user->update($fields);
     }
     $fields = RegistrationDispatcher::add($user->getId());
     \cs\Application::mail($email, 'Подтверждение почты', 'subscribe_activate', ['url' => Url::to(['subscribe/activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]);
     return self::jsonSuccess();
 }
Example #13
0
 /**
  * Регистрирует пользователей
  *
  * @param $email
  * @param $password
  *
  * @return static
  */
 public static function registration($email, $password)
 {
     $email = strtolower($email);
     $fields = ['email' => $email, 'password' => self::hashPassword($password), 'is_active' => 0, 'is_confirm' => 0, 'datetime_reg' => gmdate('YmdHis'), 'referal_code' => Security::generateRandomString(20)];
     // добавляю поля для подписки
     foreach (\app\services\Subscribe::$userFieldList as $field) {
         $fields[$field] = 1;
     }
     \Yii::info('REQUEST: ' . \yii\helpers\VarDumper::dumpAsString($_REQUEST), 'gs\\user_registration');
     \Yii::info('Поля для регистрации: ' . \yii\helpers\VarDumper::dumpAsString($fields), 'gs\\user_registration');
     $user = self::insert($fields);
     $fields = RegistrationDispatcher::add($user->getId());
     \cs\Application::mail($email, 'Подтверждение регистрации', 'registration', ['url' => Url::to(['auth/registration_activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]);
     return $user;
 }
 /**
  * AJAX
  *
  * REQUEST:
  * - monthcounter - int - количество покупамых месяцев
  * - stock_id - int - идентификатор акции
  */
 public function actionAdd_step1()
 {
     $monthCounter = self::getParam('monthcounter');
     $stockId = self::getParam('stock_id');
     $request = Request::insert(['stock_id' => $stockId, 'month' => $monthCounter]);
     Application::mail(User::find(Yii::$app->params['chat']['consultant_id'])->getEmail(), 'Запрос на добавление услуги', 'request', ['stock' => Stock::find($stockId), 'user' => \Yii::$app->user->identity, 'request' => $request]);
     return self::jsonSuccess(['user' => ['email' => Yii::$app->user->identity->getEmail(), 'fio' => Yii::$app->user->identity->getNameFull()], 'request' => ['id' => $request->getId(), 'sum' => $monthCounter * 100 * 65]]);
 }
 /**
  * AJAX
  * Отправляет сообщение к заказу для клиента
  *
  * REQUEST:
  * - text - string - текст сообщения
  *
  * @param int $id идентификатор заказа gs_users_shop_requests.id
  *
  * @return \yii\web\Response json
  */
 public function actionItem_message($id)
 {
     $text = self::getParam('text');
     $request = Request::find($id);
     $request->addMessageToClient($text);
     // отправка письма
     Application::mail($request->getClient()->getEmail(), 'Новое сообщение', 'new_message_to_client', ['request' => $request, 'text' => $text]);
     return self::jsonSuccess();
 }
Example #16
0
 /**
  * Устанавливает статус для заказа "Оплата подтверждена магазином" self::STATUS_PAID_SHOP
  * Прикрепляет билеты для заказа
  *
  * @param string $message - сообщение для статуса
  *
  * @return bool
  */
 public function paid($message = null)
 {
     // выдача билетов
     $tickets_counter = $this->getProduct()->getField('tickets_counter');
     for ($i = 0; $i < $tickets_counter; $i++) {
         Ticket::insert(['request_id' => $this->getId(), 'code' => substr(str_shuffle("012345678901234567890123456789"), 0, 12), 'date_insert' => time()]);
     }
     $this->addStatusToShop(self::STATUS_PAID_CLIENT);
     $this->addStatusToClient(self::STATUS_PAID_SHOP);
     $this->update(['is_paid' => 1]);
     $dostavka = $this->getField('dostavka');
     switch ($dostavka) {
         case 1:
             $this->addStatusToClient(self::STATUS_DOSTAVKA_GET_MYSELF_POLET_WAIT);
             break;
         case 2:
             $this->addStatusToClient(self::STATUS_DOSTAVKA_GET_MYSELF_VOZNESENIE_WAIT);
             break;
         case 3:
             $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_MOSCOW_WAIT, 'message' => 'Наш посланник пытается с вами связаться для передачи подарка']);
             break;
         case 4:
             $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_RUSSIA_PREPARE, 'message' => 'Подарок находится в режиме подготовки к отправке']);
             break;
         case 5:
             $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_WORLD_PREPARE, 'message' => 'Подарок находится в режиме подготовки к отправке']);
             break;
     }
     // отправка письма
     Application::mail($this->getClient()->getEmail(), 'Ваш подарок', 'new_request_client', ['request' => $this]);
     Application::mail(\Yii::$app->params['mailer']['payment'], 'Заказ оплачен', 'new_request_shop', ['request' => $this]);
     // прибавление счетчика
     \app\models\Counter::inc($this->getProduct()->getPrice());
     return true;
 }
Example #17
0
 /**
  * AJAX
  * @param $id
  *
  * @return \yii\web\Response
  */
 public function actionSend_moderation($id)
 {
     return self::doAction($id, function (\app\models\Union $item) {
         $item->update(['moderation_status' => null]);
         // высылаю письмо
         Application::mail(Yii::$app->params['moderator']['email'], 'Обновлено объединение', 'update_union', ['union' => $item]);
     });
 }
Example #18
0
 /**
  * Регистрирует пользователей
  *
  * @param $email
  * @param $password
  * @param $fields
  *
  * @return static
  */
 public static function registration($email, $password, $fields = [])
 {
     $email = strtolower($email);
     $fields = ArrayHelper::merge($fields, ['email' => $email, 'password' => self::hashPassword($password), 'is_active' => 1, 'is_confirm' => 0, 'datetime_reg' => gmdate('YmdHis'), 'referal_code' => Security::generateRandomString(20), 'subscribe_is_bogdan' => 1]);
     $user = self::insert($fields);
     $fields = \app\services\RegistrationDispatcher::add($user->getId());
     \cs\Application::mail($email, 'Подтверждение регистрации', 'registration', ['url' => Url::to(['auth/registration_activate', 'code' => $fields['code']], true), 'user' => $user, 'password' => $password, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]);
     return $user;
 }