Your IP : 127.0.0.1


Current Path : /home/dev2.destoffenstraat.com/app/Firebear/ImportExport/Model/Api/Export/
Upload File :
Current File : /home/dev2.destoffenstraat.com/app/Firebear/ImportExport/Model/Api/Export/Save.php

<?php
/**
 * @copyright: Copyright © 2021 Firebear Studio. All rights reserved.
 * @author: Firebear Studio <fbeardev@gmail.com>
 */
namespace Firebear\ImportExport\Model\Api\Export;

use Firebear\ImportExport\Api\Data\ExportInterface;
use Firebear\ImportExport\Api\Export\SaveInterface;
use Firebear\ImportExport\Api\Export\ValidatorInterface;
use Firebear\ImportExport\Model\ResourceModel\ExportJob as JobResource;
use Magento\Framework\Exception\CouldNotSaveException;
use Magento\Framework\Validation\ValidationException;

/**
 * Save command (Service Provider Interface - SPI)
 *
 * @api
 */
class Save implements SaveInterface
{
    /**
     * @var JobResource
     */
    private $resource;

    /**
     * @var ValidatorInterface
     */
    private $validator;

    /**
     * Initialize command
     *
     * @param JobResource $resource
     * @param ValidatorInterface $validator
     */
    public function __construct(
        JobResource $resource,
        ValidatorInterface $validator
    ) {
        $this->resource = $resource;
        $this->validator = $validator;
    }

    /**
     * Save job
     *
     * @param ExportInterface $job
     * @return ExportInterface
     * @throws CouldNotSaveException
     * @throws ValidationException
     */
    public function execute(ExportInterface $job)
    {
        $validationResult = $this->validator->validate($job);
        if (!$validationResult->isValid()) {
            throw new ValidationException(__('Validation Failed'), null, 0, $validationResult);
        }

        try {
            $this->resource->save($job);
        } catch (\Exception $exception) {
            throw new CouldNotSaveException(__(
                'Could not save the job: %1',
                $exception->getMessage()
            ));
        }
        return $job;
    }
}