<?php

class ControllerListaPresenteListaPresente extends Controller {

	public function checkLicence(){

		if (!file_exists(DIR_APPLICATION . '../admin/controller/module/futura/futuralistapresente.dat')) {
			$this->session->data['warning'] = 'Licença inválida! Contate o suporte da loja para identificar o problema. Módulo: Lista de Presentes | Código de erro: 01';
			$this->redirect( $this->url->link( 'account/account', '', 'SSL' ) );
		}else {
			require_once(DIR_APPLICATION . '../admin/controller/module/futura/futuralistapresente.dat');
		}

		if (!$licenca->verifyValidade()){
			$this->session->data['warning'] = 'Licença inválida! Contate o suporte da loja para identificar o problema. Módulo: Lista de Presentes | Código de erro: 03';
			$this->redirect( $this->url->link( 'account/account', '', 'SSL' ) );
		}

	}

	public function index(){

        $this->document->addScript([
            'catalog/view/theme/vista/public/js/listapresente/listapresente.js',
            'public/js/menuAccount.js',
            ]);

		$this->getList();
	}

	public function new(){

        $this->document->addScript('public/js/menuAccount.js');

		if (($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate())) {

			$this->load->model('listapresente/listapresente');
			$lista = $this->model_listapresente_listapresente->getListas( array('status_lista' => '1'));

			if ($lista) {
				$this->request->post['status'] = 0;
			}
			$this->language->load('listapresente/new');
			$this->model_listapresente_listapresente->addLista($this->request->post);
			$this->session->data['success'] = $this->language->get('text_success');
			$this->redirect( $this->url->link('listapresente/listapresente', '', 'SSL'));
		}

		$this->data['postcode_visible'] = false ;
		$this->data['mostrarprodutos'] = false;

		$this->getForm();
	}

	public function edit(){
        $this->document->addScript('catalog/view/theme/vista/public/js/listapresente/form.js');

		$this->data['postcode_visible'] = true;
		$this->data['mostrarprodutos'] = true;

		if (($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate())) {
			$this->load->model('listapresente/listapresente');

			if ($this->request->post['status'] == 1) {
				$listas = $this->model_listapresente_listapresente->getListas();
				foreach ($listas as $lista) {
					$this->model_listapresente_listapresente->editLista(array('status' => 0 ), $lista['id_lista']);
				}
			}
			$this->language->load('listapresente/edit');
			$this->model_listapresente_listapresente->editLista( $this->request->post, $this->request->get['id_lista'] );
			$this->session->data['success'] = $this->language->get('text_success');
			$this->redirect($this->url->link('listapresente/listapresente', '', 'SSL'));
		}


		if(((isset($this->request->get['remove']) && isset($this->request->get['lista'])) && isset($this->request->get['item']))){
			if(0 < $this->request->get['comp']){
				$this->session->data['error_warning'] = $this->language->get('error_prod_comp');
				$this->redirect($this->url->link('listapresente/listapresente/edit', 'id_lista='.$this->request->get['lista'], 'SSL'));
			}
			$this->removeproduto();
		}

		$this->getForm();

	}

