public ProductBalanceDTO(ProductBalance pb) { Id = pb.Id; Name = pb.Medicament.Name; Price = pb.Medicament.CalculatePriceReimbursed(); Amount = pb.Amount; ExpirationDate = pb.ExpirationDate.Date.ToString("O"); }
public ProductBalanceDTO(ProductBalance pb) { Id = pb.Id; Name = pb.Medicament.Name; Price = pb.Price; Quantity = pb.Quantity; InSale = pb.InSale; }
public async Task <IActionResult> PlaceOrder(int id, IList <OrderRequestDTO> requestedProducts) { if (!IsValidApiRequest()) { return(ApiBadRequest("Invalid Headers!")); } if (!AreProductsValid(id, requestedProducts)) { return(ApiBadRequest("Invalid product requested!")); } var user = await GetCurrentUser(); var warehouse = await Context.Warehouse .Where(w => w.Id == id) .Include(w => w.Products) .FirstAsync(); var order = new Order(warehouse, user.Pharmacy.Address, user); var orderProducts = new List <ProductBalance>(); foreach (var requestedProduct in requestedProducts) { var product = GetProductInfoFromDto(requestedProduct); var warehouseBalance = await Context.ProductBalances .Where(pb => pb.Id == product.Id) .Include(pb => pb.Medicament) .Include(pb => pb.Provider) .FirstAsync(); var newBalance = new ProductBalance( warehouseBalance, requestedProduct.Quantity, warehouse, user.Pharmacy ); orderProducts.Add(newBalance); } order.Products = orderProducts; await Context.ProductBalances.AddRangeAsync(orderProducts); await Context.Order.AddAsync(order); await Context.SaveChangesAsync(); return(StatusCode(201)); }
private async Task Restock(Pharmacy pharmacy, RequiredMedicamentAmount requiredAmount, ProductBalance productInPharmacy) { var orderDto = await CreateOrderDTO(requiredAmount, productInPharmacy); try { await _ordersManager.TryCreateOrder(orderDto, pharmacy.Id); } catch (DuplicateObjectException ex) { var order = await Context.Orders .Where(o => o.Id == ex.Id) .Include(o => o.OrderProductBalances) .ThenInclude(opb => opb.ProductBalance) .FirstOrDefaultAsync(); order.UpdateFromDTO(await _ordersManager.CreateProductBalanceList(orderDto.Products)); await Context.SaveChangesAsync(); } }
public async Task <ActionResult <GetDataDTO <OrderRequestDTO> > > OrderToWarehouse(int id, IList <OrderRequestDTO> model) { if (!IsValidApiRequest()) { return(ApiBadRequest("Invalid Headers!")); } if (!AreProductsValid(id, model)) { return(ApiBadRequest("Invalid product requested!")); } var user = await GetCurrentUser(); await Context.Entry(user.Warehouse).Collection(w => w.Products).LoadAsync(); foreach (var requestProduct in model) { var product = GetProductInfoFromDto(requestProduct); if (AppendBalance(user.Warehouse.Products, product, requestProduct.Quantity)) { continue; } var providerBalance = await Context.ProductBalances .Where(pb => pb.Id == product.Id) .Include(pb => pb.Medicament) .Include(pb => pb.Provider) .FirstAsync(); var newBalance = new ProductBalance(providerBalance, requestProduct.Quantity, user.Warehouse); await Context.ProductBalances.AddAsync(newBalance); } await Context.SaveChangesAsync(); return(Ok()); }
private async Task <CreateOrderDTO> CreateOrderDTO(RequiredMedicamentAmount requiredAmount, ProductBalance productInPharmacy) { var warehouse = await Context.Warehouses .Where(w => w.Id == 1) .Include(w => w.Products) .FirstOrDefaultAsync(); var productsToOrder = new TransactionProductDTO { Amount = requiredAmount.Amount - productInPharmacy.Amount, ProductBalanceId = warehouse.GetProductId(productInPharmacy.MedicamentId) }; var orderDto = new CreateOrderDTO { WarehouseId = warehouse.Id, Products = new List <TransactionProductDTO> { productsToOrder } }; return(orderDto); }
private static bool IsRestockRequired(RequiredMedicamentAmount requiredAmount, ProductBalance productInPharmacy) { return(requiredAmount != null && requiredAmount.Amount > productInPharmacy.Amount); }
public ProductInfo(ProductBalance pb) { Id = pb.Id; MedicamentId = pb.Medicament.Id; Quantity = pb.Quantity; }
private void ShowProductBalance_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { ProductBalance pb = new ProductBalance(); pb.Show(); }
public OrderProductBalance(Order order, ProductBalance pb) { Order = order; ProductBalance = pb; }