/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/forms/ews/EwsSyncForm.php
90 строк
2 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\forms\ews; use common\components\Queue; use common\forms\base\ObjectIdForm; use common\helpers\DateHelper; use common\helpers\EwsHelper; use common\jobs\AiEwsJobRequest; use common\models\Email; use common\models\ews\Ews; use common\models\ews\EwsCredentials; use common\models\ews\EwsFolder; use common\models\ews\EwsMessage; use Yii; use yii\helpers\VarDumper; /** * Форма редактирования сервиса * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2024 */ class EwsSyncForm extends ObjectIdForm { /** * @inheritdoc */ protected function doSave() { $ews = Ews::findOne($this->oid); /** @var EwsCredentials $credentials */ $credentials = $ews->ewsCredentials; $credentials_data = $credentials->getCredentials(); $message_list = EwsHelper::getMessage($credentials_data); foreach ($message_list as $message) { $e_message = EwsMessage::findOrNew([ 'message_id' => $message['id'] ]); if ($e_message->isNewRecord) { $email = Email::findOrNew(['value' => $message['from']]); if (!$email->save()) { $this->addErrors($email->errors); return false; } $e_message->setAttributes([ 'ews_id' => $ews->id, 'date_send' => $message['sent'], 'subject' => $message['subject'], 'sender_id' => $email->id, 'sender_name' => $message['name'], 'body' => $message['body'], 'folder_id' => EwsFolder::INBOX ]); if (!$e_message->save()) { $this->addErrors($e_message->errors); return false; } $job = new AiEwsJobRequest([ 'message_id' => $e_message->id, ]); /** @var Queue $queue */ $queue = Yii::$app->queue; $queue_id = $queue->push($job); Yii::debug(VarDumper::dumpAsString([ 'queue_id' => $queue_id, 'message_id' => $e_message->id, ])); } } $ews->updateAttributes([ 'last_update' => DateHelper::now() ]); return true; } }