	public function getList() {

		$this->checkLicence();

		if (!$this->config->get('listapresente_status')) {
			$this->redirect( $this->url->link('common/home', '', 'SSL'));
		}

		if (!$this->customer->isLogged()) {
			$this->session->data['redirect'] = $this->url->link('listapresente/listapresente', '', 'SSL');
			$this->redirect($this->url->link('account/login', '', 'SSL'));
		}

		$this->language->load('listapresente/listapresente');

		$this->data['futuragrade_status'] = $this->config->get('futuragrade_status');

		$this->load->model('listapresente/listapresente');

		if (isset($this->request->get['remove'])) {
			$key = $this->request->get['remove'];

			if ($this->model_listapresente_listapresente->delete($key)) {
				$this->session->data['success'] = $this->language->get('text_remove');
			}else {
				$this->session->data['warning'] = $this->language->get('error_lista_remove');
			}

			$this->redirect($this->url->link('listapresente/listapresente'));
		}

		$listas = $this->model_listapresente_listapresente->getListas();
		$this->data['listas'] = array();

		foreach ($listas as $lista) {
			$compradores = $this->model_listapresente_listapresente->getCompLista($lista['id_lista']);
			$this->data['listas'][] = array(
				'id'            => $lista['id_lista'],
				'nome'          => $lista['nome_lista'],
				'data_validade' => implode('/',array_reverse(explode('-',$lista['data_valid_lista']))),
				'data_lista'    => implode('/',array_reverse(explode('-',$lista['data_cad_lista']))),
				'data_evento'   => implode('/',array_reverse(explode('-',$lista['data_eve_lista']))),
				'categoria'     => $lista['desc_cat_lista'],
				'logradouro'    => $lista['logradouro'],
				'cep'           => $lista['cep'],
				'numero'        => $lista['numero'],
				'bairro'        => $lista['bairro'],
				'cidade'        => $lista['cidade'],
				'estado'        => $lista['estado'],
				'latitude'      => $lista['latitude'],
				'longitude'     => $lista['longitude'],
				'complemento'   => $lista['complemento'],
				'status'        => ($lista['status_lista'] == 0 ? 'Inativa' : 'Ativa'),
				'itens'         => (0 < $lista['qtde'] ? $lista['qtde'] : 0),
				'compradores'   => $compradores,
				'href'          => $this->url->link('listapresente/listapresente/edit', 'id_lista=' . $lista['id_lista']),
				'remove'        => $this->url->link('listapresente/listapresente', 'remove=' . $lista['id_lista']));
			}

			$this->data['total'] = $this->model_listapresente_listapresente->getTotalListas(array('lista_id_cliente' => $this->customer->getID()));
			$this->load->dmodel( 'tool/image' );

			if (!isset( $this->session->data['wishlist'] )) {
				$this->session->data['wishlist'] = array(  );
			}

			$this->document->setTitle($this->language->get('heading_title'));

			$this->data['breadcrumbs'] 	 = array();

			$this->data['breadcrumbs'][] = array(
				'text' => $this->language->get('text_home'),
				'href' => $this->url->link('common/home'),
				'separator' => false);

			$this->data['breadcrumbs'][] = array(
				'text' => $this->language->get('text_account'),
				'href' => $this->url->link('account/account', '', 'SSL' ),
				'separator' => $this->language->get('text_separator'));

			$this->data['breadcrumbs'][] = array(
				'text' => $this->language->get('heading_title'),
				'href' => $this->url->link('listapresente/listapresente'),
				'separator' => $this->language->get('text_separator'));

			$this->breadcrumbs->setbreadcumbs($this->data['breadcrumbs']);

			$this->data['heading_title']    = $this->language->get('heading_title');
			$this->data['text_empty']       = $this->language->get('text_empty');
			$this->data['column_lista']     = $this->language->get('column_lista');
			$this->data['column_validade']  = $this->language->get('column_validade');
			$this->data['column_evento']    = $this->language->get('column_evento');
			$this->data['column_categoria'] = $this->language->get('column_categoria');
			$this->data['column_data']      = $this->language->get('column_data');
			$this->data['column_action']    = $this->language->get('column_action');
			$this->data['column_status']    = $this->language->get('column_status');
			$this->data['column_comp']      = $this->language->get('column_comp');
			$this->data['column_itens']     = $this->language->get('column_itens');
			$this->data['button_continue']  = $this->language->get('button_continue');
			$this->data['button_new']       = $this->language->get('button_new');
			$this->data['button_cart']      = $this->language->get('button_cart');
			$this->data['button_remove']    = $this->language->get('button_remove');

			if (isset( $this->session->data['success'] )) {
				$this->data['success'] = $this->session->data['success'];
				unset( $this->session->data['success'] );
			}	else {
				$this->data['success'] = '';
			}

			if (isset( $this->session->data['warning'] )) {
				$this->data['error_warning'] = $this->session->data['warning'];
				unset( $this->session->data['warning'] );
			}	else {
				$this->data['error_warning'] = '';
			}

			$this->data['continue'] = $this->url->link( 'account/account', '', 'SSL' );
			$this->data['nova'] = $this->url->link( 'listapresente/listapresente/new', '', 'SSL' );

			$this->children = array(
				'common/breadcrumbs',
				'common/column_left',
				'common/column_right',
				'common/content_top',
				'common/content_bottom',
				'common/footer',
				'common/header'
      );

      if (!$this->ftrgeralregistry->isApp()) {
        array_push($this->children, 'module/account');
      }

			$this->response->setOutput( $this->render('listapresente/listapresente') );
	}

