示例#1
0
        private async Task <Validar> ValidarAgregacao(Produto pBase, ItemDTO item)
        {
            Agregacao a = await _agregacao_repo.GetByProducts(pBase.ProdutoID, item.Produto_id);

            if (a == null)
            {
                return(Validar.Invalido);
            }
            Produto pParte = new Produto(item);
            bool    valido = true;

            foreach (Restricao r in a.Restricoes)
            {
                switch (r.TipoRestricao)
                {
                case TipoRestricao.Caber:
                case TipoRestricao.Material:
                case TipoRestricao.Ocupacao:
                    valido &= r.Validar(pBase, pParte);
                    break;

                default:
                    break;
                }
            }
            if (valido)
            {
                return(Validar.Valido);
            }
            return(Validar.Invalido);
        }
示例#2
0
 public async Task AgregarProdutos(Produto p, List <int> IDPartes)
 {
     foreach (int i in IDPartes)
     {
         Produto pParte = _produtorepo.GetById(i).Result;
         if (pParte != null)
         {
             Agregacao a = new Agregacao(p, pParte);
             if (a.Validar())
             {
                 await _agregacaorepo.Create(a);
             }
         }
     }
 }
示例#3
0
        public async Task <IActionResult> Create([FromBody] AgregacaoCriarDTO agregacaodto)
        {
            var pBase = await _produtoRepository.GetById(agregacaodto.Base);

            var pParte = await _produtoRepository.GetById(agregacaodto.Parte);

            if (pBase == null || pParte == null)
            {
                return(NotFound());
            }

            Agregacao a = new Agregacao(pBase, pParte);
            await _agregacaoRepository.Create(a);

            var dto = _mapper.Map <Agregacao, AgregacaoDTO>(a);

            return(Created("Agregacao Criada", dto));
        }
示例#4
0
        public async Task <IActionResult> RemoverRestricao(int id, int idrestricao)
        {
            if (!await _agregacaoRepository.Exists(id))
            {
                return(NotFound());
            }
            Agregacao entity = await _agregacaoRepository.GetById(id);

            if (!entity.removerRestricao(idrestricao))
            {
                return(BadRequest());
            }
            await _agregacaoRepository.Update(id, entity);

            var dto = _mapper.Map <Agregacao, AgregacaoDTO>(entity);

            return(Ok(dto));
        }
示例#5
0
        public async Task <IActionResult> AdicionarRestricao(int id, [FromBody] NovaRestricaoDTO novaRestricao)
        {
            if (!RestricaoFactory.Valid(novaRestricao.Restricao))
            {
                return(BadRequest());
            }
            if (!await _agregacaoRepository.Exists(id))
            {
                return(NotFound());
            }
            Agregacao entity = await _agregacaoRepository.GetById(id);

            if (entity.adicionarRestricao(novaRestricao))
            {
                await _agregacaoRepository.Update(id, entity);

                var dto = _mapper.Map <Agregacao, AgregacaoDTO>(entity);
                return(Ok(dto));
            }
            return(BadRequest());
        }
