Example #1
0
        public IActionResult InserirPdvPlanoPagamento([FromBody] ObjetoPagSeguro objJson)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(StatusCode(400, new RetornoJsonErro(400, "Objeto inválido [Inserir PdvPlanoPagamento]", null)));
                }
                PdvPlanoPagamento retorno = _service.Atualizar(objJson);

                return(CreatedAtRoute("ConsultarObjetoPdvPlanoPagamento", new { id = retorno.Id }, objJson));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new RetornoJsonErro(500, "Erro no Servidor [Inserir PdvPlanoPagamento]", ex)));
            }
        }
Example #2
0
        public PdvPlanoPagamento Atualizar(ObjetoPagSeguro objetoPagSeguroEnviado)
        {
            using (ISession Session = NHibernateHelper.GetSessionFactory().OpenSession())
            {
                // primeiro verifica se já existe um registro armazenado para a transação, pois neste caso iremos apenas atualizar o registro
                string filtro = "";
                filtro = "CodigoTransacao = '" + objetoPagSeguroEnviado.CodigoTransacao + "'";
                PdvPlanoPagamento pdvPlanoPagamentoDB = ConsultarObjetoFiltro(filtro);
                if (pdvPlanoPagamentoDB != null)
                {
                    // atualiza o status
                    pdvPlanoPagamentoDB.StatusPagamento = objetoPagSeguroEnviado.CodigoStatusTransacao;

                    // se o status for pago, então atualiza a data de pagamento e de expiração do plano
                    if (pdvPlanoPagamentoDB.StatusPagamento == "3")
                    {
                        pdvPlanoPagamentoDB.DataPagamento = DateTime.Now;
                        switch (pdvPlanoPagamentoDB.Plano)
                        {
                        case "M":
                            pdvPlanoPagamentoDB.DataPlanoExpira = DateTime.Now.AddMonths(1);
                            break;

                        case "S":
                            pdvPlanoPagamentoDB.DataPlanoExpira = DateTime.Now.AddMonths(6);
                            break;

                        case "A":
                            pdvPlanoPagamentoDB.DataPlanoExpira = DateTime.Now.AddMonths(12);
                            break;

                        default:
                            break;
                        }
                    }

                    Inserir(pdvPlanoPagamentoDB);
                    Session.Flush();
                    return(pdvPlanoPagamentoDB);
                }
                else
                {
                    // a falta de registro no banco indica que devemos criar um novo registro no banco de dados
                    // que só será inserido se tiver vindo um tipo de plano válido na requisição
                    String planoContratado = Biblioteca.PegarPlanoPdv(objetoPagSeguroEnviado.DescricaoProduto);
                    String moduloFiscal    = Biblioteca.PegarModuloFiscalPdv(objetoPagSeguroEnviado.DescricaoProduto);
                    filtro = "Plano = '" + planoContratado + "' AND ModuloFiscal = '" + moduloFiscal + "'";
                    PdvTipoPlano tipoPlano = new PdvTipoPlanoService().ConsultarObjetoFiltro(filtro);
                    if (tipoPlano != null)
                    {
                        PdvPlanoPagamento pdvPlanoPagamento = new PdvPlanoPagamento();
                        pdvPlanoPagamento.PdvTipoPlano        = tipoPlano;
                        pdvPlanoPagamento.CodigoTransacao     = objetoPagSeguroEnviado.CodigoTransacao;
                        pdvPlanoPagamento.StatusPagamento     = objetoPagSeguroEnviado.CodigoStatusTransacao;
                        pdvPlanoPagamento.MetodoPagamento     = objetoPagSeguroEnviado.MetodoPagamento;
                        pdvPlanoPagamento.CodigoTipoPagamento = objetoPagSeguroEnviado.CodigoTipoPagamento;
                        pdvPlanoPagamento.Valor           = objetoPagSeguroEnviado.ValorUnitario;
                        pdvPlanoPagamento.EmailPagamento  = objetoPagSeguroEnviado.EmailCliente;
                        pdvPlanoPagamento.DataSolicitacao = DateTime.Now;
                        pdvPlanoPagamento.Plano           = planoContratado;

                        // tenta encontrar a empresa pelo e-mail - se não encontrar, o usuário terá
                        // que informar o código da transação na App para reconhecer o seu pagamento
                        filtro = "Email = '" + objetoPagSeguroEnviado.EmailCliente + "'";
                        Empresa empresa = new EmpresaService().ConsultarObjetoFiltro(filtro);
                        if (empresa != null)
                        {
                            pdvPlanoPagamento.Empresa = empresa;
                        }

                        Alterar(pdvPlanoPagamento);
                        Session.Flush();
                        return(pdvPlanoPagamento);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
        }