	public function getForm(){

			$this->loadscripts();

			if (!$this->config->get('listapresente_status')){
				$this->redirect($this->url->link('common/home', '', 'SSL'));
			}

			if (!$this->customer->isLogged()){
				$this->session->data['redirect'] = $this->url->link('account/edit', '', 'SSL');
				$this->redirect($this->url->link('account/login', '', 'SSL'));
			}

			$this->language->load('listapresente/new');
			$this->load->model('listapresente/listapresente');

			$this->document->setTitle($this->language->get('heading_title'));

      $total = $this->model_listapresente_listapresente->getTotalListas(array('lista_id_cliente' => $this->customer->getID()));

			if ($this->config->get('futuralistapresente_max_listas') && $this->config->get('futuralistapresente_max_listas')<=$total){
				$this->session->data['warning'] = $this->language->get('error_max_lista');
				$this->redirect( $this->url->link('listapresente/listapresente', '', 'SSL'));
			}

			$this->data['breadcrumbs'] = array();

			$this->data['breadcrumbs'][] = array(
				'text' 			=> $this->language->get('text_home'),
				'href' 			=> $this->url->link('common/home'),
				'separator' => false);

			$this->data['breadcrumbs'][] = array(
				'text'			=> $this->language->get('text_list'),
				'href' 			=> $this->url->link('listapresente/listapresente', '', 'SSL'),
				'separator' => $this->language->get('text_separator'));

			if(!isset($this->request->get['id_lista'])){
				$this->data['breadcrumbs'][] = array(
					'text' 			=> $this->language->get('text_new'),
					'href' 			=> $this->url->link('listapresente/listapresente/new', '', 'SSL'),
					'separator' => $this->language->get('text_separator'));
			}else{
				$this->data['breadcrumbs'][] = array(
					'text' 			=> $this->language->get('text_edit'),
					'href' 		  => $this->url->link('listapresente/listapresente/edit', '&id_lista='.$this->request->get['id_lista'], 'SSL' ),
					'separator' => $this->language->get( 'text_separator' ));

					$lista_info = $this->model_listapresente_listapresente->getLista($this->request->get['id_lista']);
			}

			$this->breadcrumbs->setbreadcumbs($this->data['breadcrumbs']);

			$this->data['heading_title']     = $this->language->get('heading_title');
			$this->data['text_your_details'] = $this->language->get('text_your_details');
			$this->data['entry_nome']        = $this->language->get('entry_nome');
			$this->data['entry_validade']    = $this->language->get('entry_validade');
			$this->data['entry_cadastro']    = $this->language->get('entry_cadastro');
			$this->data['entry_cliente']     = $this->language->get('entry_cliente');
			$this->data['entry_categoria']   = $this->language->get('entry_categoria');
			$this->data['entry_status']      = $this->language->get('entry_status');
			$this->data['entry_evento']      = $this->language->get('entry_evento');
			$this->data['entry_logradouro']  = $this->language->get('entry_logradouro');
			$this->data['entry_numero']      = $this->language->get('entry_numero');
			$this->data['entry_postcode']    = $this->language->get('entry_cep');
			$this->data['entry_bairro']      = $this->language->get('entry_bairro');
			$this->data['entry_cidade']      = $this->language->get('entry_cidade');
			$this->data['entry_estado']      = $this->language->get('entry_estado');
			$this->data['tab_geral']         = $this->language->get('tab_geral');
			$this->data['tab_produtos']      = $this->language->get('tab_produtos');
			$this->data['tab_local']         = $this->language->get('tab_local');
			$this->data['button_continue']   = $this->language->get('button_continue');
			$this->data['button_back']       = $this->language->get('button_back');
			$this->data['futuralistapresente_Intervalo_Validade'] = $this->config->get('futuralistapresente_Intervalo_Validade');

			$this->data['postcode_readonly'] = true;

			if (isset($this->error['nome'])){
				$this->data['error_nome'] = $this->error['nome'];
			} else {
				$this->data['error_nome'] = '';
			}

			if (isset($this->error['validade'])){
				$this->data['error_validade'] = $this->error['validade'];
			} else {
				$this->data['error_validade'] = '';
			}

			if (isset($this->error['data'])){
				$this->data['error_data'] = $this->error['data'];
			} else {
				$this->data['error_data'] = '';
			}

			if (isset($this->error['cep'])){
				$this->data['error_cep'] = $this->error['cep'];
			} else {
				$this->data['error_cep'] = '';
			}

			if (isset($this->error['logradouro'])){
				$this->data['error_logradouro'] = $this->error['logradouro'];
			} else {
				$this->data['error_logradouro'] = '';
			}

			if (isset($this->error['numero'])){
				$this->data['error_numero'] = $this->error['numero'];
			} else {
				$this->data['error_numero'] = '';
			}

			if (isset($this->error['bairro'])){
				$this->data['error_bairro'] = $this->error['bairro'];
			} else {
				$this->data['error_bairro'] = '';
			}

			if (isset($this->error['cidade'])){
				$this->data['error_cidade'] = $this->error['cidade'];
			} else {
				$this->data['error_cidade'] = '';
			}

			if(isset($this->request->get['id_lista'])){
				$this->data['action'] = $this->url->link( 'listapresente/listapresente/edit&id_lista=' . $this->request->get['id_lista'], '', 'SSL' );
			}else{
				$this->data['action'] = $this->url->link( 'listapresente/listapresente/new', '', 'SSL' );
      }

      $categorias = $this->model_listapresente_listapresente->getCategorias($this->config->get('futuralistapresente_cat_habilitas'));

			if(!empty($lista_info)){
        $categoria_id = $lista_info['categoria_id'];
			}else{
        $categoria_id = NULL;
      }

			$this->data['categorias'] = array();

			if ($categorias) {
        foreach ($categorias as $categoria) {
          $this->data['categorias'][] = array(
            'name'     => $categoria['desc_cat_lista'],
						'value'    => $categoria['id_cat_lista'],
						'selected' => (!is_null($categoria_id) && ($categoria_id == $categoria['id_cat_lista'])) ? true : false
					);
				}
			}

			if (isset( $this->session->data['error_validate'] )) {
				$this->data['error_validate'] = $this->session->data['error_validate'];
				unset( $this->session->data['error_validate'] );
			}	else {
				$this->data['error_validate'] = '';
			}

			if (!empty($lista_info)) {
				$this->data['listaid'] = $lista_info['id'];
			} else {
				$this->data['listaid'] = '';
			}

			if (isset( $this->request->post['nome'] )) {
				$this->data['nome'] = $this->request->post['nome'];
			} elseif(!empty($lista_info)){
				$this->data['nome'] = $lista_info['nome'];
			} else {
				$this->data['nome'] = '';
			}

			if (isset( $this->request->post['validade'] )) {
				$this->data['validade'] = $this->request->post['validade'];
			} elseif(!empty($lista_info)){
				$this->data['validade'] = ftr_geral::formatDate($lista_info['validade'],'br');
			}	else {
				$this->data['validade'] = '';
			}

			if (isset( $this->request->post['cadastro'] )) {
				$this->data['cadastro'] = $this->request->post['cadastro'];
			} elseif(!empty($lista_info)){
				$this->data['cadastro'] = ftr_geral::formatDate($lista_info['cadastro'],'br');
			}	else {
				$this->data['cadastro'] = date('d/m/Y');
			}

			if (isset( $this->request->post['evento'] )) {
				$this->data['evento'] = $this->request->post['evento'];
			}	else {
				$this->data['evento'] = '';
			}

			if (isset( $this->request->post['data'] )) {
				$this->data['data'] = $this->request->post['data'];
			}	elseif(!empty($lista_info)){
				$this->data['data'] = ftr_geral::formatDate($lista_info['evento'],'br');
			} else {
				$this->data['data'] = '';
			}

			if (isset( $this->request->post['cliente'] )) {
				$this->data['cliente'] = $this->request->post['cliente'];
			} else {
				$this->data['cliente'] = $this->customer->getFirstName(  ) . ' ' . $this->customer->getLastName(  );
			}

			if (isset( $this->request->post['categoria'] )) {
				$this->data['categoria'] = $this->request->post['categoria'];
			}	elseif(!empty($lista_info)){
				$this->data['categoria'] = $lista_info['categoria'];
			}	else {
				$this->data['categoria'] = '';
			}

			if (isset( $this->request->post['parceiro'] )) {
				$this->data['parceiro'] = $this->request->post['parceiro'];
			}	elseif(!empty($lista_info)){
				$this->data['parceiro'] = $lista_info['parceiro'];
			}	else {
				$this->data['parceiro'] = '';
			}

			if (isset( $this->request->post['status'] )) {
				$this->data['status'] = $this->request->post['status'];
			}	elseif(!empty($lista_info)){
				$this->data['status'] = $lista_info['status'];
			}	else {
				$this->data['status'] = '';
			}

			if (isset( $this->request->post['frase'] )) {
				$this->data['frase'] = $this->request->post['frase'];
			}	elseif(!empty($lista_info)){
				$this->data['frase'] = $lista_info['frase'];
			}	 else {
				$this->data['frase'] = '';
			}

			if (isset( $this->request->post['logradouro'] )) {
				$this->data['logradouro'] = $this->request->post['logradouro'];
			}	elseif(!empty($lista_info)){
				$this->data['logradouro'] = $lista_info['logradouro'];
			} else {
				$this->data['logradouro'] = '';
			}

			if (isset( $this->request->post['numero'] )) {
				$this->data['numero'] = $this->request->post['numero'];
			}	elseif(!empty($lista_info)){
				$this->data['numero'] = $lista_info['numero'];
			} else {
				$this->data['numero'] = '';
			}

			if (isset( $this->request->post['complemento'] )) {
				$this->data['complemento'] = $this->request->post['complemento'];
			}	elseif(!empty($lista_info)){
				$this->data['complemento'] = $lista_info['complemento'];
			} else {
				$this->data['complemento'] = '';
			}

			if (isset( $this->request->post['bairro'] )) {
				$this->data['bairro'] = $this->request->post['bairro'];
			}	elseif(!empty($lista_info)){
				$this->data['bairro'] = $lista_info['bairro'];
			} else {
				$this->data['bairro'] = '';
			}

			if (isset( $this->request->post['postcode'] )) {
				$this->data['postcode'] = $this->request->post['postcode'];
			}	elseif(!empty($lista_info)){
				$this->data['postcode'] = $lista_info['cep'];
			} else {
				$this->data['postcode'] = '';
			}

			if (isset( $this->request->post['estado'] )) {
				$this->data['estado'] = $this->request->post['estado'];
			}	elseif(!empty($lista_info)){
				$this->data['estado'] = $lista_info['estado'];
			} else {
				$this->data['estado'] = '';
			}

			if (isset( $this->request->post['cidade'] )) {
				$this->data['cidade'] = $this->request->post['cidade'];
			}elseif(!empty($lista_info)){
				$this->data['cidade'] = $lista_info['cidade'];
			} else {
				$this->data['cidade'] = '';
			}



			$this->data['produtos'] = array();

			if(isset($lista_info['produtos']) && isset($this->request->get['id_lista'])){

				$this->load->dmodel( 'tool/image' );

				foreach ($lista_info['produtos'] as $produto) {

					if ($produto['imagem']) {
                        $watermark_config_date_number = $this->dmodel_tool_image->getWatermarkCacheNumber();
                        $image_version_number = '?version=' . preg_replace("/[^0-9]/", "", $produto['data_atualizacao_replicacao']) . $watermark_config_date_number;

						$imagem = $this->dmodel_tool_image->resizeWithWatermark( $produto['imagem'], $this->config->get('futuralistapresente_config_image_lista_width'), $this->config->get('futuralistapresente_config_image_lista_height')) . $image_version_number;
					}
					else {
						$imagem = $this->dmodel_tool_image->resize('data\sem-imagem.png', $this->config->get('futuralistapresente_config_image_lista_width'), $this->config->get('futuralistapresente_config_image_lista_height'));
					}

					$cont = $produto['qtde'] - $produto['qtdeComp'];

					if (( !$produto['qtde'] && $produto['qtdeComp'] )) {
						$status = 'Sucesso';
					}
					else {
						if (( !$produto['qtde'] && !$produto['qtdeComp'] )) {
							$status = 'Inativo';
						}
						else {
							$status = 'Em estoque';
						}
					}

					$opcoes = '';
					$opcoes2 = '';

					if ($produto['opcoes']) {
						foreach ($produto['opcoes'] as $opcao) {
							$opcoes .= '<span>' . $opcao['nome_opcao'] . ' = ' . $opcao['valor_opcao'] . '</span><br />';
							$opcoes2 .= '<span>' . $opcao['nome_opcao'] . ' = ' . $opcao['valor_opcao'] . '</span> | ';
						}
					}

					if ((float)$produto['special']) {
						$special = $this->currency->format($produto['special']);
					} else {
						$special = false;
					}

					//KIT
					$this->load->dmodel('catalog/product');
					$itens_kit = $this->dmodel_catalog_product->getProductKitItens($produto['product_kit_id']);
					//KIT

					$compradores = $this->model_listapresente_listapresente->getCompProd($this->data['listaid'], $produto['item_id'] );
					$this->data['produtos'][] = array(
						'item'                       => $produto['item_id'],
						'nome'                      => $produto['nome'],
						'href'                      => $this->url->link('product/product', '&product_id=' . $produto['id'], 'SSL'),
						'imagem'                    => $imagem,
						'special'                   => $special,
						'qtde'                      => $produto['qtde'],
						'valor'                     => $this->currency->format( $produto['valor'] ),
						'qtdeComp'                  => $produto['qtdeComp'],
						'status'                    => $status,
						'opcoes'                    => $opcoes,
						'opcoes2'                   => $opcoes2,
						'compradores'               => $compradores,
						'color_description'         => ($this->config->get('futuragrade_status')) ? $produto['color_description'] : '',
						'size_description'          => ($this->config->get('futuragrade_status')) ? $produto['size_description'] : '',
						'specification_description' => ($this->config->get('futuragrade_status')) ? $produto['specification_description'] : '',
						'remove'                    => $this->url->link( 'listapresente/listapresente/edit', 'remove=' . $produto['id'] . '&lista=' . $this->request->get['id_lista'] . '&item=' . $produto['item_id'] . '&comp=' . $produto['qtdeComp'] ),
						'itens_kit' 				=> $itens_kit
						);
					}
				}


			$this->load->model( 'localisation/zone' );
			$this->data['zones'] = $this->model_localisation_zone->getZonesByCountryId(Type_PaisId::Tp_Brasil);
			$this->data['zone_selected'] = $this->config->get('config_zone_id');
			$this->data['back'] = $this->url->link('listapresente/listapresente', '', 'SSL');

			$this->children = array(
				'common/breadcrumbs',
				'common/column_left',
				'common/column_right',
				'common/content_top',
				'common/content_bottom',
				'common/footer',
				'common/header'
            );

      if (!$this->ftrgeralregistry->isApp()) {
        array_push($this->children, 'module/account');
      }

			$this->response->setOutput($this->render('listapresente/form'));
	}

