private IEnumerable <EntregaFixaProcessada> GeraTodasRecorrenciasDeUmaRegra(IEnumerable <Competencia> competencias = null, ParametrosDeRegraDeRemuneracao regraFixa = null)
        {
            PeriodoSimples periodo = competencias.ObtemPeriodoQueCompreendeTodasAsCompetencias();
            DateTime       inicio  = periodo.Inicio;
            DateTime       fim     = periodo.Fim;


            dynamic idMoeda = regraFixa.ParametrosExtras.Dinheiro["Moeda"]["Id"];
            decimal valor   = decimal.Parse(regraFixa.ParametrosExtras.Dinheiro["Valor"].ToString());

            Moeda moeda = Moeda.Obtem(idMoeda.ToString());

            Dinheiro valorRegra = new Dinheiro(valor, moeda);

            JsonSerializerSettings settingsSerializer = new JsonSerializerSettings()
            {
                ContractResolver = new JsonContractResolverDeModelosBase()
            };
            //Dinheiro valorRegra = JsonConvert.DeserializeObject<Dinheiro>(regraFixa.ParametrosExtras.Dinheiro.ToString(), settingsSerializer);
            Recorrencia <DateTime> rec = JsonConvert.DeserializeObject <Recorrencia <DateTime> >(regraFixa.ParametrosExtras.Recorrencia.ToString(), settingsSerializer);


            rec.Atual = regraFixa.Vigencia.Inicio;

            DateTime dataReferencia = rec.Atual;

            Dictionary <int, DateTime> datasDoPeriodo = new Dictionary <int, DateTime>();

            Recorrencia <DateTime> atual = rec;

            while (dataReferencia <= fim)
            {
                datasDoPeriodo.Add(atual.Serie, dataReferencia);
                atual          = atual.ProximoNaRecorrencia;
                dataReferencia = atual.Atual;
            }

            atual          = rec.AnteriorNaRecorrencia;
            dataReferencia = atual.Atual;


            List <EntregaFixaProcessada> entregas = new List <EntregaFixaProcessada>();

            foreach (KeyValuePair <int, DateTime> data in datasDoPeriodo)
            {
                foreach (Competencia comp in competencias)
                {
                    if (comp.Contem(data.Value))
                    {
                        EntregaFixaProcessada ent = new EntregaFixaProcessada(data.Value, comp);
                        ent.Serie   = data.Key;
                        ent.IdRegra = regraFixa.Id;
                        entregas.Add(ent);
                        break;
                    }
                }
            }

            return(entregas);
        }
示例#2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var      jsonObject     = JObject.Load(reader);
            DateTime dataOcorrencia = jsonObject[PropriedadeData].Value <DateTime>();
            string   tipo           = jsonObject[PropriedadeTipo].Value <String>();

            Recorrencia <DateTime> recorrencia = GeraRecorrenciaDeAcordoComTipo(tipo, dataOcorrencia);

            return(recorrencia);
        }
示例#3
0
 public EduProcessaHorarioTurmaParams(
     IList <SHorario> horarios,
     IList <ProfessorTurma> professores,
     STurmaDisc sTurmaDisc,
     SDisciplina sDisciplina,
     Recorrencia recorrencia,
     bool verificaChoqueTurma
     )
 {
     Horarios            = horarios;
     Professores         = professores;
     STurmaDisc          = sTurmaDisc;
     SDisciplina         = sDisciplina;
     Recorrencia         = recorrencia;
     VerificaChoqueTurma = verificaChoqueTurma;
 }
