Exemple #1
0
        public async Task <IActionResult> DownArquivoEnviado(int statusenvio, [FromBody] ConsolidadoModel c)
        {
            var tipo  = StatusEnvioEnums.ENVIADOS;
            var files = new Dictionary <string, byte[]>()
            {
            };

            var sbConsolidado = new StringBuilder();

            var dados = (await new ConsolidadoRepository().DownEspecializado(c, ClienteID, UsuarioID)).ToList();

            var lista = dados.GroupBy(a => new { Data = a.DataEnviar.Date, Carteira = a.Carteira }, (a, b) => new
            {
                Enviadas    = b.Sum(k => k.Entregues) + b.Sum(k => k.Excluidas) + b.Sum(k => k.Expiradas) + b.Sum(k => k.Enviados),
                NaoEnviadas = b.Sum(k => k.Suspensos) + b.Sum(k => k.Erros) + b.Sum(k => k.Canceladas),
                Carteira    = a.Carteira,
                Data        = a.Data
            }).ToList();


            sbConsolidado.Append("CARTEIRA;DATA;ENVIADAS;NAOENVIADAS;TOTAL\r\n");
            foreach (var item in lista)
            {
                sbConsolidado.AppendFormat("{0};{1:dd/MM/yyyy};{2:N0};{3:N0};{4:N0}\r\n", item.Carteira, item.Data, item.Enviadas, item.NaoEnviadas, item.Enviadas + item.NaoEnviadas);
            }

            files.Add($"envios.csv", Util.EncoderDefaultFiles.GetBytes(sbConsolidado.ToString()));

            Response.Headers[HeaderNames.ContentEncoding] = "utf-8";
            Response.Headers.Add("Content-Disposition", $"attachment;filename={tipo}.zip");
            return(File(await Util.ZipFiles(files), "application/x-zip-compressed"));
        }
Exemple #2
0
        public async Task <IActionResult> DownArquivoInvalido([FromBody] ConsolidadoModel c)
        {
            var dados = await new ConsolidadoRepository().DownCancelados(c, ClienteID, UsuarioID);

            if (!dados.Any())
            {
                throw new Exception("Sem dados");
            }


            var sb = new StringBuilder();

            sb.Append("CELULAR;IDCLIENTE;CARTEIRA;ARQUIVO;TEXTO;DATAENVIAR\r\n");

            foreach (var a in dados)
            {
                sb.AppendFormat("{0};{1};{2};{3};{4};{5}\r\n",
                                a.Celular,
                                a.IDCliente,
                                a.Carteira.Carteira,
                                a.Arquivo.Arquivo,
                                a.Texto,
                                a.DataEnviar);
            }

            using (var mem = new MemoryStream(Encoding.ASCII.GetBytes(sb.ToString())))
            {
                Response.Headers[HeaderNames.ContentEncoding] = "utf-7";
                Response.Headers.Add("Content-Disposition", $"attachment;filename=cancelados.zip");
                return(File(await mem.ToZip("cancelados.csv"), "application/x-zip-compressed"));
            }
        }
Exemple #3
0
        public async Task <IActionResult> DownArquivoCancelado([FromBody] ConsolidadoModel c)
        {
            var tipo  = StatusEnvioEnums.CANCELADOS;
            var files = new Dictionary <string, byte[]>()
            {
            };

            var sbConsolidado = new StringBuilder();

            var detalhado = (await new CampanhaRepository().DetalhadoGenerico(new CampanhaModel()
            {
                Cliente = new ClienteModel()
                {
                    ClienteID = ClienteID
                },
                Usuario = UsuarioID.HasValue ? new UsuarioModel()
                {
                    UsuarioID = UsuarioID.Value
                } : null,
                StatusEnvio = 5,
                DataInicial = c.DataInicial,
                DataFinal = c.DataFinal.Value.Date.AddMinutes(1439),
                CarteiraList = c.CarteiraList
            })).ToList();


            if (!detalhado.Any())
            {
                return(NoContent());
            }

            sbConsolidado.Append("DATA;CARTEIRA;ARQUIVO;QUANTIDADE\r\n");
            foreach (var item in detalhado.GroupBy(a => new { Arquivo = a.Arquivo.Arquivo, Carteira = a.Carteira.Carteira, Data = a.DataEnviar }, (a, b) => new { Arquivo = a.Arquivo, Carteira = a.Carteira, Data = a.Data, Canceladas = b.Count() }))
            {
                sbConsolidado.AppendFormat("{0:dd/MM/yyyy HH:mm};{1};{2};{3}\r\n", item.Data, item.Carteira, item.Arquivo, item.Canceladas);
            }

            files.Add($"cancelados.csv", Util.EncoderDefaultFiles.GetBytes(sbConsolidado.ToString()));

            Response.Headers[HeaderNames.ContentEncoding] = "utf-8";
            Response.Headers.Add("Content-Disposition", $"attachment;filename={tipo}.zip");
            return(File(await Util.ZipFiles(files), "application/x-zip-compressed"));
        }
