<?php

namespace common\modules\blog\controllers;


use common\components\BaseController;
use common\modules\blog\models\BlogBids;
use common\modules\blog\models\BlogSchedule;
use common\modules\triggers\models\TriggerSchedule;
use Yii;
use yii\widgets\ActiveForm;
use yii\web\NotFoundHttpException;
use yii\web\Response;

class BlogBidController extends BaseController {
    public static function actionsTitles()
    {
        return [
            'Add' => 'Subscribe to blog',
            'Sendbyschedule' => 'Рассылка по расписанию блога'
        ];
    }

    public function actionSendbyschedule(){
        // Тут хранится идентификатор шаблона для отправки по блогам
        $template_id = 1;
        // Получили текущую дату и время
        $date = new \DateTime();
        // Получили все записи в расписании на текущую дату
        /** @var BlogSchedule[] $schedule */
        $schedule = BlogSchedule::find()->where(['date' => $date->format('Y-m-d')])->all();
        // В цикле перебираем записи
        foreach($schedule as $record) {
            if (!is_null($record->post) && !is_null($record->post->template_id))
                $template_id = $record->post->template_id;
            // Сформировали массив для шаблона
            $templateData = [
                'link_to_record' => Yii::getAlias('@frontUrl').'/blog/'.$record->post->url
            ];
            // Пытаемся произвести отправку
            $sended = TriggerSchedule::sendMessage($record->email, $template_id, $templateData, null);
            // Если отправка успешна
            if ($sended===true) {
                // Получаем запись
                /** @var BlogSchedule $model */
                $model = BlogSchedule::findOne($record->id);
                // Переключаем параметр sent в состояние 1 (отправлено)
                $model->sent = 1;
                // Сохраняем модель
                if (!$model->save())
                    echo current(current($model->getErrors()));
            }
        }
    }

    public function actionAdd(){
        Yii::$app->response->format = Response::FORMAT_JSON;

        $date = new \DateTime();
        $model = new BlogBids();
        $model->scenario = Yii::$app->request->post('scenario');
        $model->date = $date->format('Y-m-d H:i:s');
        if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
            $transaction = Yii::$app->db->beginTransaction();

            try {
                if($model->save()) {
//                    $model->send();

                    $transaction->commit();

                    return ['success' => true];
                } else {
                    return ActiveForm::validate($model);
                }
            } catch (\Exception $e) {
                $transaction->rollBack();
                throw $e;
            }
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }
} 