private void SetFiltrosSessao(FormFiltersVisitaEnderecosViewModels data)
 {
     if (data != null)
     {
         HttpContext.Session.SetString("IdLote", (data.IdLote == null) ? "" : data.IdLote);
         HttpContext.Session.SetString("ZId", (data.ZId == null) ? "" : data.ZId);
         HttpContext.Session.SetString("DId", (data.DId == null) ? "" : data.DId);
         HttpContext.Session.SetString("AId", (data.AId == null) ? "" : data.AId);
         HttpContext.Session.SetString("Endereco", (data.Endereco == null) ? "" : data.Endereco);
     }
 }
        private FormFiltersVisitaEnderecosViewModels GetFiltrosSessao()
        {
            var ffvm = new FormFiltersVisitaEnderecosViewModels();

            ffvm.IdLote   = (HttpContext.Session.GetString("IdLote") == "") ? null : HttpContext.Session.GetString("IdLote");
            ffvm.ZId      = (HttpContext.Session.GetString("ZId") == "") ? null : HttpContext.Session.GetString("ZId");
            ffvm.DId      = (HttpContext.Session.GetString("DId") == "") ? null : HttpContext.Session.GetString("DId");
            ffvm.AId      = (HttpContext.Session.GetString("AId") == "") ? null : HttpContext.Session.GetString("AId");
            ffvm.Endereco = (HttpContext.Session.GetString("Endereco") == "") ? null : HttpContext.Session.GetString("Endereco");

            return(ffvm);
        }
        public List <LotePorEndereco> GetEnderecosAtivos([FromForm] FormFiltersVisitaEnderecosViewModels filtros)
        {
            int?   id        = HttpContext.Session.GetInt32("UserId");
            int?   delegacao = HttpContext.Session.GetInt32("Delegação");
            int?   zona      = HttpContext.Session.GetInt32("Zona");
            string tipo      = HttpContext.Session.GetString("UserTipo");
            int?   area      = HttpContext.Session.GetInt32("Área");

            IQueryable <LotePorEndereco> e;

            if (filtros == null)
            {
                e = _context._11_LoteAtivoEndereco.FromSql("exec [dbo].[LotePorEndereco_Ativos] {0},{1},{2},{3},{4},{5}", null, zona, delegacao, null, null,
                                                           (tipo == "cli" && (area != null)) ? id : null);
            }
            else
            {
                e = _context._11_LoteAtivoEndereco.FromSql("exec [dbo].[LotePorEndereco_Ativos] {0},{1},{2},{3},{4},{5}", filtros.IdLote,
                                                           ((zona != null) ? zona.ToString() : (filtros.ZId != null) ? filtros.ZId.ToString() : null),
                                                           ((delegacao != null) ? delegacao.ToString() : (filtros.DId != null) ? filtros.DId.ToString() : null),
                                                           filtros.AId, filtros.Endereco, (tipo == "cli" && (area != null)) ? id : null);
            }
            return(e.ToList());
        }
        public IActionResult GetListLoteAtivoView([FromForm] FormFiltersVisitaEnderecosViewModels filtros, bool eIndex, int PaginaClicada)
        {
            SetFiltrosSessao(filtros);

            //lista vinda da SP
            var evList = GetEnderecosAtivos(filtros);

            ViewBag.Potencial = evList.Sum(c => c.Potencial);

            //lógica do tratado  ----------------------------------------------
            ViewBag.Tratados           = evList.Sum(e => e.Tratados);
            ViewBag.TratadosPercent    = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Tratados), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            ViewBag.NaoTratados        = ViewBag.Potencial - ViewBag.Tratados;
            ViewBag.NaoTratadosPercent = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.NaoTratados), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;

            ViewBag.c0Visita        = evList.Sum(e => e.Visitas0);
            ViewBag.c0VisitaPercent = (ViewBag.NaoTratados != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.c0Visita), Convert.ToDecimal(ViewBag.NaoTratados)) * 100) : 0;
            ViewBag.c1Visita        = evList.Sum(e => e.Visitas1);
            ViewBag.c1VisitaPercent = (ViewBag.NaoTratados != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.c1Visita), Convert.ToDecimal(ViewBag.NaoTratados)) * 100) : 0;
            ViewBag.c2Visita        = evList.Sum(e => e.Visitas2);
            ViewBag.c2VisitaPercent = (ViewBag.NaoTratados != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.c2Visita), Convert.ToDecimal(ViewBag.NaoTratados)) * 100) : 0;

            //fim da lógica do tratado ----------------------------------------------


            ViewBag.Visitados           = evList.Sum(c => c.Visitados);
            ViewBag.VisitadosPercent    = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Visitados), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            ViewBag.NaoVisitados        = ViewBag.Potencial - ViewBag.Visitados;
            ViewBag.NaoVisitadosPercent = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.NaoVisitados), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            //ok

            ViewBag.Contratados           = evList.Sum(c => c.Contratados);
            ViewBag.ContratadosPercent    = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Contratados), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            ViewBag.NaoContratados        = ViewBag.Potencial - ViewBag.Contratados;
            ViewBag.NaoContratadosPercent = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.NaoContratados), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            //ok

            ViewBag.D2         = evList.Sum(e => e.D2);
            ViewBag.D2Percent  = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.D2), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            ViewBag.Svg        = evList.Sum(e => e.Svg);
            ViewBag.SvgPercent = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Svg), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            ViewBag.Sve        = evList.Sum(e => e.Sve);
            ViewBag.SvePercent = (ViewBag.Potencial != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Sve), Convert.ToDecimal(ViewBag.Potencial)) * 100) : 0;
            //ok

            ViewBag.Visitas            = evList.Sum(c => c.Visitas);
            ViewBag.Entrevistas        = evList.Sum(c => c.Entrevistas);
            ViewBag.EntrevistasPercent = (ViewBag.Visitas != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Entrevistas), Convert.ToDecimal(ViewBag.Visitas)) * 100) : 0;
            ViewBag.VisitasImpr        = evList.Sum(c => c.VisitasImpr);
            ViewBag.VisitasImprPercent = (ViewBag.Visitas != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.VisitasImpr), Convert.ToDecimal(ViewBag.Visitas)) * 100) : 0;
            ViewBag.Ausentes           = evList.Sum(c => c.Ausencias);
            ViewBag.AusentesPercent    = (ViewBag.Visitas != 0) ? Convert.ToInt32(decimal.Divide(Convert.ToDecimal(ViewBag.Ausentes), Convert.ToDecimal(ViewBag.Visitas)) * 100) : 0;
            ViewBag.VisitaAgendada     = evList.Sum(c => c.VisitasAgendadas);
            //ok

            if (eIndex)
            {
                return(View("VisitasEnderecos", evList));
            }
            else
            {
                dynamic jsonModel = new ExpandoObject();
                jsonModel.Numeracoes   = new List <string>();
                jsonModel.Porcentagens = new List <string>();

                jsonModel.Numeracoes.Add(ViewBag.Potencial.ToString());      //e0
                jsonModel.Numeracoes.Add(ViewBag.Visitados.ToString());      //e1
                jsonModel.Numeracoes.Add(ViewBag.NaoVisitados.ToString());   //e2
                jsonModel.Numeracoes.Add(evList.Count().ToString());         //e3

                jsonModel.Numeracoes.Add(ViewBag.Contratados.ToString());    //e4
                jsonModel.Numeracoes.Add(ViewBag.NaoContratados.ToString()); //e5

                jsonModel.Numeracoes.Add(ViewBag.D2.ToString());             //e6
                jsonModel.Numeracoes.Add(ViewBag.Svg.ToString());            //e7
                jsonModel.Numeracoes.Add(ViewBag.Sve.ToString());            //e8
                jsonModel.Numeracoes.Add(ViewBag.Visitas.ToString());        //e9
                jsonModel.Numeracoes.Add(ViewBag.Entrevistas.ToString());    //e10
                jsonModel.Numeracoes.Add(ViewBag.VisitasImpr.ToString());    //e11
                jsonModel.Numeracoes.Add(ViewBag.Ausentes.ToString());       //e12
                jsonModel.Numeracoes.Add(ViewBag.VisitaAgendada.ToString()); //e13

                //tratados
                jsonModel.Numeracoes.Add(ViewBag.Tratados.ToString());    //e14
                jsonModel.Numeracoes.Add(ViewBag.NaoTratados.ToString()); //e15
                jsonModel.Numeracoes.Add(ViewBag.c0Visita.ToString());    //e16
                jsonModel.Numeracoes.Add(ViewBag.c1Visita.ToString());    //e17
                jsonModel.Numeracoes.Add(ViewBag.c2Visita.ToString());    //e18


                jsonModel.Porcentagens.Add(ViewBag.VisitadosPercent.ToString());      //ep0
                jsonModel.Porcentagens.Add(ViewBag.NaoVisitadosPercent.ToString());   //ep1
                jsonModel.Porcentagens.Add(ViewBag.ContratadosPercent.ToString());    //ep2
                jsonModel.Porcentagens.Add(ViewBag.NaoContratadosPercent.ToString()); //ep3
                jsonModel.Porcentagens.Add(ViewBag.D2Percent.ToString());             //ep4
                jsonModel.Porcentagens.Add(ViewBag.SvgPercent.ToString());            //ep5
                jsonModel.Porcentagens.Add(ViewBag.SvePercent.ToString());            //ep6
                jsonModel.Porcentagens.Add(ViewBag.EntrevistasPercent.ToString());    //ep7
                jsonModel.Porcentagens.Add(ViewBag.VisitasImprPercent.ToString());    //ep8
                jsonModel.Porcentagens.Add(ViewBag.AusentesPercent.ToString());       //ep9

                //tratados
                jsonModel.Porcentagens.Add(ViewBag.TratadosPercent.ToString());    //ep10
                jsonModel.Porcentagens.Add(ViewBag.NaoTratadosPercent.ToString()); //ep11
                jsonModel.Porcentagens.Add(ViewBag.c0VisitaPercent.ToString());    //ep12
                jsonModel.Porcentagens.Add(ViewBag.c1VisitaPercent.ToString());    //ep13
                jsonModel.Porcentagens.Add(ViewBag.c2VisitaPercent.ToString());    //ep14
                // continuar dia 30/06/2017

                var pagina = 0;
                if (PaginaClicada != 0)
                {
                    pagina = (PaginaClicada - 1) * 20;
                }
                jsonModel.EV = evList.Skip(pagina).Take(20);
                jsonModel.QuantasPaginasExistem = (evList.Count() != 0) ? Math.Ceiling(decimal.Divide(Convert.ToDecimal(evList.Count()), 20)) : 1;

                return(Json(jsonModel));
            }
        }