Exemple #4
0
        public async Task <IActionResult> ComparativoFornecedor([FromBody] ConsolidadoModel c)
        {
            IActionResult res = null;
            var           b   = new BaseEntityDTO <dynamic>()
            {
                Start = DateTime.Now
            };

            try
            {
                var dados = (await new ConsolidadoRepository().ComparativoFornecedor(c, ClienteID, UsuarioID)).ToList();

                if (dados == null || !dados.Any())
                {
                    return(NoContent());
                }

                var rnd = new Random();

                var diario = dados.GroupBy(a => a.DataDia, (a, m) => new { DataDia = a, enviadas = m.Sum(k => k.Enviadas) }).ToList();

                var _dados = dados.GroupBy(a => a.DataDia, (a, m) => new { datadia = a, campanhas = m }).OrderBy(a => a.datadia).ToList();

                var l = new List <ComparativoFornecedor>()
                {
                };

                foreach (var item in dados.GroupBy(a => a.FornecedorNome, (a, m) => new { fornecedor = a, envios = m }).ToList())
                {
                    l.Add(new ComparativoFornecedor()
                    {
                        Fornecedor = item.fornecedor,
                        Envios     = from a in _dados
                                     join _b in item.envios.GroupBy(k => k.DataDia, (k, m) => new { datadia = k, envios = m }).ToList() on a.datadia equals _b.datadia into ps
                                     from _b in ps.DefaultIfEmpty()
                                     select new Consolidado
                        {
                            DataDia    = a.datadia,
                            Envios     = _b == null ? new ConsolidadoModel[] { } : _b.envios,
                            TempoMedio = _b == null ? default(double) : _b.envios.Average(k => k.Atraso.TotalSeconds)
                        }
                    });
                }


                b.Result = new
                {
                    totalpordia = _dados,
                    comparativo = l.Select(a => new
                    {
                        nome   = a.Fornecedor,
                        envios = new
                        {
                            totaldeenvios = a.Envios.Select(k => new
                            {
                                datadia  = k.DataDia,
                                enviadas = k.Envios.Sum(j => j.Enviadas)
                            }),
                            taxaentrega = a.Envios.Select(m => new
                            {
                                datadia     = m.DataDia,
                                taxaentrega = m.Envios.Sum(k => k.Entregues) / Enviadas(m.Envios.Sum(k => k.Enviadas)) * 100
                            }),
                            tempomedioentrega = a.Envios.Select(m => new
                            {
                                datadia = m.DataDia,
                                taxa    = m.TempoMedio
                            }),
                        },
                        distribuicao = a.Envios.Select(m => new
                        {
                            datadia = m.DataDia,
                            envios  = m.Envios.Sum(k => (decimal)k.Enviadas) / Enviadas(diario.Where(k => k.DataDia == m.DataDia).Sum(k => k.enviadas)) * (decimal)100
                        }),
                        ratinhos = a.Envios.Select(m => new
                        {
                            datadia     = m.DataDia,
                            efetividade = rnd.Next(70, 100)
                        })
                    })
                };



                b.End   = DateTime.Now;
                b.Itens = dados.Count;
                res     = Ok(b);
            }
            catch (Exception err)
            {
                b.End   = DateTime.Now;
                b.Error = (err.InnerException ?? err).Message;
                res     = BadRequest(b);
            }
            return(res);
        }
