public async Task <OrderCreateViewModel> AddCancellations(OrderCreateViewModel model) { var order = new Order { isOrder = false, report_date = model.reportDate, shop_id = model.shopId }; order.OrderDetails = model.products.Select(p => new OrderDetail { prod_id = p.id, cost = costRepo.GetByProdId(p.id).FirstOrDefault() != null && costRepo.GetByProdId(p.id).FirstOrDefault().value.HasValue ? costRepo.GetByProdId(p.id).FirstOrDefault().value.Value : 0, count = p.count }).ToList(); var id = 0; try { id = await ordersRepo.AddCancellationAsync(order); var orderDal = (await ordersRepo.GetCancellationsByShopIdInDateRange(order.shop_id, model.reportDate.AddSeconds(-1), model.reportDate)).Last(p => p.id == id); await strategy.UpdateAverageCost(Direction.Cancellation, orderDal); } catch (Exception) { throw new Exception("Добавление списания не удалось."); } model.id = id; return(model); }
public async Task MoveStocks(UserProfile user, StockMoveRequestViewModel model) { var dtNow = DateTime.Now; var order = new Order { isOrder = false, report_date = dtNow, shop_id = model.shopFrom }; order.OrderDetails = model.products.Select(p => new OrderDetail { prod_id = p.id, cost = 0, count = p.value }).ToList(); try { var id = await ordersRepo.AddCancellationAsync(order); var orderDal = (await ordersRepo.GetCancellationsByShopIdInDateRange(order.shop_id, dtNow.AddSeconds(-1), dtNow)).Last(p => p.id == id); foreach (var orderDetail in order.OrderDetails) { var cost = costRepo.GetByProdId(orderDetail.prod_id).FirstOrDefault(); orderDetail.cost = cost != null && cost.value.HasValue ? cost.value.Value : 0; } await strategy.UpdateAverageCost(Direction.Cancellation, orderDal); order.isOrder = true; order.shop_id = model.shopTo; id = await ordersRepo.AddCancellationAsync(order); orderDal = (await ordersRepo.GetCancellationsByShopIdInDateRange(order.shop_id, dtNow.AddSeconds(-1), dtNow)).Last(p => p.id == id); await strategy.UpdateAverageCost(Direction.Order, orderDal); } catch (Exception) { throw new Exception("Перемещение не удалось."); } }