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