	public function validate() {
		if ((utf8_strlen( $this->request->post['nome']) < 1 || 32 < utf8_strlen( $this->request->post['nome'] ))) {
			$this->error['nome'] = $this->language->get('error_nome');
		}

		if ((utf8_strlen( $this->request->post['validade']) < 1 || 10 < utf8_strlen( $this->request->post['validade']))) {
			$this->error['validade'] = $this->language->get('error_validade');
		}

		if ((utf8_strlen( $this->request->post['data']) < 1 || 10 < utf8_strlen( $this->request->post['data']))) {
			$this->error['data'] = $this->language->get('error_data');
		}

		if (( utf8_strlen( $this->request->post['cep'] ) < 1 || 10 < utf8_strlen( $this->request->post['cep'] ) )) {
			$this->error['cep'] = $this->language->get('error_cep');
		}

		if (utf8_strlen( $this->request->post['logradouro'] ) < 1) {
			$this->error['logradouro'] = $this->language->get('error_logradouro');
		}

		if (( utf8_strlen( $this->request->post['numero'] ) < 1 || 10 < utf8_strlen( $this->request->post['numero'] ) )) {
			$this->error['numero'] = $this->language->get('error_numero');
		}

		if (utf8_strlen( $this->request->post['bairro'] ) < 1) {
			$this->error['bairro'] = $this->language->get('error_bairro');
		}

		if (utf8_strlen( $this->request->post['cidade'] ) < 1) {
			$this->error['cidade'] = $this->language->get('error_cidade');
		}

		if (!$this->error) {
			return true;
		}else{
			$this->data['postcode_visible'] = true ;
			$this->session->data['error_validate'] = $this->language->get('error_validate');
		}

		return false;
	}

