private void ConfigurarCabecalho(CardapioReportParamsViewModel param, CardapioReportResultViewModel result, string nomeCardapio, string nomeIntervaloSemanas, string nomeIntervaloItens, string listaReceitasSemCardapio)
 {
     if (listaReceitasSemCardapio != string.Empty)
     {
         result.CabecalhoDoRelatorio.Add(new CardapioReportResultValorCabecalhoViewModel
         {
             NomeCampo  = _localizer["Lista de receitas"].Value,
             ValorCampo = listaReceitasSemCardapio
         });
         result.CabecalhoDoRelatorio.Add(new CardapioReportResultValorCabecalhoViewModel
         {
             NomeCampo  = _localizer["Porções"].Value,
             ValorCampo = param.Porcoes.ToString()
         });;
     }
     else
     {
         result.CabecalhoDoRelatorio.Add(new CardapioReportResultValorCabecalhoViewModel
         {
             NomeCampo  = _localizer["Cardápio"].Value,
             ValorCampo = nomeCardapio
         });
         result.CabecalhoDoRelatorio.Add(new CardapioReportResultValorCabecalhoViewModel
         {
             NomeCampo  = _localizer["Intervalo de semanas"].Value,
             ValorCampo = nomeIntervaloSemanas
         });
         result.CabecalhoDoRelatorio.Add(new CardapioReportResultValorCabecalhoViewModel
         {
             NomeCampo  = _localizer["Intervalo de itens"].Value,
             ValorCampo = nomeIntervaloItens
         });
     }
 }
        private ActionResult GerarRelatorio(CardapioReportParamsViewModel param)
        {
            var relNome = param.Titulo == string.Empty ? _localizer["Lista de Ingredientes"].Value :
                          param.Titulo;

            try
            {
                /*
                 * param.Titulo = relNome;
                 * param.Subtitulo = _localizer["Por categoria, totalizando todas as receitas"].Value;
                 */

                var result = _appReportService.Execute(param);

                if (result != null)
                {
                    return(Ok(result));
                }

                return(NoContent());
            }
            catch (Exception e)
            {
                return(BadRequest(new
                {
                    Mensagem = _localizer["Ocorreu um erro ao gerar relatório \"{0}\".{1}",
                                          relNome, e.Message].Value
                }));
            }
        }
 public ItemParaComputarIngrediente(IServiceBase <Receita> receitaService,
                                    CardapioReportParamsViewModel param)
 {
     Ocorrencias       = new List <ItemOcorrenciaParaComputarIngrediente>();
     ItensDemostrativo = new List <string>();
     _receitaService   = receitaService;
     _param            = param;
 }
Beispiel #4
0
        private CardapioReportResultViewModel Execute(Guid cardapioId)
        {
            var relNome = "Lista de Ingredientes";

            var param = new CardapioReportParamsViewModel();

            param.CardapioId = cardapioId;

            param.Titulo    = relNome;
            param.Subtitulo = _localizer["Por categoria, totalizando todas as receitas"].Value;

            var result = _appReportService.Execute(param);

            return(result);
        }
        public ActionResult GetReportById(Guid id)
        {
            var relNome = _localizer["Lista de Ingredientes"].Value;
            var param   = new CardapioReportParamsViewModel();

            param.CardapioId = id;
            param.Titulo     = relNome;
            param.Subtitulo  = _localizer["Por categoria, totalizando todas as receitas"].Value;
            return(GerarRelatorio(param));

            /*
             * var result = _appReportService.Execute(param);
             *
             * if (result != null)
             *  return Ok(result);
             *
             * return NoContent();
             */
        }
        public CardapioReportResultViewModel Execute(CardapioReportParamsViewModel param)
        {
            _param = param;
            var result = new CardapioReportResultViewModel();

            result.Parametros = param;
            result.Titulo     = param.Titulo;
            result.Subtitulo  = param.Subtitulo;

            Guid id = param.CardapioId ?? Guid.Empty;

            var nomeCardapio         = _localizer["Nenhum cardápio definido"].Value;
            var nomeIntervaloSemanas = _localizer["Nenhum intervalo selecionado"].Value;
            var nomeIntervaloItens   = nomeIntervaloSemanas;

            var             listaReceitasSemCardapio = string.Empty;
            IList <Receita> listaReceitas            = new List <Receita>();

            List <ItemParaComputarIngrediente> lista = null;

            Cardapio c = null;

            if (id != Guid.Empty)
            {
                c = _service.GetById(id);
            }

            if (param.ListaReceitas != null && param.ListaReceitas.Count > 0)
            {
                foreach (var sid in param.ListaReceitas)
                {
                    Guid idrec;
                    if (Guid.TryParse(sid, out idrec))
                    {
                        var rec = _receitaService.GetById(idrec);
                        if (listaReceitasSemCardapio != string.Empty)
                        {
                            listaReceitasSemCardapio += ", ";
                        }
                        listaReceitasSemCardapio += rec.Nome;

                        listaReceitas.Add(rec);
                    }
                }

                lista = ObterDadosAgrupadosListaReceitas(listaReceitas, param.Porcoes);
            }
            else if (c != null)
            {
                nomeCardapio = c.Nome;
                lista        = ObterDadosAgrupados(id);
            }

            ConfigurarCabecalho(param, result, nomeCardapio, nomeIntervaloSemanas,
                                nomeIntervaloItens, listaReceitasSemCardapio);

            if (lista == null)
            {
                return(result);
            }

            //percorre somando
            foreach (var ocor in lista)
            {
                if (param.MostrarDetalhesDoCalculo)
                {
                    foreach (var o in ocor.Ocorrencias)
                    {
                        //aqui
                        //o.gerarTextoDetalhe
                    }
                }


                //var SomaReceitaQuantidades = ocor.Ocorrencias.Select(p => p.ReceitaQuantidade).ToList().Sum();
                var SomaItensCardapioQuantidades = ocor.Ocorrencias.Select(p => p.ItemCardapioQuantidade).ToList().Sum();

                ocor.QuantidadeTotal = SomaItensCardapioQuantidades;
            }

            // Ordena por categoria para agrupar
            var ordenada = lista.OrderBy(p => p.NomeCategoria).ToList();

            //Novo cabeçalho para cada mudança de categoria
            string cat = "indefinida";             // deixar em branco dá problema se vir assim também dos dados
            int    qtd = 0;
            CardapioReportResultGruposDeRegistrosViewModel grupo = null;

            foreach (var ocor in ordenada)
            {
                if (grupo == null || cat != ocor.NomeCategoria)
                {
                    if (grupo != null)
                    {
                        grupo.RodapeDoGrupo.Add(new CardapioReportResultValorCabecalhoViewModel
                        {
                            NomeCampo = _localizer["Contador"].Value, ValorCampo = qtd.ToString()
                        });
                    }

                    grupo = new CardapioReportResultGruposDeRegistrosViewModel();
                    result.Dados.Add(grupo);

                    grupo.CabecalhoDoGrupo.Add(new CardapioReportResultValorCabecalhoViewModel
                    {
                        NomeCampo = "", ValorCampo = ocor.NomeCategoria
                    });

                    grupo.Registros.TitulosColunas.Add(_localizer["Item"].Value);
                    grupo.Registros.TitulosColunas.Add(_localizer["Ingrediente"].Value);
                    grupo.Registros.TitulosColunas.Add(_localizer["Quantidade"].Value);
                    grupo.Registros.TitulosColunas.Add(_localizer["Unidade"].Value);

                    grupo.Registros.NomesColunas.Add("item");
                    grupo.Registros.NomesColunas.Add("ing");
                    grupo.Registros.NomesColunas.Add("count");
                    grupo.Registros.NomesColunas.Add("unit");

                    if (_param.MostrarDetalhesDoCalculo)
                    {
                        grupo.Registros.TitulosColunas.Add(_localizer["Informação Adicional"].Value);
                        grupo.Registros.NomesColunas.Add("infoadic");
                    }

                    qtd = 0;
                    cat = ocor.NomeCategoria;
                }

                if (grupo != null)
                {
                    qtd++;
                    var qtdTotal = Math.Round(ocor.QuantidadeTotal, 1, MidpointRounding.ToEven);

                    var sreg = $"\"item={qtd}\",\"ing={ocor.NomeIngrediente}\",\"count={qtdTotal}\",\"unit={ocor.NomeUnidadeMedida}\"";
                    if (_param.MostrarDetalhesDoCalculo)
                    {
                        var texto = string.Join("|||", ocor.ItensDemostrativo);
                        sreg = $"{sreg},\"infoadic={texto}\"";
                    }
                    grupo.Registros.CommaTextRegisters.Add(sreg);
                }
            }

            if (grupo != null)
            {
                grupo.RodapeDoGrupo.Add(new CardapioReportResultValorCabecalhoViewModel
                {
                    NomeCampo = _localizer["Contador"].Value, ValorCampo = qtd.ToString()
                });
            }


            return(result);
        }
 public ActionResult GetReportById(CardapioReportParamsViewModel param)
 {
     return(GerarRelatorio(param));
 }