Пример #1
0
        private async Task <Models.CreditoMetricas> GetCredito(string UserId, Repository.MongoRep repMongo = null)
        {
            if (repMongo == null)
            {
                repMongo = new Repository.MongoRep("", _settings);
            }
            var list = await repMongo.ListarCreditos(UserId);

            if (list == null || (list.Count == 0))
            {
                return(null);
            }

            list = list.Where(w =>  //TODO: debitos na conta...
                              (w.Obj.DataValidade >= DateTime.Now)).ToList();

            if (list == null || (list.Count == 0))
            {
                return(null);
            }

            var cred = new Models.CreditoMetricas()
            {
                DataCredito  = list.Max(m => m.Obj.DataCredito),
                DataCriacao  = DateTime.Now,
                DataValidade = list.Max(m => m.Obj.DataValidade),
                Qtd          = list.Sum(m => m.Obj.Qtd),
                Debito       = list.Sum(m => m.Obj.Debito),
                UserId       = UserId
            };

            return(cred);
        }
        public async Task <List <SobrePosicaoResponse> > Get(string id, string UserId)
        {
            try
            {
                Repository.MongoRep repMongo = new Repository.MongoRep(UserId, _appSettings, UserId);
                var _id       = new ObjectId(id);
                var lstSobrep = (await repMongo.ListarByOrderId <InfluencerComment>(_id)).ToList();

                if (lstSobrep != null)
                {
                    var lstSobrePosicaoResponse = new List <SobrePosicaoResponse>();
                    foreach (var sobrep in lstSobrep)
                    {
                        var sobrePosicaoResponse = new SobrePosicaoResponse();
                        sobrePosicaoResponse.Profile  = sobrep.Obj.Influencer.Obj.profile_picture_url;
                        sobrePosicaoResponse.Username = sobrep.Obj.Influencer.Obj.username;
                        sobrePosicaoResponse.Before   = sobrep.Obj.LstFollowersOld.Count();
                        sobrePosicaoResponse.After    = sobrep.Obj.LstFollowers.Count();
                        lstSobrePosicaoResponse.Add(sobrePosicaoResponse);
                    }

                    return(lstSobrePosicaoResponse);
                }

                return(null);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Пример #3
0
        public async Task <ActionResult> Pagamento(Models.DTO.PagamentoPage pagamentoPage)
        {
            var _id      = HttpContext.Session.GetString("UsuarioFull_id");
            var UserId   = HttpContext.Session.GetString("UserId");
            var repMongo = new Repository.MongoRep("", _settings, UserId);

            var usuario = await repMongo.ListarById <Models.Usuario>(new MongoDB.Bson.ObjectId(_id));

            pagamentoPage.Usuario.UserId = UserId;

            var result = await CreatePay(pagamentoPage, _id.ToString() + "-" + DateTime.Now.ToLongTimeString().Replace(":", "-"), UserId, repMongo, pagamentoPage.codPlan);

            result.StatusPagamento = "Pendente";

            await repMongo.GravarOne <Models.DTO.PagamentoPage>(result);

            if (usuario.FirstOrDefault().Obj.Tipo == "1")
            {
                return(RedirectToAction("MinhasAnalises", "Relatorios"));
            }
            else
            {
                return(RedirectToAction("HistoricoMetricas", "Relatorios"));
            }
        }
Пример #4
0
        public IActionResult Index()
        {
            var UserId = HttpContext.Session.GetString("UserId");

            if (!string.IsNullOrEmpty(UserId))
            {
                var NomeAgencia = HttpContext.Session.GetString("nomeagencia");
                if (string.IsNullOrEmpty(NomeAgencia))
                {
                    return(RedirectToAction("MinhasAnalises", "relatorios"));
                }
                else
                {
                    return(RedirectToAction("HistoricoMetricas", "relatorios"));
                }
            }
            try
            {
                var repMongo    = new Repository.MongoRep("", _settings);
                var crowlerInfo = repMongo.GetInfoHomeCrowler().ConfigureAwait(false).GetAwaiter().GetResult();
                ViewBag.CrowlerInfo = crowlerInfo;
            }
            catch (Exception x)
            {
            }
            HttpContext.Session.Remove("userType");
            HttpContext.Session.Remove("userNameTitle");
            return(View());
        }
Пример #5
0
        private async Task <Models.DTO.PagamentoPage> CreatePay(Models.DTO.PagamentoPage pay, string _id, string UserId, Repository.MongoRep mongoRep, string plan)
        {
            Wirecard.WirecardClient WC = null;
            WC = await SetAmbiente(WC);

            var OrderId = Guid.NewGuid().ToString();

            try
            {
                pay.OrderId          = OrderId;
                pay.Usuario.Telefone = Helper.ApenasNumeros(pay.Usuario.Telefone);

                var usuario = pay.Usuario;

                var sub = await CreateSignature(new Address()
                {
                    City         = usuario.City,
                    Complement   = usuario.Complement,
                    District     = usuario.District,
                    Street       = usuario.Street,
                    StreetNumber = usuario.Number,
                    ZipCode      = usuario.PostalCode.Replace("-", ""),
                    State        = usuario.State,
                    Country      = "BRA"
                }, new Credit_Card
                {
                    Holder_Name      = pay.Usuario.Nome,
                    Number           = pay.cardNumber,
                    Expiration_Year  = pay.expirationYear,
                    Expiration_Month = pay.expirationMonth
                }, usuario.Cpf, usuario.DataNascimento, usuario.Email, usuario.Nome + " " + usuario.Sobrenome, usuario.Ddd, usuario.Telefone, plan, OrderId, _id);

                //var cliente = await CriarClienteAsync(pay.Usuario, OrderId, WC);
                //var pedido = await CriarPedidoAsync(pay, cliente.Id, WC);
                //var pagamento = await CriarPagamentoAsync(cliente, pedido, pay, WC);

                //pay.customerResponse = cliente;
                //pay.orderResponse = pedido;
                //pay.paymentResponse = pagamento;

                if (sub != null && ((sub.Alerts != null) && (sub.Alerts.Count() > 0)))
                {
                    var resultAlerts = JsonConvert.SerializeObject(sub.Alerts).ToString();
                    var repMongo     = new Repository.MongoRep("", _settings, "");
                    await repMongo.GravarOne <string>("Pagamento: {" + sub.Code + "}" + resultAlerts);

                    sub.Alerts = null;
                }

                pay.subscriptionResponse = sub;
                return(pay);
            }
            catch (Exception ex)
            {
                var text = ex.Message.ToString();
                return(null);
            }
        }
Пример #6
0
        public async Task <int?> ValorCredito(string UserId, Repository.MongoRep repMongo)
        {
            var _credito = await GetCredito(UserId, repMongo);

            if (_credito != null)
            {
                return(_credito.Qtd - _credito.Debito);
            }
            return(null);
        }
        public async Task <ActionResult> Agencias()
        {
            var repMongo = new Repository.MongoRep("", _settings, "");

            try
            {
                var lstUsuarios = await repMongo.ListarAgencias();

                return(View(lstUsuarios));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Index"));
            }
        }
        public async Task <ActionResult> Creditar(string id, int qtd)
        {
            var repMongo = new Repository.MongoRep("", _settings, "");
            var credito  = new Models.CreditoMetricas()
            {
                UserId       = id,
                Qtd          = qtd,
                DataCredito  = DateTime.Now,
                Debito       = 0,
                DataValidade = DateTime.Now.AddMonths(1),
                DataCriacao  = DateTime.Now
            };
            await repMongo.GravarOne <Models.CreditoMetricas>(credito);

            return(RedirectToAction("Agencias"));
        }
        public async Task <string> Transactions(Models.PagSeguroTransaction dto)
        {
            string URLConstant = "v2/transactions"; //?email=" + Email + "&token=" + Token;

            try
            {
                dto.email = Email;
                dto.token = Token;

                var client  = new RestClient(url + URLConstant); //"https://ws.sandbox.pagseguro.uol.com.br/v2/transactions");
                var request = new RestRequest(Method.POST);

                var keyValueContent       = dto.ToKeyValue();
                var formUrlEncodedContent = new FormUrlEncodedContent(keyValueContent);
                var urlEncodedString      = await formUrlEncodedContent.ReadAsStringAsync();

                request.AddParameter("application/x-www-form-urlencoded; charset=ISO-8859-1", urlEncodedString, ParameterType.RequestBody);
                request.AddHeader("Accept", "application/xml;charset=ISO-8859-1");
                request.AddHeader("content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
                IRestResponse response = client.Execute(request);

                if (response.ResponseStatus == ResponseStatus.Completed)
                {
                    Repository.MongoRep rep = new Repository.MongoRep(dto.senderEmail, _appSettings);
                    await rep.GravarOne <string>(response.Content);

                    XmlSerializer serializer = new XmlSerializer(typeof(webMetrics.Models.TransactionPagseguro.Transaction));
                    using (TextReader reader = new StringReader(response.Content))
                    {
                        var rest = (webMetrics.Models.TransactionPagseguro.Transaction)serializer.Deserialize(reader);
                        //if (rest != null)
                        //{
                        //    throw new Exception(rest.Error.Message.ToString());
                        //}

                        return(rest.Code);
                    }

                    return("");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(null);
        }
Пример #10
0
        public async Task <List <InfluencerFollower> > FindTipoAudiencia(string key, string metricasInsigths)
        {
            Repository.MongoRep repMongo = new Repository.MongoRep(metricasInsigths, _appSettings, key);

            var _userObj = await repMongo.ListarById <Models.Usuario>(new ObjectId(key));

            var lst = await ListUsers(key);

            var usersString = "";

            if (lst.Count > 0)
            {
                lst.ForEach(s => { usersString += "," + s.Username; });
            }

            var ot = await GetUsers(
                _userObj.FirstOrDefault().Obj.UsuarioInstagram,
                _userObj.FirstOrDefault().Obj.access_token_page,
                usersString);

            var infs = new List <InfluencerFollower>();

            foreach (var it in lst)
            {
                infs.Add(new InfluencerFollower()
                {
                    AvgComments = it.LengthComment,
                    DateCreated = DateTime.Now,
                    Followers   = ot.Where(w => w.business_discovery.username == it.Username).FirstOrDefault().business_discovery.followers_count,
                    Username    = it.Username,

                    MassFollower = (ot.Where(w => w.business_discovery.username == it.Username).FirstOrDefault().error == null) &&
                                   (it.LengthComment < 20),
                    Influencer = (ot.Where(w => w.business_discovery.username == it.Username).FirstOrDefault().error == null) &&
                                 (it.LengthComment >= 20),
                    Suspect = (ot.Where(w => w.business_discovery.username == it.Username).FirstOrDefault().error != null) &&
                              (it.LengthComment < 20),
                    RealPerson = (ot.Where(w => w.business_discovery.username == it.Username).FirstOrDefault().error != null) &&
                                 (it.LengthComment >= 20),
                });
            }

            return(infs);
        }
Пример #11
0
        public async Task <PlanResponse> criarPlano(string code, string name, string description, int amount)
        {
            Wirecard.WirecardClient WC = null;
            WC = await SetAmbiente(WC);

            try
            {
                var newPlan = new PlanRequest()
                {
                    Code        = code,
                    Name        = name,
                    Description = description,
                    Amount      = amount,
                    Interval    = new Interval()
                    {
                        Unit   = (code.Contains("year") ? "YEAR":"MONTH"),
                        Length = 1
                    },
                    Payment_Method = "CREDIT_CARD"
                };

                var plan = await WC.Signature.CreatePlan(newPlan);

                var planNew = new PlanResponse()
                {
                    Code           = code,
                    Name           = name,
                    Description    = description,
                    Amount         = amount,
                    Payment_Method = "CREDIT_CARD"
                };
                var repMongo = new Repository.MongoRep("", _settings, "");
                await repMongo.GravarOne <PlanResponse>(planNew);

                return(plan);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Пример #12
0
        public async Task <IActionResult> Resumo()
        {
            var repMongo = new Repository.MongoRep("", _settings);
            var resp     = await repMongo.Listar <Models.DTO.InfluencersResumo>("danieljromualdo");

            var inf = resp.FirstOrDefault().Obj;

            #region Emotions
            var avgFaceDetection   = inf.AvgFaceDetection;
            var listaFaceDetection = avgFaceDetection.Joy.ToString() + "," +
                                     avgFaceDetection.Sorrow.ToString() + "," +
                                     avgFaceDetection.Anger.ToString() + "," +
                                     avgFaceDetection.Surprise.ToString() + "";
            var cabecalhoFaceDetection = "'Alegre','Tristeza','Raiva','Surpresa'";
            ViewBag.CabecalhoFaceDetection = cabecalhoFaceDetection;
            ViewBag.ListaFaceDetection     = listaFaceDetection;
            #endregion

            ViewBag.Markers = inf.Markers;

            return(View(inf));
        }
Пример #13
0
        public async Task <List <FollowerComments> > ListUsers(string UserId)
        {
            Repository.MongoRep repMongo = new Repository.MongoRep("Metricas Insigths", _appSettings, UserId);
            var lstFollowers             = new List <FollowerComments>();
            var lstMongoMedias           = await repMongo.Listar <Models.Graph.Media>(UserId);

            if (lstMongoMedias != null && (lstMongoMedias.Count > 0))
            {
                lstMongoMedias.ForEach(f =>
                {
                    if (f.Obj != null && (f.Obj.data != null && (f.Obj.data.Count > 0)))
                    {
                        f.Obj.data.ForEach(d =>
                        {
                            if (d.comments != null && (d.comments.data != null && (d.comments.data.Count > 0)))
                            {
                                d.comments.data.ForEach(c =>
                                {
                                    lstFollowers.Add(new FollowerComments()
                                    {
                                        Username      = c.username,
                                        LengthComment = c.text.Length
                                    });
                                });
                            }
                        });
                    }
                });
            }

            return(lstFollowers.GroupBy(g => new { g.Username })
                   .Select(s => new FollowerComments()
            {
                Username = s.Key.Username,
                LengthComment = Convert.ToInt32((lstFollowers.Where(w => w.Username == s.Key.Username).Average(l => l.LengthComment)))
            })
                   .Distinct().ToList());
        }
        public async Task <bool> GravarNovoUsuario([FromUri] string token, [FromUri] string idpagina, [FromUri] string userid)
        {
            try
            {
                Repository.MongoRep repMongo = new Repository.MongoRep("MetricaInsights", _appSettings);
                var usuarioNovo = new Models.Usuario()
                {
                    access_token_page = token,
                    name_page         = "",
                    UsuarioInstagram  = idpagina,
                    UserId            = userid,
                    Tipo          = "5",
                    AgenciaUserId = ""
                };
                await repMongo.GravarOne <Models.Usuario>(usuarioNovo);

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public async Task <string> ListMedia(List <string> lstUsuarioId, string UserId)
        {
            try
            {
                Repository.MongoRep repMongo = new Repository.MongoRep(UserId, _appSettings, UserId);
                var OrderId = ObjectId.GenerateNewId();

                var lstInfsUsuarios = new List <InfluencerComment>();
                foreach (var id in lstUsuarioId)
                {
                    var lstFollowers = new List <string>();
                    var _id          = new ObjectId(id);
                    var lstMongoUser = await repMongo.ListarById <Models.Graph.Usuario>(_id);

                    if (lstMongoUser != null && (lstMongoUser.Count > 0))
                    {
                        var userId         = lstMongoUser.FirstOrDefault().UsuarioId;
                        var lstMongoMedias = await repMongo.Listar <Models.Graph.Media>(userId);

                        if (lstMongoMedias != null && (lstMongoMedias.Count > 0))
                        {
                            lstMongoMedias.ForEach(f =>
                            {
                                if (f.Obj != null && (f.Obj.data != null && (f.Obj.data.Count > 0)))
                                {
                                    f.Obj.data.ForEach(d =>
                                    {
                                        if (d.comments != null && (d.comments.data != null && (d.comments.data.Count > 0)))
                                        {
                                            d.comments.data.ForEach(c =>
                                            {
                                                lstFollowers.Add(c.username);
                                            });
                                        }
                                    });
                                }
                            });
                        }
                        var inf = new InfluencerComment();
                        inf.OrderId         = OrderId;
                        inf.DtCreated       = DateTime.Now;
                        inf.LstFollowers    = lstFollowers.Distinct().ToList();
                        inf.LstFollowersOld = lstFollowers.Distinct().ToList();
                        inf.Influencer      = lstMongoUser.FirstOrDefault();
                        inf.UsuarioId       = id;
                        lstInfsUsuarios.Add(inf);
                    }
                }

                foreach (var infSingle in lstInfsUsuarios)
                {
                    foreach (var infUsuario in lstInfsUsuarios)
                    {
                        if (infSingle.UsuarioId != infUsuario.UsuarioId)
                        {
                            infSingle.LstFollowers = infSingle.LstFollowersOld.Except(infUsuario.LstFollowersOld).ToList();
                        }
                    }
                    await repMongo.GravarOne <InfluencerComment>(infSingle);
                }

                return(OrderId.ToString());
            }
            catch (Exception ex)
            {
                return("");
            }
        }
Пример #16
0
        // GET: Pagamento
        public async Task <ActionResult> Index(string tipo)
        {
            byte[] _out;
            if (!HttpContext.Session.TryGetValue("UsuarioFull_id", out _out))
            {
                return(RedirectToAction("ComeceAqui", "Relatorios", new { msg = 99 }));
            }

            var _id      = HttpContext.Session.GetString("UsuarioFull_id");
            var UserId   = HttpContext.Session.GetString("UserId");
            var repMongo = new Repository.MongoRep("", _settings, UserId);

            var usuario = await repMongo.ListarById <Models.Usuario>(new MongoDB.Bson.ObjectId(_id));

            var pagamentoPage = new Models.DTO.PagamentoPage()
            {
                Usuario = usuario.FirstOrDefault().Obj
            };


            string planoCode = "";

            if (tipo == Convert.ToInt32(EnumTipoPagamento.Influenciador).ToString())
            {//Influenciador
                pagamentoPage.Quantidade = 1;
                pagamentoPage.Valor      = 99M;
                pagamentoPage.Total      = 99M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan" + tipo.ToString() + "-99");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan" + tipo.ToString() + "-99",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "Um influencer - 99 reais", 9900);
                }
                planoCode = "Plan" + tipo.ToString() + "-99";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.AgenciasMarcas10).ToString())
            {//Agencia
                pagamentoPage.Quantidade = 10;
                pagamentoPage.Valor      = 99.9M;
                pagamentoPage.Total      = 999M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan" + tipo.ToString() + "-999");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan" + tipo.ToString() + "-999",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "10 influenciadores - 999 reais", 99900);
                }
                planoCode = "Plan" + tipo.ToString() + "-999";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.AgenciasMarcas30).ToString())
            {//Agencia
                pagamentoPage.Quantidade = 30;
                pagamentoPage.Valor      = 93.3M;
                pagamentoPage.Total      = 2799M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan" + tipo.ToString() + "-2799");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan" + tipo.ToString() + "-2799",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "30 influenciadores - 2799 reais", 279900);
                }
                planoCode = "Plan" + tipo.ToString() + "-2799";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.AgenciasMarcas90).ToString())
            {//Agencia
                pagamentoPage.Quantidade = 90;
                pagamentoPage.Valor      = 53.32M;
                pagamentoPage.Total      = 4799M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan" + tipo.ToString() + "-4799");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan" + tipo.ToString() + "-4799",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "90 influenciadores - 4799 reais", 479900);
                }
                planoCode = "Plan" + tipo.ToString() + "-4799";
            }

            if (tipo == Convert.ToInt32(EnumTipoPagamento.InfluenciadorYear).ToString())
            {//Influenciador
                pagamentoPage.Quantidade = 1;
                pagamentoPage.Valor      = 999M;
                pagamentoPage.Total      = 999M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan-yearY" + tipo.ToString() + "999");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan-yearY" + tipo.ToString() + "999",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "Um influencer - 999 reais - Ano", 99900);

                    if (plano == null)
                    {
                        RedirectToAction("login");
                    }
                }
                planoCode = "Plan-yearY" + tipo.ToString() + "999";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.AgenciasMarcas180Year).ToString())
            {//Agencia
                pagamentoPage.Quantidade = 180;
                pagamentoPage.Valor      = 52.77M;
                pagamentoPage.Total      = 9499M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan-Y" + tipo.ToString() + "9499");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan-Y" + tipo.ToString() + "9499",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "180 influenciadores - 9499 reais", 949900);

                    if (plano == null)
                    {
                        RedirectToAction("login");
                    }
                }
                planoCode = "Plan-Y" + tipo.ToString() + "9499";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.AgenciasMarcas300Year).ToString())
            {//Agencia
                pagamentoPage.Quantidade = 300;
                pagamentoPage.Valor      = 49.33M;
                pagamentoPage.Total      = 14799M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan-Y" + tipo.ToString() + "14799");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan-Y" + tipo.ToString() + "14799",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "300 influenciadores - 14799 reais", 1479900);

                    if (plano == null)
                    {
                        RedirectToAction("login");
                    }
                }
                planoCode = "Plan-Y" + tipo.ToString() + "14799";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.AgenciasMarcas600Year).ToString())
            {//Agencia
                pagamentoPage.Quantidade = 600;
                pagamentoPage.Valor      = 49.165M;
                pagamentoPage.Total      = 29499M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan-Y" + tipo.ToString() + "29499");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan-Y" + tipo.ToString() + "29499",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "600 influenciadores - 29499 reais", 2949900);

                    if (plano == null)
                    {
                        RedirectToAction("login");
                    }
                }
                planoCode = "Plan-Y" + tipo.ToString() + "29499";
            }
            if (tipo == Convert.ToInt32(EnumTipoPagamento.Testes).ToString())
            {//TESTES
                pagamentoPage.Quantidade = 1;
                pagamentoPage.Valor      = 1.00M;
                pagamentoPage.Total      = 1M;

                var planServer = await repMongo.ListarPlano <PlanResponse>("Plan" + tipo.ToString() + "-TST");

                if (planServer == null || (planServer.Count() == 0))
                {
                    var plano = await criarPlano("Plan" + tipo.ToString() + "-TST",
                                                 "Plano-" + tipo.ToString() + "-Influencer", "Um influencer - 1 real", 100);
                }
                planoCode = "Plan" + tipo.ToString() + "-TST";
            }

            ViewBag.hddPlan = planoCode;
            return(View(pagamentoPage));
        }
