<?php

namespace ModulesGarden\Servers\ZimbraEmail\App\UI\Client\DistributionList\Providers;


use ModulesGarden\Servers\ZimbraEmail\App\Helpers\ZimbraManager;
use ModulesGarden\Servers\ZimbraEmail\App\Libs\Product\ProductManager;
use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateDistributionList;
use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Delete\DeleteDistributionList;
use ModulesGarden\Servers\ZimbraEmail\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\Forms\DataProviders\BaseDataProvider;

/**
 *
 * Created by PhpStorm.
 * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
 * Date: 02.10.19
 * Time: 08:21
 * Class DeleteListDataProvider
 */
class DeleteListDataProvider extends BaseDataProvider
{

    public function read()
    {
        $this->data['id'] = $this->actionElementId;
    }

    public function update()
    {
        // TODO: Implement update() method.
    }

    public function delete()
    {
        /**
         * hosting id
         */
        $hid = $this->request->get('id');

        /**
         * load zimbra manager by hosting id
         * get SOAP api
         * get service
         * set form data to service
         */
        $service = (new ZimbraManager())
            ->getApiByHosting($hid)
            ->soap
            ->service()
            ->deleteDistributionList()
            ->setFormData($this->formData)
        ;

        /**
         *
         * run service
         */
        $result= $service->run();

        /**
         * return error is has been detected
         */
        if(!$result)
        {
            return (new HtmlDataJsonResponse())->setMessage($service->getError())->setStatusError();
        }

        return (new HtmlDataJsonResponse())->setMessageAndTranslate('distributionListHasBeenDeleted')->setStatusSuccess();
    }

    public function massDelete()
    {
        /**
         * hosting id
         */
        $hid = $this->request->get('id');

        /**
         * load zimbra manager by hosting id
         * get SOAP api
         * get service
         * set form data to service
         */
        $service = (new ZimbraManager())
            ->getApiByHosting($hid)
            ->soap
            ->service()
            ->deleteDistributionList();

        /**
         *
         */
        foreach($this->request->get('massActions') as $id)
        {
            $service->setFormData(['id' => $id]);
            $result = $service->run();
        }

        return (new HtmlDataJsonResponse())->setMessageAndTranslate('massDistributionListHasBeenDeleted')->setStatusSuccess();
    }

}