public static decimal CalcularDescontoAnuidade(AssinaturaAnuidadeDao a) { int _percentualDesconto = 0; decimal _valor = a.Valor; // Isenção foi concedida: if (a.PagamentoIsento == true) { _percentualDesconto = 100; _valor = 0; } else { // Desconto aplicado para Membros CONFI: if (a.MembroConfi == true) { _percentualDesconto = 100; _valor = 0; } else { // O Desconto somente é aplicado para a Assinatura de Um Ano: if (a.TipoAnuidade == 1) { if (a.MembroDiretoria == true) { _percentualDesconto = 100; _valor = 0; } if (_percentualDesconto == 0) { if (a.AnuidadeAtcOk == true) { _percentualDesconto = 50; _valor = a.Valor > 0 ? a.Valor / 2 : 0; } } } } } return(_valor); }
public string Save(AssinaturaAnuidadeDao a) { int _percentualDesconto = 0; string _tipoDesconto = "0"; decimal _valor = a.Valor; _valor = Functions.CalcularDescontoAnuidade(a); // Isenção concedida pela Secretaria: if (a.PagamentoIsento == true) { a.TipoAnuidade = 1; // isenção para somente para uma anuidade _percentualDesconto = 100; _tipoDesconto = "3"; if (a.PagamentoIsentoBD == false) { a.DtCodePS = DateTime.Now; //Atualizo a data para a data da isenção } if (a.Reference == "") { a.Reference = $"ISENTO-A{a.Exercicio}{a.DtCodePS.GetHashCode()}".Replace("-", ""); } if (a.CodePS == "") { a.CodePS = $"Isento Pagamento Anuidade {a.Exercicio}{a.DtCodePS.GetHashCode()}".Replace("-", ""); } } else { // Desconto aplicado para Membros CONFI: if (a.MembroConfi == true) { _percentualDesconto = 100; _tipoDesconto = "4"; if (a.AssinaturaAnuidadeId == 0) { DateTime _date = DateTime.Now; a.CodePS = ""; a.DtCodePS = _date; a.Reference = "CONFI-" + $"A{a.Exercicio}{_date.GetHashCode()}".Replace("-", ""); a.EmProcessoPagamento = true; a.DtInicioProcessamento = _date; } } else { // O Desconto somente é aplicado para a Assinatura de Um Ano: if (a.TipoAnuidade == 1) { if (a.MembroDiretoria == true) { _percentualDesconto = 100; _tipoDesconto = "1"; } if (_percentualDesconto == 0) { if (a.AnuidadeAtcOk == true) { _percentualDesconto = 50; _tipoDesconto = "2"; } } } } } AssinaturaAnuidade assinaturaAnuidade = new AssinaturaAnuidade { AssinaturaAnuidadeId = a.AssinaturaAnuidadeId, AssociadoId = a.AssociadoId, ValorAnuidadeId = a.ValorAnuidadeId, AnoInicio = a.AnoInicio == 0 ? a.Exercicio : a.AnoInicio, AnoTermino = a.AnoTermino == 0 ? a.Exercicio + a.TipoAnuidade : a.AnoTermino, PercentualDesconto = _percentualDesconto, TipoDesconto = _tipoDesconto, Valor = _valor, DtVencimentoPagamento = a.DtVencimentoPagamento, DtAssinatura = a.DtAssinatura, CodePS = a.CodePS, DtCodePS = a.DtCodePS, Reference = a.Reference, EmProcessoPagamento = a.EmProcessoPagamento, DtInicioProcessamento = a.DtInicioProcessamento, DtAtualizacao = a.DtAtualizacao, Ativo = a.Ativo, DtIsencao = a.DtIsencao, ObservacaoIsencao = a.ObservacaoIsencao, PagamentoIsento = a.PagamentoIsento, PagamentoIsentoBD = a.PagamentoIsentoBD }; try { if (assinaturaAnuidade.AssinaturaAnuidadeId == 0) { // assinaturaAnuidade.Reference = "A" + a.Exercicio + DateTime.Now.GetHashCode(); return(_assinaturaAnuidadeService.Insert(assinaturaAnuidade)); } else { return(_assinaturaAnuidadeService.Update(assinaturaAnuidade.AssinaturaAnuidadeId, assinaturaAnuidade)); } } catch (Exception ex) { return(ex.Message); } }
public async Task <HttpResponseMessage> Post(AssinaturaAnuidadeDao a) { HttpResponseMessage response = new HttpResponseMessage(); var tsc = new TaskCompletionSource <HttpResponseMessage>(); string resultado = "false"; decimal _valorDecimal; try { if (a == null) { throw new ArgumentNullException("O objeto 'assinaturaAnuidadeDao' está nulo!"); } if (a.AssinaturaAnuidadeId == 0 || a.ValorAnuidadeId != a.ValorAnuidadeIdOriginal || a.CodePS == "") { if (a.PagamentoIsento == false) { PagSeguroRepository r = new PagSeguroRepository(); PagSeguroService s = new PagSeguroService(r); PagSeguroApplication p = new PagSeguroApplication(s); PagSeguroController pagSeguroController = new PagSeguroController(p); _valorDecimal = Functions.CalcularDescontoAnuidade(a); if (a.MembroConfi == false) { string _valor = _valorDecimal.ToString("F", CultureInfo.InvariantCulture); TokenCheckOutPagSeguro _token = await pagSeguroController.GetTokenCheckOutPessoaId(a.AssociadoId, _valor, "1", a.Exercicio, a.AnoTermino, true, true); if (_token != null) { a.CodePS = _token.Code; a.DtCodePS = _token.Date; a.Reference = _token.Reference; } } } } resultado = _assinaturaAnuidadeApplication.Save(a); response = Request.CreateResponse(HttpStatusCode.OK, resultado); response.ReasonPhrase = resultado; tsc.SetResult(response); return(await tsc.Task); } catch (Exception ex) { if (ex.GetType().Name == "InvalidOperationException" || ex.Source == "prmToolkit.Validation") { response = Request.CreateResponse(HttpStatusCode.NotFound); response.ReasonPhrase = ex.Message; } else { response = Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message); response.ReasonPhrase = ex.Message; } tsc.SetResult(response); return(await tsc.Task); } }
public AssinaturaAnuidadeDao GetAssinaturaAnuidadeById(int id) { List <DbParameter> _parametros = new List <DbParameter>(); query = @"SELECT AA.AssinaturaAnuidadeId, AA.AssociadoId, AA.ValorAnuidadeId, AA.AnoInicio, AA.AnoTermino, AA.PercentualDesconto, AA.TipoDesconto, AA.Valor, AA.DtVencimentoPagamento, AA.DtAssinatura, AA.DtAtualizacao, AA.Ativo, AA.CodePS, AA.DtCodePS, AA.Reference, AA.EmProcessoPagamento, AA.DtInicioProcessamento, AA.PagamentoIsento, AA.PagamentoIsento as PagamentoIsentoBD, AA.DtIsencao, AA.ObservacaoIsencao, P.Nome as NomePessoa, P.CPF, TP.Nome as NomeTP, A.Exercicio, VA.ValorAnuidadeId, VA.ValorAnuidadeId as ValorAnuidadeIdOriginal, VA.TipoAnuidade, VA.Valor as ValorTipoAnuidade, A.AnuidadeId, TP.TipoPublicoId, (SELECT 'AnuidadeAtcOk' = Case WHEN Count(DAA.DescontoAnuidadeAtcId) > 0 THEN 'TRUE' ELSE 'FALSE' END FROM dbo.AD_Desconto_Anuidade_Atc DAA WHERE DAA.AssociadoId = ASO.AssociadoId AND DAA.AnuidadeId = A.AnuidadeId) AS AnuidadeAtcOk, (SELECT 'MembroDiretoria' = Case WHEN Count(GE.GestaoId) > 0 THEN 'TRUE' ELSE 'FALSE' END FROM dbo.AD_Gestao GE INNER JOIN dbo.AD_Membro_Gestao MG ON GE.GestaoId = MG.GestaoId WHERE MG.AssociadoId = ASO.AssociadoId AND (GE.AnoInicial <= A.Exercicio AND GE.AnoFinal >= A.Exercicio) ) AS MembroDiretoria, (SELECT 'MembroConfi' = Case WHEN Count(G.GestaoId) > 0 THEN 'TRUE' ELSE 'FALSE' END FROM dbo.AD_Gestao G INNER JOIN dbo.AD_Membro_Gestao MG ON G.GestaoId = MG.GestaoId INNER JOIN dbo.AD_Cargo_Gestao CG ON MG.CargoGestaoId = CG.CargoGestaoId WHERE UPPER(CG.Nome) = 'PRESIDENTE' AND MG.AssociadoId = AA.AssociadoId ) AS MembroConfi FROM dbo.AD_Assinatura_Anuidade AA INNER JOIN dbo.AD_Valor_Anuidade VA ON AA.ValorAnuidadeId = VA.ValorAnuidadeId INNER JOIN dbo.AD_Anuidade_Tipo_Publico ATP ON VA.AnuidadeTipoPublicoId = ATP.AnuidadeTipoPublicoId INNER JOIN dbo.AD_Anuidade A ON ATP.AnuidadeId = A.AnuidadeId INNER JOIN dbo.AD_Associado ASO ON AA.AssociadoId = ASO.AssociadoId INNER JOIN dbo.AD_Pessoa P ON ASO.PessoaId = P.PessoaId INNER JOIN dbo.AD_Tipo_Publico TP ON ATP.TipoPublicoId = TP.TipoPublicoId WHERE AA.AssinaturaAnuidadeId = @id ORDER BY AA.AssociadoId, AA.AssinaturaAnuidadeId "; // Definição do parâmetros da consulta: SqlParameter paramId = new SqlParameter() { ParameterName = "@id", Value = id }; _parametros.Add(paramId); // Fim da definição dos parâmetros // Define o banco de dados que será usando: CommandSql cmd = new CommandSql(strConnSql, query, EnumDatabaseType.SqlServer, parametros: _parametros); // Obtém os dados do banco de dados: AssinaturaAnuidadeDao assinaturaAssociadoDao = GetCollection <AssinaturaAnuidadeDao>(cmd)?.FirstOrDefault <AssinaturaAnuidadeDao>(); // Log da consulta: string log = logRep.SetLogger(className + "/GetAssinaturaAnuidadeById", "SELECT", "ASSINATURA_ANUIDADE", id, query, assinaturaAssociadoDao != null ? "SUCESSO" : "0"); // Fim Log return(assinaturaAssociadoDao); }