<?php

class ControllerListaEscolarListaEscolarProdutos extends Controller
{
    function index()
    {
        if (!$this->config->get('listaescolar_status')) {
            $this->redirect($this->url->link('common/home', '', 'SSL'));
        } elseif (!isset($this->request->get['lista_id'])) {
            $this->redirect($this->url->link('listaescolar/listaescolar', '', 'SSL'));
        }

        $this->document->addScriptApp(array(
            'catalog/view/theme/appmobile/js/page.listaescolar_produtos.js'
        ));

        $this->document->addScript(array(
            'catalog/view/javascript/limit-text-lines.js',
            'catalog/view/theme/vista/js/lista.escolar.produtos.js',
            'catalog/view/theme/vista/public/js/listaescolar/listaescolar-produtos.js',
        ));

        $this->load->dmodel('listaescolar/listaescolar');
        $this->load->dmodel('tool/image');
        $this->load->type('tipocomum');
        $language = $this->language->load('listaescolar/listaescolar_produtos');
        $this->load->library('image_validate');
        $image_validate = new Image_validate();

        if (isset($this->request->get['remove'])) { //Remove item da lista
            unset($this->session->data['produtos_Lista'][$this->request->get['remove']]);
            $this->redirect($this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id']));
        }
        if (!empty($this->request->post['quantity'])) { //Atualizar quantidade
            foreach ($this->request->post['quantity'] as $key => $value) {
                if ((int) $value && ((int) $value > 0)) {
                    $this->session->data['produtos_Lista'][$key]['quantity'] = (int) $value;
                    $this->session->data['success'] = sprintf($this->language->get('text_success_quantidade'), $this->session->data['produtos_Lista'][$key]['model'] . ' - ' . $this->session->data['produtos_Lista'][$key]['name']);
                } else {
                    unset($this->session->data['produtos_Lista'][$key]);
                }
            }
        }

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

        if (
            !isset($this->session->data['lista_escolar_selecionada'])
            || ($this->session->data['lista_escolar_selecionada']['lista_id'] <> $this->request->get['lista_id'])
            || (isset($this->request->get['reset_list']) && $this->request->get['reset_list'])
        ) {
            unset($this->session->data['produtos_Lista']);
            unset($this->session->data['produtos_Lista_removed']);
            unset($this->session->data['lista_id_customer_group']);
            unset($this->session->data['lista_escolar_selecionada']);
            $infoLista = $this->dmodel_listaescolar_listaescolar->getInfosLista($this->request->get['lista_id']);
            $this->session->data['lista_escolar_selecionada'] = array( //Mantem essa lista na sessão até que ela seja adicionada ao carrinho, removida ou trocada.
                'lista_id' => $this->request->get['lista_id'],
                'lista_nome' => $infoLista['lista_escolar'],
                'tabela_preco_id' => $infoLista['id_tabela_preco'],
                'escola' => $infoLista['escola'],
                'serie' => $infoLista['serie'],
                'ano' => $infoLista['ano'],
                'logo' => $this->dmodel_tool_image->resize($infoLista['logo'], 120, 120),
                'endereco' => $infoLista['endereco'],
                'observacao' => isset($infoLista['observacao']) ? $infoLista['observacao'] : '',
                'descricao_lista' => $infoLista['serie'] . ' - ' . $infoLista['ano'],
                'link' => $this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->request->get['lista_id'])
            );
        }
        $this->data['infos_lista'] = $this->session->data['lista_escolar_selecionada'];
        $this->data['subtitulo_lista'] = $this->session->data['lista_escolar_selecionada']['escola'] . ' - ' . $this->session->data['lista_escolar_selecionada']['serie'] . ' - ' . $this->session->data['lista_escolar_selecionada']['ano'];
        if ($this->config->get('listaescolar_exibir_descricao')) {
            $this->data['subtitulo_lista'] .= ' - ' . $this->session->data['lista_escolar_selecionada']['lista_nome'];
        }
        $escola_endereco = $this->session->data['lista_escolar_selecionada']['endereco'];
        // se não tem rua, não mostra o endereço
        if (empty(trim(substr($escola_endereco, 0, strpos($escola_endereco, ','))))) {
            $escola_endereco = false;
        }
        $this->data['endereco_escola'] = $escola_endereco;
        $this->data['observacao_lista'] = $this->session->data['lista_escolar_selecionada']['observacao'];
        $this->data['logo_lista'] = $this->session->data['lista_escolar_selecionada']['logo'];
        $this->data['redirect_to_checkout'] = $this->config->get('listaescolar_redirect_checkout');
        $this->data['action'] = $this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id']);
        $this->data['reset_action'] = $this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id'] . '&reset_list=true');
        $this->data['link_addToCart'] = $this->url->link('listaescolar/listaescolar_produtos/addListaEscolarToCart');
        $this->data['value_tipo_add'] = Type_EdicaoListaEscolar::Tp_Adicao;
        $this->data['value_tipo_troca'] = Type_EdicaoListaEscolar::Tp_Troca;
        $this->data['value_tipo_restore'] = Type_EdicaoListaEscolar::Tp_Restaurar;

        $this->data = array_merge($this->data, $language);

        $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_Lista_escola'), 'href' => $this->url->link('listaescolar/listaescolar'), 'separator' => $this->language->get('text_separator'));
        $this->data['breadcrumbs'][] = array('text' => $this->data['subtitulo_lista'], 'href' => $this->url->link('listaescolar/listaescolar_produtos'), 'separator' => $this->language->get('text_separator'));
        $this->breadcrumbs->setbreadcumbs($this->data['breadcrumbs']);

        $this->data['listaescolar_disable_similar_item'] = ftr_geral::isIsset($this->config->get('listaescolar_disable_similar_item')) ? $this->config->get('listaescolar_disable_similar_item') : true;
        $this->data['listaescolar_disable_substitute_item'] = ftr_geral::isIsset($this->config->get('listaescolar_disable_substitute_item')) ? $this->config->get('listaescolar_disable_substitute_item') : true;


        if (!isset($this->session->data['produtos_Lista'])) {
            $lista = $this->dmodel_listaescolar_listaescolar->getProdutosLista($this->request->get['lista_id']);
            $this->session->data['produtos_Lista'] = $lista ? $lista : $this->redirect($this->url->link('listaescolar/listaescolar', '', 'SSL'));

            //Verifica se existe o campo nessa lista pra pegar e armazenar em um campo que sera usado pra todos, pois como o ID da tabela de preco eh por lista, todos os prods dessa lista vai ter o mesmo ID
            if (isset($this->session->data['produtos_Lista']) && $this->session->data['produtos_Lista'] && isset($this->session->data['produtos_Lista'][0]['id_customer_group'])) {
                $this->session->data['lista_id_customer_group'] = $this->session->data['produtos_Lista'][0]['id_customer_group'];
            }
        } //Seta a sessão com a lista selecionada, as alterações serão mantidas até que a lista seja limpa, carregada no carrinho ou trocada
        $this->data['total_lista'] = 0;

        $produtos = [];

        $hasOutOfStock = false;

        foreach ($this->session->data['produtos_Lista'] as $product) {
            $product_total = 0;

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

                $image = $this->dmodel_tool_image->resizeWithWatermark($product['image'], Type_MiniatureMedium::Tp_width, Type_MiniatureMedium::Tp_height) . $image_version_number;
            } else {
                $image = $this->dmodel_tool_image->resize('data/sem-imagem.png', Type_MiniatureMedium::Tp_width, Type_MiniatureMedium::Tp_height);
            }

            if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                $price = $this->currency->format($product['price']);
                $price_discont = $this->currency->format($product['price'] - (($product['price'] * $product['percentual_desconto']) / 100));
            } else {
                $price = false;
            }

