<?php

use Doctrine\Common\Collections\Expr\Value;

loadcontroller('base/module');
class ControllerShippingFuturaFreteContaCliente extends ControllerBaseModule 
{
	protected $referencePathFile = 'shipping/futura_frete_conta_cliente';
	
	protected function loadData() 
	{
		$this->load->type('tipocomum');

		$this->dataVue['Type_Status'] = Type_Status::getEnumList();
		$this->dataVue['Type_HabilitarPessoa'] = Type_HabilitarPessoa::getEnumList();
		
		$this->dataVue['configurations'] = $this->model_setting_setting->getSetting('futura_frete_conta_cliente');
			
		$this->response->setOutput($this->render('shipping/futura_frete_conta_cliente'));

	}

    protected function loadModel()
    {
        parent::loadModel();
		$this->load->model('setting/setting');
        $this->load->model('localisation/order_status');
    }

	public function saveSetting() {
	
        $this->loadLanguage();

        $response = [];

        if (!$this->user->hasPermission('modify', 'shipping/futura_frete_conta_cliente')) {
            $response['warning'] = $this->language->get('error_permission');
            return $this->response->setOutputJson($response);
        }

        $this->errors = $this->validate();
        if (!$this->errors) {

			$fretecontaclienteAuthInfo = [
				'futura_frete_conta_cliente_title' => 'Frete por Conta do Cliente',
				'futura_frete_conta_cliente_value' => 'Valor por Conta do Cliente',
				'futura_frete_conta_cliente_habilitar_pessoa_tipo'  => '2'
			];
			
			$data = array_merge($fretecontaclienteAuthInfo, $this->request->post);
            $this->load->model('setting/setting');
            $this->model_setting_setting->editSetting('futura_frete_conta_cliente', $data);


            $response['success'] = $this->language->get('text_success');
        } else {
            $response['errors'] = $this->errors;
        }

        return $this->response->setOutputJson($response);
    }
	
	protected function validate() 
	{
		$this->loadLanguage();
        $this->load->type('tipocomum');
		
        extract($this->request->post);
		
        $errors = [];
		
        $errors = $this->validate->execute([
			'futura_frete_conta_cliente_title' => [
				'value' => $futura_frete_conta_cliente_title,
                'validates' => ['isEmpty']
            ],
			'futura_frete_conta_cliente_status' => [
				'value' => $futura_frete_conta_cliente_status,
                'validates' => ['isEmpty', 'isEnabledOrDisabled']
            ],
			'futura_frete_conta_cliente_habilitar_pessoa_tipo' => [
				'value' => $futura_frete_conta_cliente_habilitar_pessoa_tipo,
                'validates' => ['isEmpty']
            ],
			'futura_frete_conta_cliente_sort_order' => [
				'value' => $futura_frete_conta_cliente_sort_order,
                'validates' => ['isIntegerNumber']
            ],
		]);
		
		return $errors;
	}
	
	public function install() 
	{
		$this->load->model('setting/extension');
		$this->model_setting_extension->install('shipping', 'futura_frete_conta_cliente');
	
	}

}
