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")); }
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")); } }
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")); }
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); }
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); }
public Task <IEnumerable <CampanhaModel> > DownloadCelularesInvalidos(ConsolidadoModel g, int c, int?u, byte tipoinvalido) { dal = new DALCampanha(); return(dal.DownloadCelularesInvalidos(g, c, u, tipoinvalido)); }
public Task <IEnumerable <CampanhaModel> > DownByStatus(ConsolidadoModel co, byte statusenvio, int c, int?u) { dal = new DALCampanha(); return(dal.DownByStatus(co, statusenvio, c, u)); }
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)); }