示例#4
0
        public object RealizarPagamento(RequisicaoPagamento p)
        {
            iniRequisicao();

            Recorrencia requisicao = new Recorrencia();

            requisicao.Customer = new Customer();
            requisicao.Payment  = new Payment();
            requisicao.Payment.RecurrentPayment = new RecurrentPayment();
            requisicao.Payment.CreditCard       = new CreditCard();
            requisicao.MerchantOrderId          = DateTime.Now.ToString("ddMMyyyyHHmmss") + p.id_usuario_mobvendas.ToString();
            requisicao.Customer.Name            = p.name;
            requisicao.Payment.Type             = "CreditCard";
            requisicao.Payment.Amount           = Convert.ToDecimal(p.amount.Replace(".", ",")) * 100;
            requisicao.Payment.Installments     = 1;
            requisicao.Payment.SoftDescriptor   = "MobVendas";
            requisicao.Payment.RecurrentPayment.AuthorizeNow = true;
            requisicao.Payment.CreditCard.CardNumber         = p.cardnumber;
            requisicao.Payment.CreditCard.Holder             = p.name;
            requisicao.Payment.CreditCard.ExpirationDate     = p.expirationdate;
            requisicao.Payment.CreditCard.SecurityCode       = p.securityCode;
            requisicao.Payment.CreditCard.Brand = p.brand;

            string json = JsonConvert.SerializeObject(requisicao);

            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");

            try
            {
                var response = client.PostAsync("1/sales", httpContent).Result;
                if (response.IsSuccessStatusCode)
                {
                    var resposta = JsonConvert.DeserializeObject <Recorrencia>(response.Content.ReadAsStringAsync().Result);

                    if (resposta.Payment.ReturnCode == "4" || resposta.Payment.ReturnCode == "6")
                    {
                        var resp = JsonConvert.DeserializeObject <Captura>(client.PutAsync("1/sales/" + resposta.Payment.PaymentId + "/capture", null).Result.Content.ReadAsStringAsync().Result);
                        PAGAMENTOS_MOBVENDAS pag = new PAGAMENTOS_MOBVENDAS();
                        // pagamentos
                        pag.ID_USUARIO_MOBVENDAS = Convert.ToInt32(p.id_usuario_mobvendas);
                        pag.CodRetorno           = Convert.ToInt32(resposta.Payment.ReturnCode);
                        pag.Cartao          = resposta.Payment.CreditCard.CardNumber;
                        pag.Bandeira        = resposta.Payment.CreditCard.Brand;
                        pag.DataPagamento   = DateTime.Now;
                        pag.Valor           = resposta.Payment.Amount;
                        pag.MerchantOrderId = resposta.MerchantOrderId;
                        pag.DataExpiracao   = resposta.Payment.CreditCard.ExpirationDate;
                        db.PAGAMENTOS_MOBVENDAS.Add(pag);
                        try
                        {
                            db.SaveChanges();
                        }
                        catch (Exception ex1)
                        {
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = ex1.Message
                            });
                        }


                        var usuMob = db.USUARIOS_MOBVENDAS.Find(Convert.ToInt32(p.id_usuario_mobvendas));
                        usuMob.ID_RECORRENCIA    = resposta.Payment.RecurrentPayment.RecurrentPaymentId;
                        usuMob.SITUACAOCONTA     = 1;
                        usuMob.TIPOPLANO         = 3;
                        usuMob.DataProxPagamento = Convert.ToDateTime(resposta.Payment.RecurrentPayment.NextRecurrency);
                        db.Entry(usuMob).State   = EntityState.Modified;
                        try
                        {
                            db.SaveChanges();
                        }
                        catch (Exception ex2)
                        {
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = ex2.Message
                            });
                        }


                        var            ex  = db.USUARIOS_MOBVENDAS.Find(pag.ID_USUARIO_MOBVENDAS);
                        UsuarioSimples usu = new UsuarioSimples()
                        {
                            email       = ex.EMAIL,
                            nome        = ex.NOME,
                            dataProxPag = ex.DataProxPagamento
                        };

                        try
                        {
                            enviarEmail(pag, usu);
                        }
                        catch (Exception ex3)
                        {
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = ex3.Message
                            });
                        }
                        e.EnviarNotificacao("E", "Pagamento realizado com sucesso!", "Pagamento", usuMob.ID_USUARIO_MOBVENDAS, 4);
                        return(new
                        {
                            idResposta = (int)Codigo.Ok,
                            msgResposta = "Pagamento feito com sucesso!",
                            dataPag = pag.DataPagamento,
                            dataProxPag = usuMob.DataProxPagamento,
                            cartaoCredito = pag.Cartao,
                            bandeira = pag.Bandeira,
                            valor = pag.Valor
                        });
                    }
                    else
                    {
                        /*
                         *  5: Não autorizada
                         *   57: Cartão expirado
                         *   78: Cartão bloqueado
                         *   99: Time out
                         *   77: Carão cancelado
                         *   70: Problemas com cartão de crédito
                         */
                        switch (resposta.Payment.ReturnCode)
                        {
                        case "5":
                            return(new {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = "Compra não autorizada!"
                            });

                        case "57":
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = "Cartão Expirado!"
                            });

                        case "78":
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = "Cartão bloqueado!"
                            });

                        case "99":
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = "Time Out!"
                            });

                        case "77":
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = "Cartão cancelado!"
                            });

                        case "70":
                            return(new
                            {
                                idResposta = (int)Codigo.ErroCartao,
                                msgResposta = "Problemas com cartão de crédito!"
                            });
                        }
                    }
                }
                return(new
                {
                    idResposta = (int)Codigo.ErroGeral,
                    msgResposta = "Erro no pagamento!"
                });
            }
            catch (Exception ex)
            {
                return(new
                {
                    idResposta = (int)Codigo.ErroGeral,
                    msgResposta = ex.Message
                });
            }
        }