	public function removeproduto() {

		if (!$this->customer->isLogged(  )) {
			$this->session->data['redirect'] = $this->url->link( 'account/edit', '', 'SSL' );
			$this->redirect( $this->url->link( 'account/login', '', 'SSL' ) );
		}

		if (( ( isset( $this->request->get['remove'] ) && isset( $this->request->get['lista'] ) ) && isset( $this->request->get['item'] ) )) {
			$this->load->model('listapresente/listapresente');
			$this->load->language('listapresente/edit');
			$this->model_listapresente_listapresente->removeproduto($this->request->get['remove'], $this->request->get['lista'], $this->request->get['item']);
			$this->session->data['success'] = $this->language->get( 'text_success_remove' );
			$this->redirect( $this->url->link( 'listapresente/listapresente/edit', 'id_lista=' . $this->request->get['lista'], 'SSL' ) );
		}

	}

	public function updateprodlista(){
		$this->checkLicence();

		if (!$this->config->get('listapresente_status' )){
			$this->redirect( $this->url->link('common/home', '', 'SSL'));
		}

		$this->language->load( 'listapresente/edit');
		$this->load->model('listapresente/listapresente');
		$json = array();

		if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			$lista     = $this->request->post['lista'];
			$qtde      = $this->request->post['qtde'];
			$item      = $this->request->post['item'];
			$item_info = $this->model_listapresente_listapresente->GetProdLista($lista, array('id_item_lista' => $item));
			$comp      = $item_info[0]['qtdeComp'];

			if (!$json) {
				$this->model_listapresente_listapresente->updateprodlista($item, $lista, $qtde);
				$json['sucesso'][] = $this->language->get('update_prod_sucesso');
			}
		}

