/// <summary> /// Executar a pesquisa com fase nos filtros /// </summary> /// <param name="filtro">Objeto modelo de filtragem</param> protected async Task ExecutaPesquisa(FiltroItensViewModel filtro) { Guid?tipoItemId = null; Guid?categoriaId = null; if (!string.IsNullOrWhiteSpace(filtro.TipoItem) && !filtro.TipoItem.Equals("-")) { tipoItemId = Guid.Parse(filtro.TipoItem); } if (!string.IsNullOrWhiteSpace(filtro.Categoria) && !filtro.Categoria.Equals("-")) { categoriaId = Guid.Parse(filtro.Categoria); } FiltroItemRequest request = new FiltroItemRequest() { DataInicial = filtro.DataInicial, DataFinal = filtro.DataFinal, TipoItemId = tipoItemId, CategoriaId = categoriaId }; _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ObterToken()); HttpResponseMessage resultApi = await _client.PostAsJsonAsync("/api/v1/Item/pesquisar", request); if (resultApi.StatusCode.Equals(HttpStatusCode.Unauthorized)) { throw new SessaoExpiradaException(); } string conteudo = await resultApi.Content.ReadAsStringAsync(); filtro.Itens = JsonConvert.DeserializeObject <List <ItemDetalheViewModel> >(conteudo); }
public async Task <IActionResult> Filtrar(FiltroItensViewModel model) { await CarregarDropDown(model.TipoItem, model.Categoria, null); // 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 ExecutaPesquisa(model); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } } return(View("Pesquisar", model)); }
public IActionResult DownloadRelatorioItem([FromQuery] DateTime?dataInicial, DateTime?dataFinal, string tipoItem, string categoria) { try { FiltroItensViewModel model = new FiltroItensViewModel() { DataInicial = dataInicial, DataFinal = dataFinal, TipoItem = tipoItem, Categoria = categoria }; ExecutaPesquisa(model).Wait(); IList <ReportPlanilhaItemViewModel> registros = new List <ReportPlanilhaItemViewModel>(); model.Itens.ToList().ForEach(i => { registros.Add ( new ReportPlanilhaItemViewModel() { TipoItem = i.TipoItem, DataInclusao = i.DataInclusao, DataEfetivacao = i.DataEfetivacao, Doador = $"{i.Doador}\n{i.TelefoneDoador}\n{i.CelularDoador}\n{i.EmailDoador}", Receptor = $"{i.Receptor}\n{i.TelefoneReceptor}\n{i.CelularReceptor}\n{i.EmailReceptor}", Titulo = i.Titulo, Descricao = i.Descricao, Categoria = i.Categoria, Peso = i.Peso, ValorFaixa = i.ValorFaixa, GerenciadaRh = i.GerenciadaRh } ); }); string caminho = Directory.GetDirectories(_hostingEnvironment.WebRootPath).Where(x => x.EndsWith("tmp")).SingleOrDefault(); string nomeBase = $"relatorio-itens-{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")); } }