            if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                $total = $product['price'] * $product['quantity'];
                $total_discont = ($product['price'] - (($product['price'] * $product['percentual_desconto']) / 100)) * $product['quantity'];
                $this->data['total_lista'] = $this->data['total_lista'] + $total_discont;

                $total_discont = $this->currency->format($total_discont);
                $total = $this->currency->format($total);
            } else {
                $total = false;
            }

            if( $product['stock'] === false){
                $hasOutOfStock = true;
            }

            $produtos[] = array(
                'color_description' => ($this->config->get('futuragrade_status') && isset($product['color_description'])) ? $product['color_description'] : '',
                'size_description' => ($this->config->get('futuragrade_status') && isset($product['size_description'])) ? $product['size_description'] : '',
                'specification_description' => ($this->config->get('futuragrade_status') && isset($product['specification_description'])) ? $product['specification_description'] : '',
                'color_template_description' => ($this->config->get('futuragrade_status') && isset($product['color_template_description'])) ? $product['color_template_description'] : '',
                'size_template_description' => ($this->config->get('futuragrade_status') && isset($product['size_template_description'])) ? $product['size_template_description'] : '',
                'specification_template_description' => ($this->config->get('futuragrade_status') && isset($product['specification_template_description'])) ? $product['specification_template_description'] : '',
                'key' => $product['key'],
                'product_id' => $product['product_id'],
                'thumb' => $image,
                'name' => $product['name'],
                'model' => $product['model'],
                'quantity' => (int) $product['quantity'],
                'stock' => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                'price' => $price,
                'price_value' => $product['price'],
                'total' => $total,
                'total_value' => str_replace(array('R$ ', ',', '.'), array('', '', ''), $total),
                'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']),
                'remove' => $this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id'], 'remove=' . $product['key']),
                'id_futura' => $product['id_futura'],
                'percentual_desconto' => $product['percentual_desconto'],
                'price_discont' => isset($price_discont) ? $price_discont : 0,
                'total_discont' => isset($total_discont) ? $total_discont : 0,
                'tag' => $product['tag'],
                'original_product_id' => isset($product['original_product_id']) ? $product['original_product_id'] : null
            );
        }

        $stock = array_column($produtos, 'stock');
        $ordem = array_keys($produtos);
        array_multisort($stock, SORT_ASC, $ordem, SORT_ASC, $produtos);
        
        $this->data['has_out_of_stock'] = $hasOutOfStock;
        $this->data['produtos'] = $produtos;
        $this->data['total_lista'] = $this->currency->format($this->data['total_lista']);

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

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


        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/listaescolar/listaescolar_produtos.twig')) {
            $this->template = $this->config->get('config_template') . '/template/listaescolar/listaescolar_produtos.twig';
        } else {
            $this->template = 'default/template/listaescolar/listaescolar_produtos.twig';
        }

        $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());
    }


    function addListaEscolarToCart()
    {
        $this->language->load('listaescolar/listaescolar_produtos');

        if (isset($this->session->data['produtos_Lista'])) {
            $produtos = $this->session->data['produtos_Lista'];
            if ($produtos) {
                foreach ($produtos as $produto) {

                    $textLista = $this->session->data['lista_escolar_selecionada']['escola'] . ' - ' . $this->session->data['lista_escolar_selecionada']['serie'] . ' - ' . $this->session->data['lista_escolar_selecionada']['ano'];
                    $this->session->data['success'] = sprintf($this->language->get('text_success_addcart'), $textLista);

                    $key = (int) $produto['product_id'] . ':';
                    $option = 0;
                    if ($option) {
                        $key .= base64_encode(serialize($option)) . ':';
                    } else {
                        $key .= ':';
                    }

                    if (isset($produto['profile_id']) && $produto['profile_id']) {
                        $key .= (int) $produto['profile_id'] . ':';
                    } else {
                        $key .= ':';
                    }

                    $key .= $this->session->data['lista_escolar_selecionada']['lista_id'];


                    if ((int) $produto['quantity'] && ((int) $produto['quantity'] > 0)) {

                        if (!isset($this->session->data['cart'][$key])) {

                            $this->session->data['cart'][$key] =
                                array(
                                    'quantity' => (int) $produto['quantity'],
                                    'id_listaescolar' => array($this->session->data['lista_escolar_selecionada']['lista_id'])
                                );
                        } else {
                            $this->session->data['cart'][$key]['quantity'] += (int) $produto['quantity'];
                        }

                        $this->session->data['cart'][$key]['id_listaescolar'] = $this->session->data['lista_escolar_selecionada']['lista_id'];
                        //                        $this->session->data['cart'][$key]['id_tabela_preco_ecommerce'] = $produto['id_customer_group'];
                        $this->session->data['cart'][$key]['id_tabela_preco_ecommerce'] = $this->session->data['lista_id_customer_group'];
                        $this->session->data['cart'][$key]['listaescolar_descricao'] = $textLista;
                        $this->session->data['cart'][$key]['listaescolar_escola'] = $this->session->data['lista_escolar_selecionada']['escola'];
                        $this->session->data['cart'][$key]['listaescolar_serie'] = $this->session->data['lista_escolar_selecionada']['serie'];
                    }
                }

                $id_listaescolar = $this->session->data['lista_escolar_selecionada']['lista_id'];
                unset($this->session->data['produtos_Lista']);
                unset($this->session->data['lista_id_customer_group']);
                unset($this->session->data['lista_escolar_selecionada']);

                $this->redirect(
                    $this->url->link(
                        ((int) $this->config->get('listaescolar_redirect_checkout') === 0) ? 'checkout/cart' : 'checkout/checkout',
                        'listaescolar_id=' . $id_listaescolar,
                        'SSL'
                    )
                );
            }
        }
    }


    public function editarProdutoLista()
    {
        /////Troca ou adiciona produto da lista por outro similar do mesmo subgrupo
        /////Parametro tipoEdicao=troca -> Para troca
        /////Parametro tipoEdicao=add -> Para Adicionar
        $this->load->model('catalog/product');
        $this->load->dmodel('listaescolar/listaescolar');
        $this->load->dmodel('tool/image');
        $this->load->type('tipocomum');
        $this->load->library('image_validate');
        $image_validate = new Image_validate();

        $this->language->load('listaescolar/listaescolar_produtos_editar');
        $this->load->helper('ftr_geral');

        $watermark_config_date_number = $this->dmodel_tool_image->getWatermarkCacheNumber();

        if (!isset($this->session->data['produtos_Lista'])) {
            $this->redirect($this->url->link('listaescolar/listaescolar', '', 'SSL'));
        }
        if (!isset($this->request->get['tipoEdicao']) && !isset($this->request->get['product_key'])) {
            $this->session->data['error'] = $this->language->get('error_edicao');
            $this->redirect($this->url->link('listaescolar/listaescolar_produtos', 'lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id'], 'SSL'));
        }


        $this->data['subtitulo_lista'] = $this->session->data['lista_escolar_selecionada']['escola'] . ' - ' . $this->session->data['lista_escolar_selecionada']['serie'] . ' - ' . $this->session->data['lista_escolar_selecionada']['ano'];
        $this->data['logo_lista'] = $this->session->data['lista_escolar_selecionada']['logo'];

        $this->data['product_info'] = $this->session->data['produtos_Lista'][$this->request->get['product_key']];
        if ($this->data['product_info']['image'] && $image_validate->isValidate($this->data['product_info'])) {
            $image_version_number = '?version=' . preg_replace("/[^0-9]/", "", $this->data['product_info']['data_atualizacao_replicacao']) . $watermark_config_date_number;

            $this->data['product_info']['thumb'] = $this->dmodel_tool_image->resizeWithWatermark($this->data['product_info']['image'], 100, 100) . $image_version_number;
        } else {
            $this->data['product_info']['thumb'] = $this->dmodel_tool_image->resize('data/sem-imagem.png', 100, 100);
        }

        $this->data['tipo_edicao'] = $this->request->get['tipo_edicao'];


        if ($this->request->get['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Adicao) {
            $this->data['titulo_edicao'] = $this->language->get('text_titulo_add');
            $this->data['text_descricao_edicao_lista'] = $this->language->get('text_descricao_pedido_edicao_add');
        } elseif ($this->request->get['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Troca) {
            $this->data['titulo_edicao'] = $this->language->get('text_titulo_troca');
            $this->data['text_descricao_edicao_lista'] = $this->language->get('text_descricao_pedido_edicao_sub') . $this->data['product_info']['name'] . ' por outro ';
        } elseif ($this->request->get['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Restaurar) {
            $this->data['titulo_edicao'] = $this->language->get('text_titulo_restore');
            $this->data['text_descricao_edicao_lista'] = $this->language->get('text_descricao_pedido_edicao_restore');
        } else {
            $this->session->data['error'] = $this->language->get('error_edicao');
            $this->redirect($this->url->link('listaescolar/listaescolar_produtos', 'lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id'], 'SSL'));
        }

        if ($this->config->get('listaescolar_pesquisa_gruposubgrupo') and $this->request->get['tipo_edicao'] != Type_EdicaoListaEscolar::Tp_Restaurar) {
            $this->data['text_descricao_edicao_lista'] .= 'do mesmo grupo';
        }
        if ($this->config->get('listaescolar_pesquisa_tag') and $this->request->get['tipo_edicao'] != Type_EdicaoListaEscolar::Tp_Restaurar) {
            if ($this->config->get('listaescolar_pesquisa_gruposubgrupo')) {
                $this->data['text_descricao_edicao_lista'] .= ' e ';
            }
            $this->data['text_descricao_edicao_lista'] .= 'com as mesmas tags';
        }

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

        $produtos_similares = [];

        if ($this->request->get['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Restaurar) {
            $produtos_similares = $this->session->data['produtos_Lista_removed'];
        } else {
            if (isset($this->data['product_info']['category_id']) && isset($this->data['product_info']['product_id'])) {
                $tags = isset($this->data['product_info']['tag']) ? $this->data['product_info']['tag'] : '';
                $produtos_similares = $this->dmodel_listaescolar_listaescolar->getProdutosSimilares(
                    $this->data['product_info']['category_id'],
                    $this->data['product_info']['product_id'],
                    $tags,
                    $this->data['product_info']['id_customer_group']
                );
            }
        }

        foreach ($produtos_similares as $key => $product) {
            $product_total = 0;

            if ($product['image'] && $image_validate->isValidate($product)) {
                $image_version_number = '?version=' . preg_replace("/[^0-9]/", "", $product['data_atualizacao_replicacao']) . $watermark_config_date_number;
                $image = $this->dmodel_tool_image->resizeWithWatermark($product['image'], Type_MiniatureMedium::Tp_width, Type_MiniatureMedium::Tp_height) . $image_version_number;
            } else {
                $image = $this->dmodel_tool_image->resize('data/sem-imagem.png', Type_MiniatureMedium::Tp_width, Type_MiniatureMedium::Tp_height);
            }
            if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                if ($this->config->get('listaescolar_substitute_item_table_price') && $product['price_table'] > 0) {
                    $price = $this->currency->format($product['price_table']);
                } else {
                    $price = $this->currency->format($product['price']);
                }
            } else {
                $price = false;
            }

            $this->data['produtos'][$key] = array(
                'color_description' => ($this->config->get('futuragrade_status') && isset($product['color_description'])) ? $product['color_description'] : '',
                'size_description' => ($this->config->get('futuragrade_status') && isset($product['size_description'])) ? $product['size_description'] : '',
                'specification_description' => ($this->config->get('futuragrade_status') && isset($product['specification_description'])) ? $product['specification_description'] : '',
                'color_template_description' => ($this->config->get('futuragrade_status') && isset($product['color_template_description'])) ? $product['color_template_description'] : '',
                'size_template_description' => ($this->config->get('futuragrade_status') && isset($product['size_template_description'])) ? $product['size_template_description'] : '',
                'specification_template_description' => ($this->config->get('futuragrade_status') && isset($product['specification_template_description'])) ? $product['specification_template_description'] : '',
                'product_id' => $product['product_id'],
                'thumb' => $image,
                'name' => $product['name'],
                'model' => $product['model'],
                'quantity' => 0,
                'price' => $price,
                'price_value' => $product['price'],
                'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']),
                'id_futura' => $product['id_futura'],
                'tag' => $product['tag']
            );
        }

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

    public function alterarProdutoSessionLista()
    {
        ///Altera ou adiciona o produto na lista de acordo com o parametro product_session_key
        $json = array();
        $this->load->dmodel('tool/image');
        $this->load->type('tipocomum');
        $this->language->load('listaescolar/listaescolar_produtos_editar');
        $this->load->library('image_validate');
        $image_validate = new Image_validate();

        $product_id = $this->request->post['product_id'];
        $quantidade = $this->request->post['quantidade'];
        if ($this->request->post['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Restaurar) {
            $this->restoreItemLista();
            return;
        } elseif ($this->request->post['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Adicao) {

            $key_existente = array_search($this->request->post['product_id'], array_column($this->session->data['produtos_Lista'], 'product_id'));
            end($this->session->data['produtos_Lista']);
            if ($key_existente) {
                $product_key = $key_existente;
                $quantidade = $quantidade + $this->session->data['produtos_Lista'][$product_key]['quantity'];
            } else {
                $product_key = key($this->session->data['produtos_Lista']) + 1;
            }
        } elseif ($this->request->post['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Troca) {
            $product_key = $this->request->post['product_session_key'];
            $quantidade = $this->session->data['produtos_Lista'][$product_key]['quantity'];
            $productold_text_success = $this->session->data['produtos_Lista'][$product_key]['model'] . ' - ' . $this->session->data['produtos_Lista'][$product_key]['name'];
            //^^ aqui pois o produto da sessão sera substituido pelo novo...
        }

        $this->load->model('catalog/product');
        $product = $this->model_catalog_product->getProduct($product_id, false, true);

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

            $image = $this->dmodel_tool_image->resizeWithWatermark($product['image'], Type_MiniatureMedium::Tp_width, Type_MiniatureMedium::Tp_height) . $image_version_number;
        } else {
            $image = $this->dmodel_tool_image->resize('data/sem-imagem.png', Type_MiniatureMedium::Tp_width, Type_MiniatureMedium::Tp_height);
        }

        if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
            $price = $this->currency->format($product['price']);
        } else {
            $price = false;
        }

        if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
            $total = $product['price'] * $quantidade;
            $total = $this->currency->format($total);
        } else {
            $total = false;
        }

        $stock = true;
        if (!$product['qty'] || ($product['qty'] < $quantidade)) {
            $stock = false;
        }

        $newProduct = array(
            'color_description' => ($this->config->get('futuragrade_status') && isset($product['color_description'])) ? $product['color_description'] : '',
            'size_description' => ($this->config->get('futuragrade_status') && isset($product['size_description'])) ? $product['size_description'] : '',
            'specification_description' => ($this->config->get('futuragrade_status') && isset($product['specification_description'])) ? $product['specification_description'] : '',
            'color_template_description' => ($this->config->get('futuragrade_status') && isset($product['color_template_description'])) ? $product['color_template_description'] : '',
            'size_template_description' => ($this->config->get('futuragrade_status') && isset($product['size_template_description'])) ? $product['size_template_description'] : '',
            'specification_template_description' => ($this->config->get('futuragrade_status') && isset($product['specification_template_description'])) ? $product['specification_template_description'] : '',
            'key' => $product_key,
            'product_id' => $product['product_id'],
            'image' => $product['image'],
            'name' => $product['name'],
            'model' => $product['model'],
            'data_atualizacao_replicacao' => $product['data_atualizacao_replicacao'],
            'quantity' => $quantidade,
            'price' => $product['price'],
            'stock' => $stock,
            'price_value' => $product['price'],
            'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']),
            'id_futura' => $product['id_futura'],
            'percentual_desconto' => 0,
            'price_discont' => 0,
            'total_discont' => 0,
            'tag' => $product['tag'],
        );

        if (
            $this->request->post['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Troca
            && isset($this->session->data['produtos_Lista'][$product_key]['original_product_id'])
            && $this->session->data['produtos_Lista'][$product_key]['original_product_id'] == null
        ) {
            $newProduct['original_product_id'] = $this->session->data['produtos_Lista'][$product_key]['product_id'];
        } else {
            $newProduct['original_product_id'] = null;
        }

        $this->session->data['produtos_Lista'][$product_key] = $newProduct;

        if ($this->request->post['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Adicao) {
            $this->session->data['success'] = sprintf(
                $this->language->get('success_add'),
                $product['model'] . ' - ' . $product['name']
            );
        } elseif ($this->request->post['tipo_edicao'] == Type_EdicaoListaEscolar::Tp_Troca) {
            $this->session->data['success'] = sprintf(
                $this->language->get('success_troca'),
                $productold_text_success,
                $product['model'] . ' - ' . $product['name']
            );
        }
    }

    public function removeItemLista()
    {
        $json = array();
        if (isset($this->request->get['remove'])) { //Remove item da lista
            $this->session->data['produtos_Lista_removed'][$this->request->get['remove']] = $this->session->data['produtos_Lista'][$this->request->get['remove']];
            unset($this->session->data['produtos_Lista'][$this->request->get['remove']]);
            $json['redirect'] = $this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id']);
        }
        $this->response->setOutput(json_encode($json));
    }

    public function restoreItemLista()
    {
        $json = array();
        if (isset($this->request->post['restore'])) {
            $this->session->data['produtos_Lista'][$this->request->post['restore']] = $this->session->data['produtos_Lista_removed'][$this->request->post['restore']];
            ksort($this->session->data['produtos_Lista']);
            unset($this->session->data['produtos_Lista_removed'][$this->request->post['restore']]);
            $json['redirect'] = $this->url->link('listaescolar/listaescolar_produtos&lista_id=' . $this->session->data['lista_escolar_selecionada']['lista_id']);
        }
        $this->response->setOutput(json_encode($json));
    }

    public function addItemLista()
    {
        $this->language->load('listaescolar/listaescolar_produtos');

        $key = $this->request->post['product_session_key'];
        $value = $this->request->post['quantity'];

        if (!empty($this->request->post['quantity'])) { //Atualizar quantidade

            if ((int) $value && ((int) $value > 0)) {
                $this->session->data['produtos_Lista'][$key]['quantity'] = (int) $value;
                $this->session->data['produtos_Lista'][$key]['total'] = ((int) $value * $this->session->data['produtos_Lista'][$key]['price']);
                $this->session->data['success'] = sprintf($this->language->get('text_success_quantidade'), $this->session->data['produtos_Lista'][$key]['model'] . ' - ' . $this->session->data['produtos_Lista'][$key]['name']);
            } else {
                unset($this->session->data['produtos_Lista'][$key]);
            }
        }

        $total_discont = ($this->session->data['produtos_Lista'][$key]['price'] - (($this->session->data['produtos_Lista'][$key]['price'] * $this->session->data['produtos_Lista'][$key]['percentual_desconto']) / 100)) * $this->session->data['produtos_Lista'][$key]['quantity'];
        $priceProduct = $this->session->data['produtos_Lista'][$key]['percentual_desconto'] > 0 ? $total_discont : $this->session->data['produtos_Lista'][$key]['total'];

        $priceTotal = 0;

        foreach ($this->session->data['produtos_Lista'] as $product) {
            $total_value = ($product['price'] - (($product['price'] * $product['percentual_desconto']) / 100)) * $product['quantity'];
            $priceTotal += $product['percentual_desconto'] > 0 ? $total_value : $product['total'];
        }

        if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {

            $result = array(
                'message' => $this->session->data['success'],
                'priceProduct' => $this->currency->format($priceProduct),
                'priceTotal' => $this->currency->format($priceTotal)
            );

            $extendTimeSession = 604800;            
            setcookie(session_name(), session_id(), time() + $extendTimeSession, '/');

            $this->response->setOutputjson($result);

        } else {
            $this->response->setOutputjson(false);
        }

    }
}