<?php
    include "../models/MovimentacoesClass.php";

class MovimentacoesCtl
{
    private $Movimentacoes;

    private $id;
    private $cliId;
    private $origem;
    private $servico;
    private $documento;
    private $referencia_externa;
    private $situacao;
    private $recusa_descricao;
    private $codigo_retorno;
    private $codigo_adquirente;
    private $codigo_mcc;
    private $autorizacao;
    private $moeda;
    private $nsu_tef;
    private $nsu;
    private $valor;
    private $valorOriginal;
    private $parcelas;
    private $cartao_portador;
    private $cartao_dig_ini;
    private $cartao_dig_fim;
    private $banderia;
    private $forma_pagamento;
    private $forma_captura;
    private $numero_serie;
    private $data;
    private $enviado_sinpag;
    private $id_sinpag;
    private $enviado_movingpay;
    private $veiculo_quitado;
    private $boleto_quitado;
    private $pix_enviado;

    private $emiteNota;
    private $novosDados;

    private $notaNome;
    private $notaTelefone;
    private $notaEmail;
    private $notaDocumento;
    private $notaCep;
    private $notaRua;
    private $notaNumero;
    private $notaComplemento;
    private $notaBairro;
    private $notaCidade;
    private $notaEstado;

    private $numeroEc;
    private $numeroCv;

    private $urlNotification;

    private $retornoJson;

    private $retorno;
    private $mensagemRetorno;

    public function __construct()
    {
        $this->Movimentacoes = new MovimentacoesClass();
    }

