Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }