<?php

namespace App\Services;

use App\Services\Service;
use App\Services\ServiceResponse\ServiceResponse;
use App\Services\ServiceResponse\ServiceResponseInterface;
use App\DAO\LojaProdutoDAO;
use App\DAO\DAOResponse\DAOResponseInterface;
use App\Mappers\LojaProdutoMapper;

class LojaProdutoService extends Service {

	public function addProduto(array $dados): ServiceResponse {

		$serviceReponse = new ServiceResponse();

		$lojaProduto_vm = LojaProdutoMapper::getLojaProdutoRegistrationViewModelFromArray( $dados );
		$lojaProduto_dao = new LojaProdutoDAO();

		$response_exist = $lojaProduto_dao->isExitsProdutoToLojaId( $lojaProduto_vm );
		if ($response_exist->getStatus() == DAOResponseInterface::SUCESS) {
			$serviceReponse->setStatus( ServiceResponseInterface::HAVE_CONFLICTS );
			$serviceReponse->setData( [ ] );
			return $serviceReponse;
		}
		$daoResponse = $lojaProduto_dao->addProduto( $lojaProduto_vm );
		$serviceReponse = $this->setServiceResponse( $daoResponse );

		return $serviceReponse;

	}

	public function changeLojaProdutoStatus(array $dados): ServiceResponse {

		$serviceResonse = new ServiceResponse();

		$lojaProduto_vm = LojaProdutoMapper::getLojaProdutoChangeStatusViewModelFromArray( $dados );
		$lojaProduto_dao = new LojaProdutoDAO();
		$daoResponse = $lojaProduto_dao->changeStatusLojaProduto( $lojaProduto_vm );
		$serviceResonse = $this->setServiceResponse( $daoResponse );

		return $serviceResonse;

	}

	public function getLojaProdutos(int $id_loja, int $id_status): ServiceResponse {

		$serviceResonse = new ServiceResponse();

		$lojaProduto_dao = new LojaProdutoDAO();
		$daoResponse = $lojaProduto_dao->getLojaProduto( $id_loja, $id_status );
		$serviceResonse = $this->setServiceResponse( $daoResponse );

		return $serviceResonse;

	}

	public function getNomeProdutoByLojaProdutoId(int $id_loja_produto): ServiceResponse {

		$serviceResonse = new ServiceResponse();

		$lojaProduto_dao = new LojaProdutoDAO();
		$daoResponse = $lojaProduto_dao->getNomeProdutoByLojaProdutoId($id_loja_produto);
		$serviceResonse = $this->setServiceResponse( $daoResponse );

		return $serviceResonse;

	}

}

