Save::execute()   A
last analyzed

Complexity

Conditions 5
Paths 17

Size

Total Lines 34

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
dl 0
loc 34
ccs 0
cts 27
cp 0
rs 9.0648
c 0
b 0
f 0
cc 5
nc 17
nop 0
crap 30
1
<?php
2
/**
3
 * File: Save.php
4
 *
5
 * @author      Maciej Sławik <[email protected]>
6
 * Github:      https://github.com/maciejslawik
7
 */
8
9
namespace MSlwk\ICatalogue\Controller\Adminhtml\Catalogue;
10
11
use Magento\Backend\App\Action\Context;
12
use Magento\Backend\Model\View\Result\Redirect;
13
use Magento\Framework\Controller\ResultInterface;
14
use MSlwk\ICatalogue\Model\CatalogueFactory;
15
use MSlwk\ICatalogue\Model\Catalogue;
16
use MSlwk\ICatalogue\Model\ResourceModel\Catalogue as CatalogueResource;
17
use MSlwk\ICatalogue\Api\CatalogueInterface;
18
19
/**
20
 * Class Save
21
 *
22
 * @package MSlwk\ICatalogue\Controller\Adminhtml\Catalogue
23
 */
24
class Save extends ActionAbstract
25
{
26
    /**
27
     * @var CatalogueFactory
28
     */
29
    protected $catalogueFactory;
30
31
    /**
32
     * @var CatalogueResource
33
     */
34
    protected $catalogueResource;
35
36
    /**
37
     * Save constructor.
38
     *
39
     * @param CatalogueFactory $catalogueFactory
40
     * @param CatalogueResource $catalogueResource
41
     * @param Context $context
42
     */
43
    public function __construct(
44
        CatalogueFactory $catalogueFactory,
45
        CatalogueResource $catalogueResource,
46
        Context $context
47
    ) {
48
        $this->catalogueFactory = $catalogueFactory;
49
        $this->catalogueResource = $catalogueResource;
50
        parent::__construct($context);
51
    }
52
53
    /**
54
     * @return ResultInterface
55
     */
56
    public function execute()
57
    {
58
        /** @var Redirect $resultRedirect */
59
        $resultRedirect = $this->resultRedirectFactory->create();
60
61
        $data = $this->getRequest()->getPostValue();
62
        if ($data) {
63
            /** @var Catalogue $catalogue */
64
            $catalogue = $this->catalogueFactory->create();
65
66
            $id = $this->getRequest()->getParam(CatalogueInterface::CATALOGUE_ID);
67
            if ($id) {
68
                $this->catalogueResource->load($catalogue, $id);
69
            }
70
71
            $catalogue->setData($data);
72
73
            try {
74
                $this->catalogueResource->save($catalogue);
75
                $id = $catalogue->getId();
76
                $this->messageManager->addSuccessMessage(__('The catalogue was saved successfully'));
77
            } catch (\Exception $e) {
78
                $this->messageManager->addExceptionMessage(
79
                    $e,
80
                    __('An error ocurred while saving the catalogue')
81
                );
82
            }
83
84
            return $this->getRequest()->getParam('back')
85
                ? $resultRedirect->setPath('*/*/edit', ['id' => $id, '_current' => true])
86
                : $resultRedirect->setPath('*/*/grid');
87
        }
88
        return $resultRedirect->setPath('*/*/grid');
89
    }
90
}
91