Esempio n. 1
0
 public void CreateProcedure(ProcedureView PV, int [] procedureitems)
 {
     procedure.ProcedureItem = new List <ProcedureItem>();
     foreach (var item in procedureitems)
     {
         var proceduretoadd = procedureItemRepository.GetById(item);
         procedure.procedurePrice += proceduretoadd.price;
         procedure.ProcedureItem.Add(proceduretoadd);
     }
     procedureRepository.Insert(procedure);
 }
        public void Insert(Procedure procedure)
        {
            ProductService productService = new ProductService();

            if (procedure == null)
            {
                throw new Exception("O procedimento não pode ser nulo");
            }

            if (procedure.Data == null || procedure.Data == DateTime.MinValue)
            {
                throw new Exception("Informe a data do procedimento");
            }
            if (procedure.Animal == null)
            {
                throw new Exception("Selecione um animal");
            }

            if (procedure.Services.Vet != "Não")
            {
                if (string.IsNullOrEmpty(procedure.Voluntary.CRM) || procedure.Voluntary.Function.Procedure == "Não")
                {
                    throw new Exception("Este serviço só deve ser realizado por um profissional. Necessário CRM e marcação na função.");
                }
            }

            if (procedure.Products == null || procedure.Services == null)
            {
                throw new Exception("Selecione um produto ou um serviço ao procedimento");
            }

            procedureRepository.Insert(procedure);

            //atualiza o estoque
            foreach (Product produtoDoProcedimento in procedure.Products.ToList())
            {
                Product product = productService.GetById(produtoDoProcedimento.Id);

                if (product != null)
                {
                    product.Quantity = produtoDoProcedimento.Quantity + produtoDoProcedimento.QuantBuy;
                    product.Note     = product.Note + Environment.NewLine + " Quantidade atualizada para "
                                       + product.Quantity + " atraves do procedimento " + procedure.Id;

                    productService.Update(product);
                }
            }
        }