		$this->response->setOutput(json_encode($json));
	}

	public function buscalista() {
			$this->checkLicence(  );

			if (!$this->config->get( 'listapresente_status' )) {
				$this->redirect( $this->url->link( 'common/home', '', 'SSL' ) );
			}

			$this->language->load('listapresente/pesquisa');
			$this->load->model('listapresente/listapresente');

			if (isset( $this->request->get['search_lista'] )) {
				$search = $this->request->get['search_lista'];
			}else {
				$search = '';
			}


			if (isset( $this->request->get['sort'] )) {
				$sort = $this->request->get['sort'];
			}else {
				$sort = 'nome_lista';
			}

			if (isset( $this->request->get['order'] )) {
				$order = $this->request->get['order'];
			}else {
				$order = 'ASC';
			}

			if (isset( $this->request->get['page'] )) {
				$page = $this->request->get['page'];
			}else {
				$page = 0;
			}

			if (isset( $this->request->get['limit'] )) {
				$limit = $this->request->get['limit'];
			}else {
				$limit = $this->config->get( 'config_catalog_limit' );
			}

			if (isset( $this->request->get['search_lista'] )) {
				$this->document->setTitle( $this->language->get( 'heading_title' ) . ' - ' . $this->request->get['search_lista'] );
			}else {
				$this->document->setTitle( $this->language->get( 'heading_title' ) );
			}

			$this->data['breadcrumbs'] = array(  );
			$this->data['breadcrumbs'][] = array( 'text' => $this->language->get( 'text_home' ), 'href' => $this->url->link( 'common/home' ), 'separator' => false );

			$this->breadcrumbs->setbreadcumbs($this->data['breadcrumbs']);

			$url = '';

			if (isset( $this->request->get['search_lista'] )) {
				$url .= '&search_lista=' . urlencode( html_entity_decode( $this->request->get['search_lista'], ENT_QUOTES, 'UTF-8' ) );
			}

			if (isset( $this->request->get['sort'] )) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset( $this->request->get['order'] )) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset( $this->request->get['page'] )) {
				$url .= '&page=' . $this->request->get['page'];
			}

			if (isset( $this->request->get['limit'] )) {
				$url .= '&limit=' . $this->request->get['limit'];
			}

			$this->data['breadcrumbs'][] = array( 'text' => $this->language->get( 'heading_title' ), 'href' => $this->url->link( 'listapresente/listapresente/buscalista', $url ), 'separator' => $this->language->get( 'text_separator' ) );

			$this->breadcrumbs->setbreadcumbs($this->data['breadcrumbs']);

			$this->data['heading_title'] = $this->language->get( 'heading_title' );

			if (isset( $this->request->get['search_lista'] )) {
				$this->data['text_search'] = $this->language->get( 'text_search' ) . ' "' . $this->request->get['search_lista'] . '"';
			} else {
				$this->data['text_search'] = $this->language->get( 'text_search' );
			}

			$this->data['text_empty']        = $this->language->get( 'text_empty' );
			$this->data['text_critea']       = $this->language->get( 'text_critea' );
			$this->data['text_keyword']      = $this->language->get( 'text_keyword' );
			$this->data['text_category']     = $this->language->get( 'text_category' );
			$this->data['text_sub_category'] = $this->language->get( 'text_sub_category' );
			$this->data['text_quantity']     = $this->language->get( 'text_quantity' );
			$this->data['text_manufacturer'] = $this->language->get( 'text_manufacturer' );
			$this->data['text_model']        = $this->language->get( 'text_model' );
			$this->data['text_price']        = $this->language->get( 'text_price' );
			$this->data['text_tax']          = $this->language->get( 'text_tax' );
			$this->data['text_points']       = $this->language->get( 'text_points' );
			$this->data['text_compare']      = sprintf( $this->language->get( 'text_compare' ), (isset( $this->session->data['compare'] ) ? count( $this->session->data['compare'] ) : 0) );
			$this->data['text_display']      = $this->language->get( 'text_display' );
			$this->data['text_list']         = $this->language->get( 'text_list' );
			$this->data['text_grid']         = $this->language->get( 'text_grid' );
			$this->data['text_sort']         = $this->language->get( 'text_sort' );
			$this->data['text_limit']        = $this->language->get( 'text_limit' );
			$this->data['entry_search']      = $this->language->get( 'entry_search' );
			$this->data['entry_search_two']  = $this->language->get( 'entry_search_two' );
			$this->data['entry_description'] = $this->language->get( 'entry_description' );
			$this->data['button_search']     = $this->language->get( 'button_search' );
			$this->data['button_cart']       = $this->language->get( 'button_produto' );
			$this->data['button_wishlist']   = $this->language->get( 'button_wishlist' );
			$this->data['button_compare']    = $this->language->get( 'button_compare' );
			$this->data['listas']            = array(  );

			if (( isset( $this->request->get['search_lista'] ) || isset( $this->request->get['filter_tag'] ) )) {
				$options = array( 'sort' => $sort, 'order' => $order, 'page' => $page, 'limit' => $limit, 'data' => date( 'Y-m-d' ) );
				$listas_info = $this->model_listapresente_listapresente->getListasAutoComplete($search, $options);
				foreach ($listas_info as $lista) {
					$this->data['listas'][] = array( 'nome' => $lista['nome_lista'], 'cliente' => $lista['firstname'] . ' ' . $lista['lastname'], 'data' => implode( '/', array_reverse( explode( '-', $lista['data_eve_lista'] ) ) ), 'validade' => implode( '/', array_reverse( explode( '-', $lista['data_valid_lista'] ) ) ), 'href' => $this->url->link( 'listapresente/produtos', 'id_lista=' . $lista['id_lista'] ) );
				}

				$url = '';

				if (isset( $this->request->get['search_lista'] )) {
					$url .= '&search_lista=' . urlencode( html_entity_decode( $this->request->get['search_lista'], ENT_QUOTES, 'UTF-8' ) );
				}


				if (isset( $this->request->get['limit'] )) {
					$url .= '&limit=' . $this->request->get['limit'];
				}

				$this->data['sorts'] = array(  );
				$this->data['sorts'][] = array( 'text' => $this->language->get( 'text_default' ), 'value' => 'nome_lista-ASC', 'href' => $this->url->link( 'listapresente/listapresente/buscalista', 'sort=nome_lista&order=ASC' . $url ) );
				$this->data['sorts'][] = array( 'text' => $this->language->get( 'text_name_asc' ), 'value' => 'nome_lista-ASC', 'href' => $this->url->link( 'listapresente/listapresente/buscalista', 'sort=nome_lista&order=ASC' . $url ) );
				$this->data['sorts'][] = array( 'text' => $this->language->get( 'text_name_desc' ), 'value' => 'nome_lista-DESC', 'href' => $this->url->link( 'listapresente/listapresente/buscalista', 'sort=nome_lista&order=DESC' . $url ) );
				$this->data['sorts'][] = array( 'text' => $this->language->get( 'text_cliente_asc' ), 'value' => 'firstname-ASC', 'href' => $this->url->link( 'listapresente/listapresente/buscalista', 'sort=firstname&order=ASC' . $url ) );
				$this->data['sorts'][] = array( 'text' => $this->language->get( 'text_cliente_desc' ), 'value' => 'firstname-DESC', 'href' => $this->url->link( 'listapresente/listapresente/buscalista', 'sort=firstname&order=DESC' . $url ) );
				$url = '';

				if (isset( $this->request->get['search_lista'] )) {
					$url .= '&search_lista=' . urlencode( html_entity_decode( $this->request->get['search_lista'], ENT_QUOTES, 'UTF-8' ) );
				}


				if (isset( $this->request->get['sort'] )) {
					$url .= '&sort=' . $this->request->get['sort'];
				}


				if (isset( $this->request->get['order'] )) {
					$url .= '&order=' . $this->request->get['order'];
				}

				$this->data['limits'] = array(  );
				$limits = array_unique( array( $this->config->get( 'config_catalog_limit' ), 25, 50, 75, 100 ) );
				sort( $limits );
				foreach ($limits as $limits) {
					$this->data['limits'][] = array( 'text' => $limits, 'value' => $limits, 'href' => $this->url->link( 'listapresente/listapresente/buscalista', $url . '&limit=' . $limits ) );
				}

				$url = '';

				if (isset( $this->request->get['search_lista'] )) {
					$url .= '&search_lista=' . urlencode( html_entity_decode( $this->request->get['search_lista'], ENT_QUOTES, 'UTF-8' ) );
				}


				if (isset( $this->request->get['sort'] )) {
					$url .= '&sort=' . $this->request->get['sort'];
				}


				if (isset( $this->request->get['order'] )) {
					$url .= '&order=' . $this->request->get['order'];
				}


				if (isset( $this->request->get['limit'] )) {
					$url .= '&limit=' . $this->request->get['limit'];
				}

				$lista_total              = $this->model_listapresente_listapresente->getTotalListas();
				$pagination               = new Pagination();
				$pagination->total        = $lista_total;
				$pagination->page         = $page;
				$pagination->limit        = $limit;
				$pagination->text         = $this->language->get('text_pagination');
				$pagination->url          = $this->url->link('listapresente/listapresente/buscalista', $url . '&page={page}');
				$this->data['pagination'] = $pagination->render();
			}

			$this->data['search'] = $search;
			$this->data['sort']   = $sort;
			$this->data['order']  = $order;
			$this->data['limit']  = $limit;

			if (isset( $this->session->data['success'] )) {
				$this->data['success'] = $this->session->data['success'];
				unset( $this->session->data['success'] );
			}else {
				$this->data['success'] = '';
			}

			if (isset( $this->session->data['warning'] )) {
				$this->data['error_warning'] = $this->session->data['warning'];
				unset( $this->session->data['warning'] );
			}else {
				$this->data['error_warning'] = '';
			}

			if (file_exists( DIR_TEMPLATE . $this->config->get( 'config_template' ) . '/template/listapresente/pesquisa.tpl' )) {
				$this->template = $this->config->get( 'config_template' ) . '/template/listapresente/pesquisa.tpl';
			}else {
				$this->template = 'default/template/listapresente/pesquisa.tpl';
			}

			$this->children = array( 'common/breadcrumbs', 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' );
			$this->response->setOutput( $this->render(  ) );
		}

		public function add() {
			$this->checkLicence(  );
			$this->load->helper('ftr_geral');

			if (!$this->config->get( 'listapresente_status' )) {
				$this->redirect( $this->url->link( 'common/home', '', 'SSL' ) );
			}

			$this->language->load( 'listapresente/listapresente' );

			$this->data['futuragrade_status'] = $this->config->get('futuragrade_status');

			$this->load->model( 'catalog/product' );
			$this->load->model( 'listapresente/listapresente' );
			$json = array();
			$lista_info = array();
			$lista_info = $this->model_listapresente_listapresente->getListas( array( 'status_lista' => true ) );

			if (!$lista_info) {
				$json['error'] = $this->language->get( 'error_lista' );
			}else {
				$lista_id = $lista_info[0]['id_lista'];
				if($lista_info[0]['data_valid_lista']<date('Y-m-d')){
					$json['error']	= $this->language->get( 'erro_data_validade' );
				}
      }

			if (isset( $this->request->post['product_id'] )) {
				$product_id = $this->request->post['product_id'];
			}
			else {
				$product_id = 1;
			}

			$product_info = $this->model_catalog_product->getProduct( $product_id );

			if (( $product_info && !$json )) {
				if (isset( $this->request->post['quantity'] )) {
					$quantity = $this->request->post['quantity'];
				}
				else {
					$quantity = 1;
				}


				if (isset( $this->request->post['option'] )) {
					$option = array_filter( $this->request->post['option'] );
				}
				else {
					$option = array(  );
				}

				$product_options = $this->model_catalog_product->getProductOptions( $this->request->post['product_id'] );
				foreach ($product_options as $product_option) {

					if (( $product_option['required'] && empty( $option[$product_option['product_option_id']] ) )) {
						$json['error']['option'][$product_option['product_option_id']] = sprintf( $this->language->get( 'error_required' ), $product_option['name'] );
						continue;
					}
				}

				$produtoLista = $this->model_listapresente_listapresente->GetProdLista( $lista_id, array( 'item_id_produto' => $product_id ) );

				if ($produtoLista) {
					$json['error'] = $this->language->get( 'error_produto' );
				}

				if($this->config->get('futuragrade_status')){
					$gridhave = $this->model_catalog_product->getGridHave($product_id);

					if($gridhave['grid_id']){
						$this->cart->addQtd($gridhave['grid_id'] , $quantity);
					}

					if(!isset($this->request->get['size_id'])){
						if($gridhave['have_size']){
							$json['error']['grid_size'] = 'Por favor, informe um tamanho!';
						}
					}

					if (!isset($this->request->get['specification_id'])) {
						if($gridhave['have_specification']){
							$json['error']['grid_specification'] = 'Por favor, informe uma especificação!';
						}
					}
				}


				if (!$json) {
					$query = $this->model_listapresente_listapresente->addProdLista( $quantity, $product_id, $lista_id );
					foreach ($option as $k => $v) {
						foreach ($product_options as $product_option) {

							if ($product_option['product_option_id'] == $k) {
								if (is_array( $product_option['option_value'] )) {
									foreach ($product_option['option_value'] as $opcoes) {

										if ($opcoes['product_option_value_id'] == $v) {
											$array['nome']            = $product_option['name'];
											$array['valor']           = $opcoes['name'];
											$array['lista_id']        = $lista_id;
											$array['produto_id']      = $product_id;
											$array['opcao_id']        = $opcoes['product_option_value_id'];
											$array['item_id']         = $query['id'];
											$array['op_parent_opcao'] = $product_option['product_option_id'];
											$array['op_array']        = 0;
											$this->model_listapresente_listapresente->addOpcaoProduto( $array );
											continue;
										}

										if (is_array( $v )) {
											foreach ($v as $value) {

												if ($opcoes['product_option_value_id'] == $value) {
													$array['nome']            = $product_option['name'];
													$array['valor']           = $opcoes['name'];
													$array['lista_id']        = $lista_id;
													$array['produto_id']      = $product_id;
													$array['opcao_id']        = $value;
													$array['item_id']         = $query['id'];
													$array['op_parent_opcao'] = $product_option['product_option_id'];
													$array['op_array']        = 1;
													$this->model_listapresente_listapresente->addOpcaoProduto( $array );
													continue;
												}
											}

											continue;
										}
									}

									continue;
								}

								$array['nome']            = $product_option['name'];
								$array['valor']           = $v;
								$array['lista_id']        = $lista_id;
								$array['produto_id']      = $product_id;
								$array['opcao_id']        = $product_option['product_option_id'];
								$array['item_id']         = $query['id'];
								$array['op_parent_opcao'] = $product_option['product_option_id'];
								$array['op_array']        = 0;
								$this->model_listapresente_listapresente->addOpcaoProduto( $array );
								continue;
							}
						}
					}

					$json['total_qtd'] = $this->presente->countProductsList();
					$json['success'] = sprintf( $this->language->get( 'text_success' ), $this->url->link( 'product/product', 'product_id=' . $this->request->post['product_id'] ), $product_info['name'], $this->url->link( 'listapresente/listapresente/edit', 'id_lista=' . $lista_id ) );

				}	else {
					$json['redirect'] = str_replace( '&amp;', '&', $this->url->link( 'product/product', 'product_id=' . $this->request->post['product_id'] ) );
				}

			}
			$this->response->setOutput( json_encode( $json ) );
		}

		public function autocomplete() {
			$this->checkLicence(  );

			if (!$this->config->get( 'listapresente_status' )) {
				$this->redirect( $this->url->link( 'common/home', '', 'SSL' ) );
			}

			$json = array();

			if (isset( $this->request->get['filter'] )) {
				$this->load->model( 'listapresente/listapresente' );
				$results = $this->model_listapresente_listapresente->getListasAutoComplete( $this->request->get['filter'] );
				foreach ($results as $result) {
					$json[] = array( 'lista_id' => $result['id_lista'], 'name' => strip_tags( html_entity_decode( $result['nome_lista'], ENT_QUOTES, 'UTF-8' ) ), 'cliente' => strip_tags( html_entity_decode( $result['firstname'], ENT_QUOTES, 'UTF-8' ) ) );
				}
			}

			$sort_order = array(  );
			foreach ($json as $key => $value) {
				$sort_order[$key] = $value['name'];
			}

			array_multisort( $sort_order, SORT_ASC, $json );
			$this->response->setOutput( json_encode( $json ) );
		}

		public function loadscripts(){

			$this->document->addScript(array(
				'catalog/view/theme/vista/js/jquery/jquery.validate.js',
				'catalog/view/theme/vista/js/jquery/additional-methods.js',
				'catalog/view/theme/vista/js/jquery/jquery.validate.futura-methods.js',
				'catalog/view/theme/vista/js/jquery/localization/messages_pt_BR.min.js',
				'public/js/postcode.js',
			));

		}

	}