Пример #17
0
        public async Task <bool> GetPayment(string pagamentoId)
        {
            try
            {
                Wirecard.WirecardClient WC = null;
                WC = await SetAmbiente(WC);

                var _id      = new ObjectId(pagamentoId);
                var repMongo = new Repository.MongoRep("", _settings, "");

                var lstPagamentos = await repMongo.ListarById <Models.DTO.PagamentoPage>(_id);

                if (lstPagamentos != null)
                {
                    var userId                     = lstPagamentos.FirstOrDefault().UsuarioId;
                    var _pagamentoAtual            = lstPagamentos.FirstOrDefault().Obj;
                    var _pagamentoAtualContractual = lstPagamentos.FirstOrDefault();
                    if (_pagamentoAtual.paymentResponse != null)
                    {
                        #region Pagamentos Comuns
                        var result = await WC.Payment.Consult(_pagamentoAtual.paymentResponse.Id);

                        if (result.Status != _pagamentoAtual.paymentResponse.Status)
                        {
                            _pagamentoAtual.paymentResponse.Status = result.Status;
                            if (_pagamentoAtual.StatusPagamento == "Pendente" && result.Status == "AUTHORIZED")//Pago
                            {
                                _pagamentoAtual.StatusPagamento = "Pago";
                            }

                            //Mudar Status
                            await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>()
                            {
                                _id = _id,
                                Obj = _pagamentoAtual
                            });

                            if (_pagamentoAtual.StatusPagamento == "Pago")
                            {
                                //Inserir credito se for authorizado o pagamento
                                var credito = new Models.CreditoMetricas()
                                {
                                    UserId       = userId,
                                    Qtd          = _pagamentoAtual.Quantidade,
                                    DataCredito  = DateTime.Now,
                                    Debito       = 0,
                                    DataValidade = DateTime.Now.AddMonths(1),
                                    DataCriacao  = DateTime.Now
                                };
                                await repMongo.GravarOne <Models.CreditoMetricas>(credito);
                            }
                        }
                        if (result.Status == "CANCELLED" && _pagamentoAtual.StatusPagamento == "Pendente")
                        {
                            _pagamentoAtual.StatusPagamento = "Cancelado";
                            //Mudar Status
                            await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>()
                            {
                                _id = _id,
                                Obj = _pagamentoAtual
                            });
                        }
                        if (result.Status == "REFUNDED" && _pagamentoAtual.StatusPagamento == "Pendente")
                        {
                            _pagamentoAtual.StatusPagamento = "Cancelado";
                            //Mudar Status
                            await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>()
                            {
                                _id = _id,
                                Obj = _pagamentoAtual
                            });
                        }
                        if (result.Status == "REFUNDED" && _pagamentoAtual.StatusPagamento == "Pago")
                        {
                            _pagamentoAtual.StatusPagamento = "Cancelado";
                            //Mudar Status
                            await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>()
                            {
                                _id = _id,
                                Obj = _pagamentoAtual
                            });
                        }
                        #endregion
                    }
                    else
                    {
                        if (_pagamentoAtual.subscriptionResponse != null)
                        {
                            #region Invoices
                            var lstResult = await WC.Signature.ListSignatureInvoices(_pagamentoAtual.subscriptionResponse.Code);

                            foreach (var result in lstResult.Invoices)
                            {
                                if (_pagamentoAtual.Invoices == null)
                                {
                                    _pagamentoAtual.Invoices = new List <Invoice>();
                                }
                                var _invoice = _pagamentoAtual.Invoices.Where(w => w.Id == result.Id).FirstOrDefault();

                                if (_invoice == null)
                                {
                                    _pagamentoAtual.Invoices.Add(result);
                                    _invoice = result;
                                }

                                if (result.Status.Code == 3)//Pago
                                {
                                    _pagamentoAtual.StatusPagamento = "Pago";
                                    _pagamentoAtual.NextInvoice     = DateTime.Now.AddMonths(1);

                                    //Mudar Status
                                    await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>()
                                    {
                                        _id = _id,
                                        Obj = _pagamentoAtual
                                    });

                                    //Inserir credito se for authorizado o pagamento
                                    var credito = new Models.CreditoMetricas()
                                    {
                                        UserId       = userId,
                                        Qtd          = _pagamentoAtual.Quantidade,
                                        DataCredito  = DateTime.Now,
                                        Debito       = 0,
                                        DataValidade =
                                            _pagamentoAtual.codPlan.Contains("year")?
                                            DateTime.Now.AddMonths(12) :DateTime.Now.AddMonths(1),
                                        DataCriacao = DateTime.Now
                                    };
                                    await repMongo.GravarOne <Models.CreditoMetricas>(credito);

                                    //Email de pagamento
                                    var usuarioId = await repMongo.FindFilter <Models.Usuario>("Obj.UserId", _pagamentoAtual.Usuario.UserId);

                                    var envio = SenderEmail.Pagamento(_pagamentoAtual.Usuario.Email, usuarioId._id.ToString());
                                }

                                if (_invoice.Status != result.Status)
                                {
                                    if (result.Status.Code == 4)//Problemas no pagto
                                    {
                                        _pagamentoAtual.StatusPagamento = "Problemas";

                                        //Mudar Status
                                        await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>()
                                        {
                                            _id = _id,
                                            Obj = _pagamentoAtual
                                        });
                                    }
                                }
                            }

                            _pagamentoAtualContractual.Obj = _pagamentoAtual;
                            await repMongo.AlterarInvoices(_pagamentoAtualContractual);

                            #endregion
                        }
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public async Task <ActionResult> Index()
        {
            var repMongo    = new Repository.MongoRep("", _settings, "");
            var lstUsuarios = await repMongo.ListarUsersAtivos();

            var idUsuarios = lstUsuarios
                             .Select(s => s._id.ToString()).Distinct().ToList();
            var idAgencias = lstUsuarios.Where(w => w.Obj.AgenciaUserId != null && !string.IsNullOrEmpty(w.Obj.AgenciaUserId))
                             .Select(s => new BsonObjectId(new ObjectId(s.Obj.AgenciaUserId))).Distinct().ToList();
            var lstAgencias = await repMongo.ListarUsuarioByAgencia <Models.Usuario>(idAgencias);

            lstAgencias.ToList();
            var lstUsuariosInsights = await repMongo.ListGraphByUserIds <Models.Graph.Usuario>(idUsuarios);

            lstUsuariosInsights.ToList();
            var lstMediaInsights = await repMongo.ListGraphByUserIds <Models.Graph.Media>(idUsuarios);

            lstMediaInsights.ToList();
            var lstTagInsights = await repMongo.ListGraphByUserIds <Models.Graph.Tags>(idUsuarios);

            lstTagInsights.ToList();
            var lstStoriesInsights = await repMongo.ListGraphByUserIds <Models.Graph.Stories>(idUsuarios);

            lstStoriesInsights.ToList();
            var lstInsights = await repMongo.ListGraphByUserIds <Models.DTO.InsigthDTO>(idUsuarios);

            lstInsights.ToList();
            var lstCitiesInsights = await repMongo.ListGraphByUserIds <Models.Graph.InsightsGenderAge>(idUsuarios);

            lstCitiesInsights.ToList();
            int linhaerro;
            var lstPagamentos = await repMongo.ListGraphByUserIds <Models.DTO.PagamentoPage>(idUsuarios);

            lstPagamentos.ToList();

            var lst = new List <UsuarioAcoes>();

            lstUsuarios.Where(w => w.Obj.Tipo != "2").ForEach(f =>
            {
                try
                {
                    var usuarioInsight = lstUsuariosInsights.Where(w => w._id.ToString() == f._id).FirstOrDefault();
                    linhaerro          = 0;;
                    var agencia        = lstAgencias.Where(w => w._id.ToString() == f.Obj.AgenciaUserId).FirstOrDefault();
                    linhaerro++;
                    var citiesInsights = lstCitiesInsights.Where(w => w.UsuarioId.ToString() == f._id.ToString()).FirstOrDefault();
                    linhaerro++;
                    var cityTop = citiesInsights == null ? null :
                                  citiesInsights.Obj == null ? null : citiesInsights.Obj.data == null ? null : citiesInsights.Obj.data.FirstOrDefault();
                    linhaerro++;
                    var city = cityTop == null ? null : cityTop.values.FirstOrDefault();
                    linhaerro++;
                    var lstCity = city == null ? null : city.value.Select(s => new
                    {
                        valor = s.Value,
                        key   = s.Key
                    });
                    linhaerro++;
                    var _maxCity = lstCity == null ? null : lstCity.Where(w => w.valor == lstCity.Max(m => m.valor)).FirstOrDefault();
                    var maxCity  = (_maxCity == null ? null : _maxCity.key);
                    linhaerro++;
                    var ageInsights = lstInsights.Where(w => w.UsuarioId.ToString() == f._id.ToString()).FirstOrDefault();
                    linhaerro++;
                    var ageTop = ageInsights == null ? null : ageInsights.Obj.data.FirstOrDefault();
                    linhaerro++;
                    var age = ageTop == null ? null : ageTop.values.FirstOrDefault();
                    linhaerro++;
                    var lstAge = age == null ? null : age.value.Select(s => new
                    {
                        valor = s.valor,
                        key   = s.name
                    });
                    linhaerro++;
                    var _maxAge = lstAge == null ? null : lstAge.Where(w => w.valor == lstAge.Max(m => m.valor)).FirstOrDefault();
                    var maxAge  = (_maxAge == null ? null : _maxAge.key);
                    linhaerro++;

                    try
                    {
                        lst.Add(
                            new UsuarioAcoes()
                        {
                            UsuarioId = f._id.ToString(),
                            UserName  = f.Obj.name_page +
                                        (
                                usuarioInsight == null ? "" : usuarioInsight.Obj.username
                                        ),
                            Agencia     = agencia == null ? "" : agencia.Obj.NomeAgencia,
                            Usuario     = lstUsuariosInsights.Exists(x => x.UsuarioId == f._id.ToString()),
                            Media       = lstMediaInsights.Exists(x => x.UsuarioId == f._id.ToString()),
                            Tags        = lstTagInsights.Exists(x => x.UsuarioId == f._id.ToString()),
                            Stories     = lstStoriesInsights.Exists(x => x.UsuarioId == f._id.ToString()),
                            CityTop     = city == null ? "" : maxCity,
                            AgeTop      = age == null ? "" : maxAge,
                            DataCriacao = f.DateCreation,
                            Status      = ((f.Obj.Tipo == "4" && f.Obj.AgenciaUserId == "") ? "Removido" :
                                           (
                                               f.Obj.Tipo == "2" ? "Agência" : ""
                                           )
                                           )
                        });
                    }
                    catch (Exception)
                    {
                    }
                }
                catch (Exception)
                {
                }
            });

            return(View(lst.OrderBy(o => o.UserName)));
        }