DeliveryController.php 4 KB
<?php

namespace controllers;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class DeliveryController extends \Phalcon\Mvc\Controller
{
    public function initialize()
    {
        $this->view->setTemplateAfter('common');
    }

    function indexAction($id)
    {

        if($id){
            $this->session->set("project-id", $id);
        }

        $params         = $this->dispatcher->getParams();
        $currentPage           = !empty( $params['page']  ) ? $params['page'] : 1;

        // Набор данных для разбивки на страницы

        $data = \delivery::find("project_id = {$this->session->get('project-id')}");

        // Создаём пагинатор, отображаются 10 элементов на странице, начиная с текущей - $currentPage
        /*$paginator = new \Phalcon\Paginator\Adapter\Model(
            array(
                "data" => $data,
                "limit"=> 10,
                "page" => $currentPage
            )
        );

        // Получение результатов работы ппагинатора

        $page = $paginator->getPaginate();*/

        $this->view->setVars([
            'info' => $data
        ]);
    }

    function deleteAction($id)
    {

        $model = \delivery::query()
            ->where("id = $id")
            ->andWhere("project_id = {$this->session->get('project-id')}")
            ->execute();
        if($model->toArray()){
            $model->delete();
            $this->flash->error( 'Данные успешно удалены' );
            return $this->response->redirect([ 'for' => 'delivery_index' ]);
        } else {
            $this->flash->error( 'Произошла ошибка при попытке удаления' );
            return $this->response->redirect([ 'for' => 'delivery_index' ]);
        }

    }



    function moreInfoAction($id)
    {

        $this->view->pick( 'delivery/addEdit' );

        $this->view->setVars([

        ]);
    }

    function updateAction($id)
    {

        $model = \delivery::findFirst("campaign_id = '$id' AND project_id = {$this->session->get('project-id')}");
        //$model->status =  $this->MyMailer->Delivery->getCampaignDeliveryStats( $id);
        $result  =  $this->MyMailer->Delivery->getCampaignAggregateStats( $id);

        $result['status'] =  $this->MyMailer->Delivery->getDeliveryStatus( $id);

        //$model->status =  $this->MyMailer->Delivery->getVisitedLinks($id);

        if( $model->save($result ))
        {
            $this->flash->success( 'Обновление прошло успешно' );
        }
        else
        {
            $this->flash->error( 'Произошла ошибка во время обновления.' );
        }

        return $this->response->redirect([ 'for' => 'delivery_index' ]);

    }

    public function getUsersLikeAction()
    {
        $like = $this->request->getPost('like', 'string', NULL );
        $users = $this->models->getCustomers()->getActiveUsers($like);
        $result = json_encode($users);
        $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT);
        echo $result;
    }

    public function getCampaignListAction()
    {
        $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT);
        $name = $this->request->getQuery('term');
        $model = new \delivery();
        $modelsManager = $this->modelsManager;
        $projectId = $this->session->get('project-id');
        $result = $model->getDistinct("campaign",$name,$modelsManager, $projectId);
        echo json_encode(
            array_reduce(
                $result,
                function($return, $elem) {
                    $return[] = array(
                        "label" => $elem['campaign'],
                        "value" => $elem['campaign']
                    );
                    return $return;
                }
            )
        );
    }


}