<?php

class ModelTotaldescontofaixavalorpedido extends Model
{

    const TIPO_ATIVO = 1;
    const TIPO_INATIVO = 0;

    const TIPO_ACRESCIMO = 0;
    const TIPO_DESCONTO = 1;

    const TIPOCALC_VALOR = 0;
    const TIPOCALC_PERCENTUAL = 1;

    public function getTotal(&$total_data, &$total)
    {
        $tipooperacao = $this->config->get('descontofaixavalorpedido_tipo'); /*desconto(1) ou acrescimo(0)*/
        $tipototal = $this->config->get('descontofaixavalorpedido_valor_base');/*total dos produtos(1) ou total do pedido(0)*/

        if ($tipototal == ModelTotaldescontofaixavalorpedido::TIPO_ATIVO) {
            $valorbase = $this->cart->getSubTotal();
        } else {
            $valorbase = $total;
        }

        $modules = array();
        $modules = $this->config->get('descontofaixavalorpedido_module');
        $valor = 0;
        $faixa = 0;
        $texto = "";

        if (isset($modules) && count($modules) > 0) {
            foreach ($modules as $module) {

                if (isset($module['periodo_dias_desconto']) && $module['periodo_dias_desconto'] > 0) {
                    if ($this->customer->getId() == null) {
                        continue; //Já pula o desconto porque tem prazo e não está logado para egar o ultimo pedido
                    }
                    $this->load->dmodel('account/customer');
                    $order_info = $this->dmodel_account_customer->getLastOrders($this->customer->getId(), $this->config->get('descontofaixavalorpedido_status_validade'), 1);
                    if (is_array($order_info) && count($order_info) > 0) {
                        $dataorder = new DateTime($order_info[0]['date_added']);
                        $dataAtual = new DateTime(date("Y-m-d"));
                        $diferenca = $dataorder->diff($dataAtual);
                        if ($diferenca->days > $module['periodo_dias_desconto']) {
                            continue;
                        }
                    }
                }

                if ((($tipooperacao == ModelTotaldescontofaixavalorpedido::TIPO_DESCONTO) && ($valorbase >= (int)$module['valor_perfil']) && ((int)$module['valor_perfil'] > $faixa)) ||
                    (($tipooperacao == ModelTotaldescontofaixavalorpedido::TIPO_ACRESCIMO) && ($valorbase <= (int)$module['valor_perfil']) && (((int)$module['valor_perfil'] < $faixa) || $faixa == 0))) {

                    $valor = $module['valor_desconto']; /*encontra o valor do desconto nas faixas*/
                    $faixa = $module['valor_perfil'];     /*armazena para encontrar a maior faixa*/
                    $tipovalor = $module['tipo_valor'];     /*percentual(1) ou monetario(0)*/

                    if ($module['texto'] == '') {
                        $texto = ($tipooperacao == ModelTotaldescontofaixavalorpedido::TIPO_ACRESCIMO) ? "Acrescimo" : "Desconto";
                    } else {
                        $texto = $module['texto'];
                    }
                }
            }
        }


        if((isset($tipovalor) && $tipovalor == self::TIPOCALC_VALOR) && ($valor > $valorbase)){
            return;
        }

        if (($valor) && ($valor > 0) && ($valor != '')) {

            if ($tipovalor == self::TIPOCALC_PERCENTUAL) { /*percentual*/
                $percent = $valor;
                $valor = ($valor / 100) * $valorbase;
            }

            if ($tipooperacao == ModelTotaldescontofaixavalorpedido::TIPO_DESCONTO) {
                $valor = $valor * -1;
            }

            $total_data[] = array(
                'code' => 'descontofaixavalorpedido',
                'title' => ($tipovalor) ? $texto . ' ( ' . $percent . '%)' : $texto,
                'text' => $this->currency->format($valor),
                'value' => $valor,
                'sort_order' => $this->config->get('descontofaixavalorpedido_sort_order')
            );

            $total += $valor;

        }

    }

    public function confirm($order_info, $order_total)
    {

    }
}
