/// <summary> /// Carregar os matches /// </summary> /// <param name="model"></param> /// <returns></returns> private async Task CarregarMatches(EfetivaMatchViewModel filtro) { Guid?categoriaId = null; if (!string.IsNullOrWhiteSpace(filtro.Categoria) && !filtro.Categoria.Equals("-")) { categoriaId = Guid.Parse(filtro.Categoria); } bool?efetivados; switch (filtro.Efetivacao) { case 1: efetivados = false; break; case 2: efetivados = true; break; default: efetivados = null; break; } PesquisaMatchRequest request = new PesquisaMatchRequest() { DataInicial = filtro.DataInicial, DataFinal = filtro.DataFinal, CategoriaId = categoriaId, Efetivados = efetivados }; // Carregando Doações _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ObterToken()); HttpResponseMessage resultApi = await _client.PostAsJsonAsync("/api/v1/Item/match/listar", request); if (resultApi.StatusCode.Equals(HttpStatusCode.Unauthorized)) { throw new SessaoExpiradaException(); } string conteudo = await resultApi.Content.ReadAsStringAsync(); List <PesquisaMatchResponse> matches = JsonConvert.DeserializeObject <List <PesquisaMatchResponse> >(conteudo); filtro.Matches = matches; }
public async Task <IActionResult> PesquisarMatches(EfetivaMatchViewModel model) { await CarregarDropDown(null, model.Categoria, model.Efetivacao); // Validações if (!(model.DataInicial == null && model.DataFinal == null)) { if (model.DataInicial == null || model.DataFinal == null) { model.Criticas = "Para filtrar por período é necessário preencher os dois campos"; } else { if (model.DataInicial.Value > model.DataFinal.Value) { model.Criticas = "A data inicial não pode ser superior a data final"; } } } if (string.IsNullOrWhiteSpace(model.Criticas)) { try { await CarregarMatches(model); return(View("EfetivarMatch", model)); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } } return(View("EfetivarMatch", model)); }
public IActionResult DownloadRelatorioMatch([FromQuery] DateTime?dataInicial, DateTime?dataFinal, string categoria, int efetivacao) { try { EfetivaMatchViewModel model = new EfetivaMatchViewModel() { DataInicial = dataInicial, DataFinal = dataFinal, Categoria = categoria, Efetivacao = efetivacao }; CarregarMatches(model).Wait(); IList <ReportPlanilhaMatchViewModel> registros = new List <ReportPlanilhaMatchViewModel>(); model.Matches.ToList().ForEach(m => { registros.Add ( new ReportPlanilhaMatchViewModel() { Id = m.Id, Data = m.Data, TipoMatch = m.TipoMatch, ContatoDoador = $"{m.NomeDoador}\n{m.TelefoneDoador}\n{m.CelularDoador}\n{m.EmailDoador}", ContatoReceptor = $"{m.NomeReceptor}\n{m.TelefoneReceptor}\n{m.CelularReceptor}\n{m.EmailReceptor}", DadosItem = $"Título: {m.Titulo}\nDescrição: {m.Descricao}\nCategoria: {m.Categoria}\nValor: {m.ValorFaixa}\nGerenciada RH: {(m.GerenciadaRh ? "Sim" : "Não")}", // Titulo = m.Titulo, // Descricao = m.Descricao, // Categoria = m.Categoria, Pontuacao = m.Pontuacao, // ValorFaixa = m.ValorFaixa, // GerenciadaRh = m.GerenciadaRh, Efetivado = m.Efetivado } ); }); string caminho = Directory.GetDirectories(_hostingEnvironment.WebRootPath).Where(x => x.EndsWith("tmp")).SingleOrDefault(); string nomeBase = $"relatorio-matches-{Guid.NewGuid()}.xlsx"; string nomeArquivo = string.Empty; using (Excel excel = new Excel(caminho)) { nomeArquivo = Path.GetFileName(excel.Exportar(nomeBase, "Relatorio", registros, true, OfficeOpenXml.Table.TableStyles.Medium16, "TabRelatorio")); } IFileProvider provider = new PhysicalFileProvider(Path.Combine(caminho)); IFileInfo fileInfo = provider.GetFileInfo(nomeArquivo); Stream readStream = fileInfo.CreateReadStream(); string mimeType = "application/vnd.ms-excel"; Task.Factory.StartNew(() => { Thread.Sleep(10000); System.IO.File.Delete(Path.Combine(caminho, nomeArquivo)); }); return(File(readStream, mimeType, nomeArquivo)); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } }