<?php

class DmodelFidelityAccount extends Model
{

  public function getTotalfidelityByCustomer()
  {

    $customer = $this->customer->getID_Futura();

    $sql = "select saldo from SP_GET_FIDELIDADE_SALDO($customer, current_date);";
    $result = $this->wsceo->getConsultaFromSqlSemCache($sql);

    return (($result) && !is_null(current($result)['saldo'])) ? current($result)['saldo'] : (int)0;

  }

  public function getFilterPedidoData($data, $campoData){
    $filter = '';
    if (!empty($data['datainicial']) && !empty($data['datafinal'])) {
      $filter = "and ".$campoData." BETWEEN CAST('" . str_replace('/', '.', $data['datainicial']) . "' as date) and CAST('". str_replace('/', '.', $data['datafinal']) . "' as date)";
    } else if (!empty($data['range'])) {
      $filter = "and ".$campoData." >= DATEADD(day, -" . $data['range'] . ", CAST('Now' as date))";
    }
    return $filter;
  }

  public function getExtractsByCustomer($data)
  {
    $this->load->type('tipofuturaserver');
    $limit = ftr_geral::getLimitFireBird($data);
    $filterPedidoData = $this->getFilterPedidoData($data, 'p.DATA_SAIDA_ENTRADA');

    $sql = "select $limit
              (p.id) as server_id,
              case fp.tipo 
                when 0 then fp.PONTOS_GANHOS
                when 1 then fp.PONTOS_USADOS
              end as saldo,  
              (fp.tipo) as operacao,
              fp.validade,
              (p.id_ecommerce) as order_id,
              (p.data_emissao) as data_emissao,
              (fp.FK_CADASTRO_INDICADO) as indicado,
              (cad.FANTASIA) as name_indicado
            from FIDELIDADE_PONTOS fp
            left join PEDIDO p ON (p.ID = fp.FK_PEDIDO $filterPedidoData)
            left join CADASTRO cad ON (fp.FK_CADASTRO_INDICADO = cad.ID AND cad.CHK_CLIENTE = '".Type_DsimDnaoServer::Tp_Sim."')
            where fp.FK_CADASTRO = " . $data['customer'] . " and (fp.PONTOS_GANHOS > 0 or fp.PONTOS_USADOS > 0)
            ";

    if (isset($data['operacao'])) {
      $sql .= ' and fp.tipo in(' . $data['operacao'] . ')';
    }

    $sql .= " order by fp.validade asc";

    return $this->wsceo->getConsultaFromSqlCache($sql);

  }

  public function getTotalExtractsByCustomer($data)
  {

    $filterPedidoData = $this->getFilterPedidoData($data, 'p.DATA_SAIDA_ENTRADA');

    $sql = "select
            count(fp.id) as total
            from FIDELIDADE_PONTOS fp
            left join PEDIDO p ON (p.ID = fp.FK_PEDIDO $filterPedidoData )
            where fp.FK_CADASTRO = " . $data['customer'] . " and (fp.PONTOS_GANHOS > 0 or fp.PONTOS_USADOS > 0)
            ";

    if (!empty($data['operacao'])) {
      $sql .= ' and fp.tipo = ' . $data['operacao'];
    }

    $result = $this->wsceo->getConsultaFromSqlCache($sql);
    return (($result) && !is_null(current($result)['total'])) ? current($result)['total'] : (int)0;

  }


}
