Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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")); }
        }