Exemple #5
0
        public async Task <IActionResult> Relatorio([FromBody] ConsolidadoModel c)
        {
            IActionResult res = null;
            var           b   = new BaseEntityDTO <dynamic>()
            {
                Start = DateTime.Now
            };

            try
            {
                var dados = await new FornecedorRepository().Relatorio(c, ClienteID, UsuarioID);

                if (!dados.item1.Any() || !dados.item3.Any())
                {
                    return(NoContent());
                }


                b.Result = new
                {
                    detalhamento = new
                    {
                        atraso      = dados.f.Atraso,
                        totalenvios = dados.Item1.Sum(a => a.Enviadas),
                        enviados    = dados.Item1.Sum(a => a.Enviados),
                        entregues   = dados.Item1.Sum(a => a.Entregues),
                        expirada    = dados.Item1.Sum(a => a.Expiradas),
                        excluidos   = dados.Item1.Sum(a => a.Excluidas),
                        erros       = dados.Item1.Sum(a => a.Erros),
                        grafico     = dados.Item1.GroupBy(a => a.DataDia, (a, m) => new { datadia = a, enviados = m.Sum(n => n.Enviados) }).OrderBy(a => a.datadia)
                    },
                    retornos = new
                    {
                        classificacoes = dados.Item2.GroupBy(a => new { a.ClassificacaoID, a.Classificacao }, (a, m) => new { classificacao = a.Classificacao, quantidade = m.Sum(k => k.Quantidade) }).OrderByDescending(k => k.quantidade),
                        registros      = dados.Item2.Sum(a => a.Quantidade)
                    },
                    discadora = new
                    {
                        ligacoes   = 10000,
                        emespera   = 4000,
                        fechamento = 9000
                    },
                    ratinhosmoneo = new
                    {
                        esperados = 1000000,
                        entregues = 999878
                    },

                    distribuicao = new
                    {
                        distribuicao  = dados.f,
                        enviadostotal = dados.Item3.Select(a => new
                        {
                            enviados = a.Enviados,
                            datadia  = a.DataDia
                        }),
                        enviadosfornecedor = dados.Item1.GroupBy(a => a.DataDia, (a, m) => new
                        {
                            enviados = m.Sum(k => k.Enviados),
                            datadia  = a
                        }),
                        media = from a in dados.Item3
                                join m in dados.Item1.GroupBy(a => a.DataDia, (a, m) => new
                        {
                            enviados = m.Sum(k => k.Enviados),
                            datadia  = a
                        }) on a.DataDia equals m.datadia into ps
                                from m in ps.DefaultIfEmpty()
                                orderby a.DataDia
                                select new
                        {
                            datadia  = a.DataDia,
                            mediauso = m == null ? 0 : m.enviados == 0 && a.Enviados == 0 ? 0 : (decimal)m.enviados / (decimal)a.Enviados * 100
                        },
                        mediaunica = (from x in dados.Item3
                                      join m in dados.Item1.GroupBy(a => a.DataDia, (a, m) => new
                        {
                            enviados = m.Sum(k => k.Enviados),
                            datadia = a
                        }) on x.DataDia equals m.datadia into ps
                                      from m in ps.DefaultIfEmpty()
                                      select new
                        {
                            datadia = x.DataDia,
                            mediauso = m == null ? 0 : m.enviados == 0 && x.Enviados == 0 ? 0 : (decimal)m.enviados / (decimal)x.Enviados * 100
                        }).Average(a => a.mediauso)
                    }
                };
                b.End   = DateTime.Now;
                b.Itens = dados.Item1.Count() + dados.Item2.Count();
                res     = Ok(b);
            }
            catch (Exception err)
            {
                b.End   = DateTime.Now;
                b.Error = (err.InnerException ?? err).Message;
                res     = BadRequest(b);
            }
            return(res);
        }
Exemple #6
0
 public Task <IEnumerable <CampanhaModel> > DownloadCelularesInvalidos(ConsolidadoModel g, int c, int?u, byte tipoinvalido)
 {
     dal = new DALCampanha();
     return(dal.DownloadCelularesInvalidos(g, c, u, tipoinvalido));
 }
Exemple #7
0
 public Task <IEnumerable <CampanhaModel> > DownByStatus(ConsolidadoModel co, byte statusenvio, int c, int?u)
 {
     dal = new DALCampanha();
     return(dal.DownByStatus(co, statusenvio, c, u));
 }
Exemple #8
0
 public Task <(IEnumerable <ConsolidadoModel> item1, IEnumerable <ConsolidadoModel> item2, IEnumerable <ConsolidadoModel> item3, FornecedorModel f)> Relatorio(ConsolidadoModel cm, int c, int?u)
 {
     dal = new DALFornecedor();
     return(dal.Relatorio(cm, c, u));
 }