public List <ValorPorComodo> ObterValoresPorComodoEItens(List <Item> itens, Comodo comodo) { var retorno = new List <ValorPorComodo>(); foreach (var item in itens) { var valorPorComodo = new ValorPorComodo(); valorPorComodo.EfetuarCalculo(item, comodo); retorno.Add(valorPorComodo); } return(retorno); }
public void EfetuarCalculo(Item item, Comodo comodo) { try { if (item.ObterComprimento() == 0 || item.ObterLargura() == 0) { return; } Item = item; Comodo = comodo; QuantidadeX = (int)comodo.Comprimento / (int)item.ObterComprimento(); QuantidadeY = (int)comodo.Largura / (int)item.ObterLargura(); var restoX = comodo.Comprimento - (QuantidadeX * item.ObterComprimento()); var restoY = comodo.Largura - (QuantidadeY * item.ObterLargura()); if (item.TipoCalculo == TipoCalculo.Quantidade) { if ((item.Comprimento / 2) <= restoX) { QuantidadeX++; } if ((item.Largura / 2) <= restoY) { QuantidadeY++; } } else if (item.TipoCalculo == TipoCalculo.SentidoUnico) { bool comprimentoMenor = item.Comprimento < item.Largura; if ((item.Comprimento / 2) <= restoX && comprimentoMenor) { QuantidadeX++; } if ((item.Largura / 2) <= restoY && !comprimentoMenor) { QuantidadeY++; } if (comprimentoMenor) { Recortes = ObterRecortes().Where(x => x.Posicao == Posicao.Largura).ToList(); //.Where(x => x.ObterMaiorTamanho() != item.ObterMaiorLado()).ToList(); } else { Recortes = ObterRecortes().Where(x => x.Posicao == Posicao.Comprimento).ToList(); //.Where(x => x.ObterMaiorTamanho() != item.ObterMaiorLado()).ToList(); } // InfoAdicional = QuantidadeX > QuantidadeY ? comodo.Comprimento : comodo.Largura; } else if (item.TipoCalculo == TipoCalculo.Area) { Recortes = ObterRecortes(); } QuantidadeItens = QuantidadeX * QuantidadeY; } catch (Exception ex) { throw ex; } }