示例#1
0
        public void Put(Guid id, [FromBody] Proporsal value)
        {
            Proporsal proporsal = _repository.Find(id);

            if (proporsal != null)
            {
                proporsal.Copy(value);
                _repository.Update(proporsal);
                _repository.SaveAll();
            }
        }
示例#2
0
        public static Price ProcessProposal(Proporsal proporsal)
        {
            //Calcula cotações
            foreach (Price p in proporsal.Prices)
            {
                foreach (ProductQuotation productQuotation in p.ProductQuotations)
                {
                    p.TotalPrice += productQuotation.Amount * productQuotation.Product.UnitPrice;
                }
            }

            //retorna a cotação de menor valor
            Price price = proporsal.Prices.OrderBy(p => p.TotalPrice).First();

            return(price);
        }
示例#3
0
        public IActionResult Post([FromBody] Proporsal proporsal)
        {
            if (proporsal?.Prices?.Count >= 3)
            {
                _repository.Add(proporsal);
                _repository.SaveAll();

                //Pega melhor cotação e efetua compra
                Price       price       = MakePurchaseService.ProcessProposal(proporsal);
                SupplyOrder supplyOrder = MakePurchaseService.CreateSupplyOrder(price);

                //Ordem de compra sem aprovação (para aprovar é necessário uma ação manual)
                _supplyRepository.Add(supplyOrder);
                _supplyRepository.SaveAll();

                return(Ok());
            }

            return(BadRequest(new { error = "Você não atende o minimo de cotações" }));
        }