Example #1
0
        /// <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;
        }
Example #2
0
        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));
        }
Example #3
0
        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")); }
        }