示例#6
0
        public static void Initialize(ClosifyContext context)
        {
            if (context.Categorias.Any())
            {
                return;
            }

            Categoria[] categorias =
            {
                new Categoria {
                    Nome = "Armário"
                },
                new Categoria {
                    Nome = "Módulo Gavetas"
                },
                new Categoria {
                    Nome = "Gavetas"
                },
                new Categoria {
                    Nome = "Portas"
                },
                new Categoria {
                    Nome = "Cabide"
                },
                new Categoria
                {
                    Nome = "Espelhos"
                }
            };

            context.Categorias.AddRange(categorias);
            context.SaveChanges();
            Categoria[] subCategorias =
            {
                new Categoria {
                    Nome           = "Armário de Sala",
                    SuperCategoria = categorias[0],
                    SuperCatID     = categorias[0].CategoriaID
                },
                new Categoria {
                    Nome           = "Armário de Jardim",
                    SuperCategoria = categorias[0],
                    SuperCatID     = categorias[0].CategoriaID
                }
            };
            categorias[0].AdicionarSubCategoria(subCategorias[0]);
            categorias[0].AdicionarSubCategoria(subCategorias[1]);
            //context.Categorias.AddRange(subCategorias);
            context.SaveChanges();


            Acabamento[] acabamentos =
            {
                new Acabamento("Natural")
                ,
                new Acabamento("Polido")
                ,
                new Acabamento("Envernizado")
                ,
                new Acabamento("Anodizado")
            };

            Material[] materiais =
            {
                new Material("Madeira"),
                new Material("Aluminio"),
                new Material("MDF"),
            };

            context.Materiais.AddRange(materiais);

            context.SaveChanges();

            context.Acabamentos.AddRange(acabamentos);

            context.SaveChanges();


            MaterialAcabamento[] madeiraAcabamentos =
            {
                new MaterialAcabamento(materiais[0], acabamentos[0]), //Madeira Natural
                new MaterialAcabamento(materiais[0], acabamentos[1]), //Madeira Polido
                new MaterialAcabamento(materiais[0], acabamentos[2])  //Madeira Envernizado
            };

            MaterialAcabamento[] aluminioAcabamentos =
            {
                new MaterialAcabamento(materiais[1], acabamentos[3])//Aluminio Anodizado
            };

            MaterialAcabamento[] mdfAcabamentos =
            {
                new MaterialAcabamento(materiais[2], acabamentos[0]), //MDF Natural
                new MaterialAcabamento(materiais[2], acabamentos[1]), //MDF Polido
                new MaterialAcabamento(materiais[2], acabamentos[2])  //MDF Envernizado
            };

            DimensaoDTO dimensaodto = new DimensaoDTO
            {
                TipoAltura      = "discreto",
                TipoComprimento = "discreto",
                TipoLargura     = "continuo",
                Altura          = new List <double> {
                    100, 200
                },
                Comprimento = new List <double> {
                    20, 30, 40
                },
                Largura = new List <double> {
                    10, 20
                }
            };
            Dimensao d = new Dimensao(dimensaodto);

            //Armario
            Produto armario1 = new Produto
            {
                Nome      = "Armário Xpto",
                Categoria = subCategorias[0],
                Dimensao  = d,
            };

            foreach (MaterialAcabamento ma in madeiraAcabamentos)
            {
                armario1.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in aluminioAcabamentos)
            {
                armario1.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                armario1.AddMaterialAcabamento(ma);
            }
            context.Produtos.Add(armario1);
            context.SaveChanges();

            //Criar Porta
            DimensaoDTO dporta = new DimensaoDTO
            {
                TipoAltura      = "continuo",
                TipoComprimento = "continuo",
                TipoLargura     = "continuo",
                Altura          = new List <double> {
                    1, 200
                },
                Comprimento = new List <double> {
                    1, 400
                },
                Largura = new List <double> {
                    1, 100
                }
            };

            Produto porta = new Produto
            {
                Nome      = "Porta 1",
                Categoria = categorias[3],
                Dimensao  = new Dimensao(dporta)
            };

            context.Produtos.Add(porta);
            context.SaveChanges();
            foreach (MaterialAcabamento ma in madeiraAcabamentos)
            {
                porta.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                porta.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in aluminioAcabamentos)
            {
                porta.AddMaterialAcabamento(ma);
            }
            context.SaveChanges();

            Agregacao a2 = new Agregacao(armario1, porta);

            a2.Restricoes.Add(RestricaoFactory.RestricaoObrigatoria());
            a2.Restricoes.Add(RestricaoFactory.RestricaoMaterial());
            if (a2.Validar())
            {
                context.Agregacoes.Add(a2);
                context.SaveChanges();
            }
            else
            {
                throw new ArgumentException("Erro ao fazer a agregação");
            }

            DimensaoDTO dmodulogavetas = new DimensaoDTO
            {
                TipoAltura      = "continuo",
                TipoComprimento = "continuo",
                TipoLargura     = "continuo",
                Altura          = new List <double> {
                    10, 100
                },
                Comprimento = new List <double> {
                    20, 100
                },
                Largura = new List <double> {
                    5, 40
                }
            };

            Produto moduloGavetas = new Produto
            {
                Nome      = "Modulo Gavetas 1",
                Categoria = categorias[1],
                Dimensao  = new Dimensao(dmodulogavetas)
            };

            context.Produtos.Add(moduloGavetas);
            foreach (MaterialAcabamento ma in madeiraAcabamentos)
            {
                moduloGavetas.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                moduloGavetas.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in aluminioAcabamentos)
            {
                moduloGavetas.AddMaterialAcabamento(ma);
            }
            context.SaveChanges();

            Agregacao armario1_modulogavetas = new Agregacao(armario1, moduloGavetas);

            context.Agregacoes.Add(armario1_modulogavetas);
            context.SaveChanges();

            DimensaoDTO dto_gaveta = new DimensaoDTO
            {
                TipoAltura      = "discreto",
                TipoComprimento = "discreto",
                TipoLargura     = "discreto",
                Altura          = new List <double> {
                    10, 20
                },
                Comprimento = new List <double> {
                    20, 30, 40
                },
                Largura = new List <double> {
                    5
                }
            };
            Dimensao d_gaveta = new Dimensao(dto_gaveta);

            //Gaveta
            Produto gaveta = new Produto
            {
                Nome      = "Gaveta 1",
                Categoria = categorias[1],
                Dimensao  = d_gaveta,
            };

            foreach (MaterialAcabamento ma in madeiraAcabamentos)
            {
                gaveta.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                gaveta.AddMaterialAcabamento(ma);
            }

            context.Produtos.Add(gaveta);
            context.SaveChanges();

            Agregacao a1 = new Agregacao(moduloGavetas, gaveta);

            a1.Restricoes.Add(RestricaoFactory.RestricaoObrigatoria());
            context.Agregacoes.Add(a1);

            DimensaoDTO dtodim_gaveta2 = new DimensaoDTO
            {
                TipoAltura      = "discreto",
                TipoComprimento = "discreto",
                TipoLargura     = "discreto",
                Altura          = new List <double> {
                    10, 20, 30
                },
                Comprimento = new List <double> {
                    20, 30, 40
                },
                Largura = new List <double> {
                    5, 10, 15, 20
                }
            };

            Produto gaveta2 = new Produto
            {
                Nome      = "Gaveta 2",
                Categoria = categorias[1],
                Dimensao  = new Dimensao(dtodim_gaveta2)
            };

            foreach (MaterialAcabamento ma in madeiraAcabamentos)
            {
                gaveta2.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                gaveta2.AddMaterialAcabamento(ma);
            }

            context.Produtos.Add(gaveta2);
            context.SaveChanges();

            Agregacao a3 = new Agregacao(moduloGavetas, gaveta2);

            a3.Restricoes.Add(RestricaoFactory.RestricaoOpcional());
            if (a3.Validar())
            {
                context.Agregacoes.Add(a3);
                context.SaveChanges();
            }
            else
            {
                throw new ArgumentException("Erro ao fazer a agregação a3");
            }
            context.SaveChanges();

            DimensaoDTO dcabide = new DimensaoDTO
            {
                TipoAltura      = "continuo",
                TipoComprimento = "continuo",
                TipoLargura     = "continuo",
                Altura          = new List <double> {
                    1, 200
                },
                Comprimento = new List <double> {
                    1, 400
                },
                Largura = new List <double> {
                    1, 100
                }
            };
            Produto cabide = new Produto
            {
                Nome      = "Cabide 1",
                Categoria = categorias[4],
                Dimensao  = new Dimensao(dcabide)
            };

            foreach (MaterialAcabamento ma in madeiraAcabamentos)
            {
                cabide.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                cabide.AddMaterialAcabamento(ma);
            }
            foreach (MaterialAcabamento ma in aluminioAcabamentos)
            {
                cabide.AddMaterialAcabamento(ma);
            }

            context.Produtos.Add(cabide);
            context.SaveChanges();

            DimensaoDTO darmario2 = new DimensaoDTO
            {
                TipoAltura      = "continuo",
                TipoComprimento = "discreto",
                TipoLargura     = "discreto",
                Altura          = new List <double> {
                    50, 200
                },
                Comprimento = new List <double> {
                    20, 30, 40
                },
                Largura = new List <double> {
                    10, 20, 30, 40
                }
            };

            Produto armario2 = new Produto
            {
                Nome      = "Armario 2",
                Categoria = categorias[1],
                Dimensao  = new Dimensao(darmario2)
            };

            context.Produtos.Add(armario2);
            context.SaveChanges();
            foreach (MaterialAcabamento ma in mdfAcabamentos)
            {
                armario2.AddMaterialAcabamento(ma);
            }


            Agregacao armario2_modulogavetas = new Agregacao(armario2, moduloGavetas);

            armario2_modulogavetas.Restricoes.Add(RestricaoFactory.RestricaoOpcional());
            if (armario2_modulogavetas.Validar())
            {
                context.Agregacoes.Add(armario2_modulogavetas);
                context.SaveChanges();
            }
            else
            {
                throw new ArgumentException("Erro ao fazer a agregação armario2_modulogavetas");
            }
            Agregacao armario2_cabide = new Agregacao(armario2, cabide);

            armario2_cabide.Restricoes.Add(RestricaoFactory.RestricaoObrigatoria());

            if (armario2_cabide.Validar())
            {
                context.Agregacoes.Add(armario2_cabide);
                context.SaveChanges();
            }
            else
            {
                throw new ArgumentException("Erro ao fazer a agregação armario2_cabide");
            }

            Agregacao armario2_porta = new Agregacao(armario2, porta);

            armario2_porta.Restricoes.Add(RestricaoFactory.RestricaoMaterial());

            if (armario2_porta.Validar())
            {
                context.Agregacoes.Add(armario2_porta);
                context.SaveChanges();
            }
            else
            {
                throw new ArgumentException("Erro ao fazer a agregação armario2_porta");
            }

            DimensaoDTO dimEspelho = new DimensaoDTO
            {
                TipoAltura      = "continuo",
                TipoComprimento = "continuo",
                TipoLargura     = "discreto",
                Altura          = new List <double> {
                    20, 120
                },
                Comprimento = new List <double> {
                    10, 20
                },
                Largura = new List <double> {
                    8
                }
            };

            Produto espelho1 = new Produto
            {
                Nome      = "Espelho",
                Categoria = categorias[5],
                Dimensao  = new Dimensao(dimEspelho)
            };

            foreach (MaterialAcabamento ma in aluminioAcabamentos)
            {
                espelho1.AddMaterialAcabamento(ma);
            }
            context.Produtos.Add(espelho1);
            context.SaveChanges();

            Agregacao            armario_espelho = new Agregacao(armario1, espelho1);
            RestricaoOcupacaoDTO restOcupacao    = new RestricaoOcupacaoDTO
            {
                AlturaMin = 0,
                AlturaMax = 0.50f/*,
                                  * ComprimentoMin = 0,
                                  * ComprimentoMax = 0.50f,
                                  * LarguraMin = 0,
                                  * LarguraMax = 0.50f */
            };

            armario_espelho.Restricoes.Add(RestricaoFactory.RestricaoOcupacao(restOcupacao));
            if (armario_espelho.Validar())
            {
                context.Agregacoes.Add(armario_espelho);
                context.SaveChanges();
            }
            else
            {
                throw new ArgumentException("Erro ao fazer a agregação armario_espelho");
            }
        }