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 static void Assert_SemIntervalosDefinidos(CardapioReportResultViewModel result) { Assert.Equal("Intervalo de semanas", result.CabecalhoDoRelatorio[1].NomeCampo); Assert.Equal("Nenhum intervalo selecionado", result.CabecalhoDoRelatorio[1].ValorCampo); Assert.Equal("Intervalo de itens", result.CabecalhoDoRelatorio[2].NomeCampo); Assert.Equal("Nenhum intervalo selecionado", result.CabecalhoDoRelatorio[2].ValorCampo); }
public void TestExecute_Somando_1_Ing_n_Semanas_Proporcao_Quantidade(int porcoes, int semanas, int diasdaSemana, double qtdEsperada) { Guid id = Guid.NewGuid(); var unidadeMedida = new UnidadeMedida { Id = Guid.NewGuid(), Nome = "Kilograma" }; var c = AdicionarCardapio(id, $"Cardapio teste 1 ing {semanas} semana(s), {diasdaSemana} dias (por semana)"); var catIng = AdicionarCategoria("Ingredientes", AdicionarCategoria("Cat pai", null)); Ingrediente i = AdicionarIngrediente(Guid.NewGuid(), "ing. único", catIng); var receitaId = Guid.NewGuid(); ItemListaIngredientes ili = AdicionarItemListaIngredientes(unidadeMedida, i, receitaId, "20 kilograma de ing. único", Guid.NewGuid(), 20.0); var r = AdicionarReceita(receitaId, "receita única", 2, new List <ItemListaIngredientes>() { ili }); ili.Receita = r; for (int semana = 1; semana <= semanas; semana++) { for (int diaDaSemana = 0; diaDaSemana < diasdaSemana; diaDaSemana++) { ItemCardapio ic = AdicionarItemCardapio(porcoes, cardapioId: id, semana, diaDaSemana); AdicionarItemCardapioReceita(r, ic); c.Itens.Add(ic); } } CardapioReportResultViewModel result = Execute(id); Assert.Equal("Cardápio", result.CabecalhoDoRelatorio[0].NomeCampo); Assert.Equal(c.Nome, result.CabecalhoDoRelatorio[0].ValorCampo); Assert_SemIntervalosDefinidos(result); Assert.Equal(1, result.Dados.Count); Assert.Equal(1, result.Dados[0].CabecalhoDoGrupo.Count); Assert_CabDados(result, 0, 0, "", "Cat pai -> Ingredientes"); Assert_RodapeDados(result, 0, 0, "Contador", "1"); Assert.Equal(1, result.Dados[0].Registros.CommaTextRegisters.Count); Asssert_RegistrosDados(result, indiceDados: 0, indiceRegistro: 0, numeroItem: 1, "ing. único", quantidade: qtdEsperada, "Kilograma"); }
public void TestExecute_Sem_Dados() { Guid id = Guid.NewGuid(); CardapioReportResultViewModel result = Execute(id); Assert.Equal("Cardápio", result.CabecalhoDoRelatorio[0].NomeCampo); Assert.Equal("Nenhum cardápio definido", result.CabecalhoDoRelatorio[0].ValorCampo); Assert_SemIntervalosDefinidos(result); Assert.Equal(0, result.Dados.Count); }
public void TestExecute_Apenas_Receita() { Guid id = Guid.NewGuid(); AdicionarCardapio(id, "Cardapio teste sem ingredientes"); CardapioReportResultViewModel result = Execute(id); Assert.Equal("Cardápio", result.CabecalhoDoRelatorio[0].NomeCampo); Assert.Equal("Cardapio teste sem ingredientes", result.CabecalhoDoRelatorio[0].ValorCampo); Assert_SemIntervalosDefinidos(result); Assert.Equal(0, result.Dados.Count); }
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); }
private static void Assert_CabDados(CardapioReportResultViewModel result, int indiceDados, int indiceCab, string nomeEsperado, string valorEsperado) { Assert.Equal(nomeEsperado, result.Dados[indiceDados].CabecalhoDoGrupo[indiceCab].NomeCampo); Assert.Equal(valorEsperado, result.Dados[indiceDados].CabecalhoDoGrupo[indiceCab].ValorCampo); }
private static void Asssert_RegistrosDados(CardapioReportResultViewModel result, int indiceDados, int indiceRegistro, int numeroItem, string nomeIng, double quantidade, string nomeUnidade) { var valorEsperado = $"\"item={numeroItem}\",\"ing={nomeIng}\",\"count={quantidade}\",\"unit={nomeUnidade}\""; Assert.Equal(valorEsperado, result.Dados[indiceDados].Registros.CommaTextRegisters[indiceRegistro]); }