    public function getListaTodos()
    {
        $resultado = $this->Movimentacoes->getListaTodos();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function getMovimentacoesPorId()
    {
        $this->Movimentacoes->setId($this->getId());
        $resultado = $this->Movimentacoes->getMovimentacoesPorId();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function getUltimasMovimentacoesPorDocumento()
    {
        $this->Movimentacoes->setDocumento($this->getDocumento());
        $resultado = $this->Movimentacoes->getUltimasMovimentacoesPorDocumento();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function getMovimentacoesPorDocumentoNumeroSerieDoDia()
    {
        $this->Movimentacoes->setDocumento($this->getDocumento());
        $this->Movimentacoes->setNumeroSerie($this->getNumeroSerie());
        $resultado = $this->Movimentacoes->getMovimentacoesPorDocumentoNumeroSerieDoDia();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function getMovimentacoesPorDocumentoNumeroSeriePeriodo($dataIni, $dataFim)
    {
        $this->Movimentacoes->setDocumento($this->getDocumento());
        $this->Movimentacoes->setNumeroSerie($this->getNumeroSerie());
        $resultado = $this->Movimentacoes->getMovimentacoesPorDocumentoNumeroSeriePeriodo($dataIni,$dataFim);

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function getMovimentacoesPorRefExterna()
    {
        $this->Movimentacoes->setReferenciaExterna($this->getReferenciaExterna());
        $resultado = $this->Movimentacoes->getMovimentacoesPorRefExterna();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function getTotalAprovadas()
    {
        $resultado = $this->Movimentacoes->getTotalAprovadas();

        return $resultado;
    }

    public function inserir()
    {
        $this->Movimentacoes->setCliId($this->getCliId());
        $this->Movimentacoes->setOrigem($this->getOrigem());
        $this->Movimentacoes->setServico($this->getServico());
        $this->Movimentacoes->setNumeroEc($this->getNumeroEc());
        $this->Movimentacoes->setDocumento(preg_replace('/[^0-9]/', '', $this->getDocumento()));
        $this->Movimentacoes->setReferenciaExterna($this->getReferenciaExterna());
        $this->Movimentacoes->setSituacao($this->getSituacao());
        $this->Movimentacoes->setRecusaDescricao($this->getRecusaDescricao());
        $this->Movimentacoes->setCodigoRetorno($this->getCodigoRetorno());
        $this->Movimentacoes->setCodigoAdquirente($this->getCodigoAdquirente());
        $this->Movimentacoes->setCodigoMcc($this->getCodigoMcc());
        $this->Movimentacoes->setAutorizacao($this->getAutorizacao());
        $this->Movimentacoes->setNumeroCv($this->getNumeroCv());
        $this->Movimentacoes->setMoeda($this->getMoeda());
        $this->Movimentacoes->setNsuTef($this->getNsuTef());
        $this->Movimentacoes->setNsu($this->getNsu());
        $this->Movimentacoes->setValor($this->getValor());
        $this->Movimentacoes->setValorOriginal($this->getValorOriginal());
        $this->Movimentacoes->setParcelas($this->getParcelas());
        $this->Movimentacoes->setCartaoPortador(trim($this->getCartaoPortador()));
        $this->Movimentacoes->setCartaoDigIni($this->getCartaoDigIni());
        $this->Movimentacoes->setCartaoDigFim($this->getCartaoDigFim());
        $this->Movimentacoes->setBanderia(trim($this->getBanderia()));
        $this->Movimentacoes->setFormaPagamento($this->getFormaPagamento());
        $this->Movimentacoes->setFormaCaptura($this->getFormaCaptura());
        $this->Movimentacoes->setNumeroSerie($this->getNumeroSerie());
        $this->Movimentacoes->setData($this->getData());

        $this->Movimentacoes->setEmiteNota($this->getEmiteNota());
        $this->Movimentacoes->setNovosDados($this->getNovosDados());
        $this->Movimentacoes->setNotaNome($this->getNotaNome());
        $this->Movimentacoes->setNotaTelefone($this->getNotaTelefone());
        $this->Movimentacoes->setNotaEmail($this->getNotaEmail());
        $this->Movimentacoes->setNotaDocumento($this->getNotaDocumento());
        $this->Movimentacoes->setNotaCep($this->getNotaCep());
        $this->Movimentacoes->setNotaRua($this->getNotaRua());
        $this->Movimentacoes->setNotaNumero($this->getNotaNumero());
        $this->Movimentacoes->setNotaComplemento($this->getNotaComplemento());
        $this->Movimentacoes->setNotaBairro($this->getNotaBairro());
        $this->Movimentacoes->setNotaCidade($this->getNotaCidade());
        $this->Movimentacoes->setNotaEstado($this->getNotaEstado());
        $this->Movimentacoes->setUrlNotification($this->getUrlNotification());

        $resultado = $this->Movimentacoes->inserir();

        $this->setId($this->Movimentacoes->getId());

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function atualizaSituacaoPorRefExterna()
    {
        $this->Movimentacoes->setReferenciaExterna($this->getReferenciaExterna());
        $this->Movimentacoes->setSituacao($this->getSituacao());
        $resultado = $this->Movimentacoes->atualizaSituacaoPorRefExterna();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function gravaEnvioSinPag()
    {
        $this->Movimentacoes->setId($this->getId());
        $this->Movimentacoes->setIdSinpag($this->getIdSinpag());
        $resultado = $this->Movimentacoes->gravaEnvioSinPag();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function gravaEnvioMovingPay()
    {
        $this->Movimentacoes->setId($this->getId());
        $resultado = $this->Movimentacoes->gravaEnvioMovingPay();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function gravaVeiculoQuitado()
    {
        $this->Movimentacoes->setId($this->getId());
        $resultado = $this->Movimentacoes->gravaVeiculoQuitado();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function gravaBoletoQuitado()
    {
        $this->Movimentacoes->setId($this->getId());
        $resultado = $this->Movimentacoes->gravaBoletoQuitado();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    public function gravaPixEnviado()
    {
        $this->Movimentacoes->setId($this->getId());
        $resultado = $this->Movimentacoes->gravaPixEnviado();

        $this->setRetorno($this->Movimentacoes->getRetorno());
        $this->setMensagemRetorno($this->Movimentacoes->getMensagemRetorno());

        return $resultado;
    }

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param mixed $id
     */
    public function setId($id): void
    {
        $this->id = $id;
    }

    /**
     * @return mixed
     */
    public function getOrigem()
    {
        return $this->origem;
    }

    /**
     * @param mixed $origem
     */
    public function setOrigem($origem): void
    {
        $this->origem = $origem;
    }

    /**
     * @return mixed
     */
    public function getServico()
    {
        return $this->servico;
    }

    /**
     * @param mixed $servico
     */
    public function setServico($servico): void
    {
        $this->servico = $servico;
    }

    /**
     * @return mixed
     */
    public function getDocumento()
    {
        return $this->documento;
    }

    /**
     * @param mixed $documento
     */
    public function setDocumento($documento): void
    {
        $this->documento = $documento;
    }

    /**
     * @return mixed
     */
    public function getReferenciaExterna()
    {
        return $this->referencia_externa;
    }

    /**
     * @param mixed $referencia_externa
     */
    public function setReferenciaExterna($referencia_externa): void
    {
        $this->referencia_externa = $referencia_externa;
    }

    /**
     * @return mixed
     */
    public function getSituacao()
    {
        return $this->situacao;
    }

    /**
     * @param mixed $situacao
     */
    public function setSituacao($situacao): void
    {
        $this->situacao = $situacao;
    }

    /**
     * @return mixed
     */
    public function getRecusaDescricao()
    {
        return $this->recusa_descricao;
    }

    /**
     * @param mixed $recusa_descricao
     */
    public function setRecusaDescricao($recusa_descricao): void
    {
        $this->recusa_descricao = $recusa_descricao;
    }

    /**
     * @return mixed
     */
    public function getCodigoRetorno()
    {
        return $this->codigo_retorno;
    }

    /**
     * @param mixed $codigo_retorno
     */
    public function setCodigoRetorno($codigo_retorno): void
    {
        $this->codigo_retorno = $codigo_retorno;
    }

    /**
     * @return mixed
     */
    public function getCodigoAdquirente()
    {
        return $this->codigo_adquirente;
    }

    /**
     * @param mixed $codigo_adquirente
     */
    public function setCodigoAdquirente($codigo_adquirente): void
    {
        $this->codigo_adquirente = $codigo_adquirente;
    }

    /**
     * @return mixed
     */
    public function getCodigoMcc()
    {
        return $this->codigo_mcc;
    }

    /**
     * @param mixed $codigo_mcc
     */
    public function setCodigoMcc($codigo_mcc): void
    {
        $this->codigo_mcc = $codigo_mcc;
    }

    /**
     * @return mixed
     */
    public function getAutorizacao()
    {
        return $this->autorizacao;
    }

    /**
     * @param mixed $autorizacao
     */
    public function setAutorizacao($autorizacao): void
    {
        $this->autorizacao = $autorizacao;
    }

    /**
     * @return mixed
     */
    public function getMoeda()
    {
        return $this->moeda;
    }

    /**
     * @param mixed $moeda
     */
    public function setMoeda($moeda): void
    {
        $this->moeda = $moeda;
    }

    /**
     * @return mixed
     */
    public function getNsuTef()
    {
        return $this->nsu_tef;
    }

    /**
     * @param mixed $nsu_tef
     */
    public function setNsuTef($nsu_tef): void
    {
        $this->nsu_tef = $nsu_tef;
    }

    /**
     * @return mixed
     */
    public function getNsu()
    {
        return $this->nsu;
    }

    /**
     * @param mixed $nsu
     */
    public function setNsu($nsu): void
    {
        $this->nsu = $nsu;
    }

    /**
     * @return mixed
     */
    public function getValor()
    {
        return $this->valor;
    }

    /**
     * @param mixed $valor
     */
    public function setValor($valor): void
    {
        $this->valor = $valor;
    }

    /**
     * @return mixed
     */
    public function getParcelas()
    {
        return $this->parcelas;
    }

    /**
     * @param mixed $parcelas
     */
    public function setParcelas($parcelas): void
    {
        $this->parcelas = $parcelas;
    }

    /**
     * @return mixed
     */
    public function getCartaoPortador()
    {
        return $this->cartao_portador;
    }

    /**
     * @param mixed $cartao_portador
     */
    public function setCartaoPortador($cartao_portador): void
    {
        $this->cartao_portador = $cartao_portador;
    }

    /**
     * @return mixed
     */
    public function getCartaoDigIni()
    {
        return $this->cartao_dig_ini;
    }

    /**
     * @param mixed $cartao_dig_ini
     */
    public function setCartaoDigIni($cartao_dig_ini): void
    {
        $this->cartao_dig_ini = $cartao_dig_ini;
    }

    /**
     * @return mixed
     */
    public function getCartaoDigFim()
    {
        return $this->cartao_dig_fim;
    }

    /**
     * @param mixed $cartao_dig_fim
     */
    public function setCartaoDigFim($cartao_dig_fim): void
    {
        $this->cartao_dig_fim = $cartao_dig_fim;
    }

    /**
     * @return mixed
     */
    public function getBanderia()
    {
        return $this->banderia;
    }

    /**
     * @param mixed $banderia
     */
    public function setBanderia($banderia): void
    {
        $this->banderia = $banderia;
    }

    /**
     * @return mixed
     */
    public function getFormaPagamento()
    {
        return $this->forma_pagamento;
    }

    /**
     * @param mixed $forma_pagamento
     */
    public function setFormaPagamento($forma_pagamento): void
    {
        $this->forma_pagamento = $forma_pagamento;
    }

    /**
     * @return mixed
     */
    public function getFormaCaptura()
    {
        return $this->forma_captura;
    }

    /**
     * @param mixed $forma_captura
     */
    public function setFormaCaptura($forma_captura): void
    {
        $this->forma_captura = $forma_captura;
    }

    /**
     * @return mixed
     */
    public function getNumeroSerie()
    {
        return $this->numero_serie;
    }

    /**
     * @param mixed $numero_serie
     */
    public function setNumeroSerie($numero_serie): void
    {
        $this->numero_serie = $numero_serie;
    }

    /**
     * @return mixed
     */
    public function getData()
    {
        return $this->data;
    }

    /**
     * @param mixed $data
     */
    public function setData($data): void
    {
        $this->data = $data;
    }

    /**
     * @return mixed
     */
    public function getEnviadoMovingpay()
    {
        return $this->enviado_movingpay;
    }

    /**
     * @param mixed $enviado_movingpay
     */
    public function setEnviadoMovingpay($enviado_movingpay): void
    {
        $this->enviado_movingpay = $enviado_movingpay;
    }

    /**
     * @return mixed
     */
    public function getVeiculoQuitado()
    {
        return $this->veiculo_quitado;
    }

    /**
     * @param mixed $veiculo_quitado
     */
    public function setVeiculoQuitado($veiculo_quitado): void
    {
        $this->veiculo_quitado = $veiculo_quitado;
    }

    /**
     * @return mixed
     */
    public function getBoletoQuitado()
    {
        return $this->boleto_quitado;
    }

    /**
     * @param mixed $boleto_quitado
     */
    public function setBoletoQuitado($boleto_quitado): void
    {
        $this->boleto_quitado = $boleto_quitado;
    }

    /**
     * @return mixed
     */
    public function getPixEnviado()
    {
        return $this->pix_enviado;
    }

    /**
     * @param mixed $pix_enviado
     */
    public function setPixEnviado($pix_enviado): void
    {
        $this->pix_enviado = $pix_enviado;
    }

    /**
     * @return mixed
     */
    public function getRetorno()
    {
        return $this->retorno;
    }

    /**
     * @param mixed $retorno
     */
    public function setRetorno($retorno): void
    {
        $this->retorno = $retorno;
    }

    /**
     * @return mixed
     */
    public function getMensagemRetorno()
    {
        return $this->mensagemRetorno;
    }

    /**
     * @param mixed $mensagemRetorno
     */
    public function setMensagemRetorno($mensagemRetorno): void
    {
        $this->mensagemRetorno = $mensagemRetorno;
    }

    /**
     * @return mixed
     */
    public function getEmiteNota()
    {
        return $this->emiteNota;
    }

    /**
     * @param mixed $emiteNota
     */
    public function setEmiteNota($emiteNota)
    {
        $this->emiteNota = $emiteNota;
    }

    /**
     * @return mixed
     */
    public function getNovosDados()
    {
        return $this->novosDados;
    }

    /**
     * @param mixed $novosDados
     */
    public function setNovosDados($novosDados)
    {
        $this->novosDados = $novosDados;
    }

    /**
     * @return mixed
     */
    public function getNotaNome()
    {
        return $this->notaNome;
    }

    /**
     * @param mixed $notaNome
     */
    public function setNotaNome($notaNome)
    {
        $this->notaNome = $notaNome;
    }

    /**
     * @return mixed
     */
    public function getNotaDocumento()
    {
        return $this->notaDocumento;
    }

    /**
     * @param mixed $notaDocumento
     */
    public function setNotaDocumento($notaDocumento)
    {
        $this->notaDocumento = $notaDocumento;
    }

    /**
     * @return mixed
     */
    public function getNotaCep()
    {
        return $this->notaCep;
    }

    /**
     * @param mixed $notaCep
     */
    public function setNotaCep($notaCep)
    {
        $this->notaCep = $notaCep;
    }

    /**
     * @return mixed
     */
    public function getNotaRua()
    {
        return $this->notaRua;
    }

    /**
     * @param mixed $notaRua
     */
    public function setNotaRua($notaRua)
    {
        $this->notaRua = $notaRua;
    }

    /**
     * @return mixed
     */
    public function getNotaNumero()
    {
        return $this->notaNumero;
    }

    /**
     * @param mixed $notaNumero
     */
    public function setNotaNumero($notaNumero)
    {
        $this->notaNumero = $notaNumero;
    }

    /**
     * @return mixed
     */
    public function getNotaComplemento()
    {
        return $this->notaComplemento;
    }

    /**
     * @param mixed $notaComplemento
     */
    public function setNotaComplemento($notaComplemento)
    {
        $this->notaComplemento = $notaComplemento;
    }

    /**
     * @return mixed
     */
    public function getNotaBairro()
    {
        return $this->notaBairro;
    }

    /**
     * @param mixed $notaBairro
     */
    public function setNotaBairro($notaBairro)
    {
        $this->notaBairro = $notaBairro;
    }

    /**
     * @return mixed
     */
    public function getNotaCidade()
    {
        return $this->notaCidade;
    }

    /**
     * @param mixed $notaCidade
     */
    public function setNotaCidade($notaCidade)
    {
        $this->notaCidade = $notaCidade;
    }

    /**
     * @return mixed
     */
    public function getNotaEstado()
    {
        return $this->notaEstado;
    }

    /**
     * @param mixed $notaEstado
     */
    public function setNotaEstado($notaEstado)
    {
        $this->notaEstado = $notaEstado;
    }

    /**
     * @return mixed
     */
    public function getValorOriginal()
    {
        return $this->valorOriginal;
    }

    /**
     * @param mixed $valorOriginal
     */
    public function setValorOriginal($valorOriginal)
    {
        $this->valorOriginal = $valorOriginal;
    }

    /**
     * @return mixed
     */
    public function getEnviadoSinpag()
    {
        return $this->enviado_sinpag;
    }

    /**
     * @param mixed $enviado_sinpag
     */
    public function setEnviadoSinpag($enviado_sinpag)
    {
        $this->enviado_sinpag = $enviado_sinpag;
    }

    /**
     * @return mixed
     */
    public function getIdSinpag()
    {
        return $this->id_sinpag;
    }

    /**
     * @param mixed $id_sinpag
     */
    public function setIdSinpag($id_sinpag)
    {
        $this->id_sinpag = $id_sinpag;
    }

    /**
     * @return mixed
     */
    public function getNotaTelefone()
    {
        return $this->notaTelefone;
    }

    /**
     * @param mixed $notaTelefone
     */
    public function setNotaTelefone($notaTelefone)
    {
        $this->notaTelefone = $notaTelefone;
    }

    /**
     * @return mixed
     */
    public function getNotaEmail()
    {
        return $this->notaEmail;
    }

    /**
     * @param mixed $notaEmail
     */
    public function setNotaEmail($notaEmail)
    {
        $this->notaEmail = $notaEmail;
    }

    /**
     * @return mixed
     */
    public function getCliId()
    {
        return $this->cliId;
    }

    /**
     * @param mixed $cliId
     */
    public function setCliId($cliId): void
    {
        $this->cliId = $cliId;
    }

    /**
     * @return mixed
     */
    public function getNumeroEc()
    {
        return $this->numeroEc;
    }

    /**
     * @param mixed $numeroEc
     */
    public function setNumeroEc($numeroEc): void
    {
        $this->numeroEc = $numeroEc;
    }

    /**
     * @return mixed
     */
    public function getNumeroCv()
    {
        return $this->numeroCv;
    }

    /**
     * @param mixed $numeroCv
     */
    public function setNumeroCv($numeroCv): void
    {
        $this->numeroCv = $numeroCv;
    }

    /**
     * @return mixed
     */
    public function getUrlNotification()
    {
        return $this->urlNotification;
    }

    /**
     * @param mixed $urlNotification
     */
    public function setUrlNotification($urlNotification): void
    {
        $this->urlNotification = $urlNotification;
    }

    /**
     * @return mixed
     */
    public function getRetornoJson()
    {
        return $this->retornoJson;
    }

    /**
     * @param mixed $retornoJson
     */
    public function setRetornoJson($retornoJson): void
    {
        $this->retornoJson = $retornoJson;
    }


}