public void Put(Guid id, [FromBody] Proporsal value) { Proporsal proporsal = _repository.Find(id); if (proporsal != null) { proporsal.Copy(value); _repository.Update(proporsal); _repository.SaveAll(); } }
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); }
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" })); }