public async Task <IActionResult> CreateDeliver(int?id) { if (id == null) { return(NotFound()); } var order = await _context.Orders.Include(o => o.Customer).FirstOrDefaultAsync(o => o.Id == id); if (order == null || order.OrderStatusId != 9) { return(NotFound()); } var orderDetails = _context.OrderDetails.Where(o => o.OrderId == order.Id).Include(o => o.Product); IList <OrderDetails> orderDetailsList = await orderDetails.ToListAsync(); IList <CreateDeliverViewModel> deliver = new List <CreateDeliverViewModel>(); for (int i = 0; i < orderDetailsList.Count; i++) { CreateDeliverViewModel temp = new CreateDeliverViewModel(); temp.productId = orderDetailsList[i].ProductId; temp.productName = orderDetailsList[i].Product.Name; temp.OrderId = orderDetailsList[i].OrderId; deliver.Add(temp); } ViewBag.Cars = new SelectList(_context.Cars, "Id", "RegistrationPlate"); ViewBag.Order = order.Id; ViewBag.customer = order.Customer.Company; return(View(deliver)); }
public async Task <IActionResult> CreateDeliver(int?id, IEnumerable <CreateDeliverViewModel> deliverRecived) { if (id == null) { return(NotFound()); } var order = await _context.Orders.Include(o => o.Customer).FirstOrDefaultAsync(o => o.Id == id); if (order == null || order.OrderStatusId != 9) { return(NotFound()); } var orderDetails = _context.OrderDetails.Where(o => o.OrderId == order.Id).Include(o => o.Product); DateTime currentDate = DateTime.Now.Date; bool errorFound = false; int carid = 0; DateTime?shippingDate = null; foreach (var item in deliverRecived) { if (item.ExpDate < currentDate) { errorFound = true; ViewBag.error = "Date must be from future"; } if (item.CarId != null) { carid = (int)item.CarId; } if (item.ShippingDate != null) { shippingDate = item.ShippingDate; } OrderDetails ord = await _context.OrderDetails.FirstOrDefaultAsync(o => o.OrderId == order.Id && o.ProductId == item.productId); ord.ExpDate = item.ExpDate; try { _context.Update(ord); await _context.SaveChangesAsync(); } catch { return(NotFound()); } } if (carid == 0) { errorFound = true; ViewBag.carError = "Select a car"; } if (shippingDate == null || shippingDate <= currentDate) { errorFound = true; ViewBag.shippingEroor = "Shipping date must be from future"; } if (errorFound) { IList <OrderDetails> orderDetailsList = await orderDetails.ToListAsync(); IList <CreateDeliverViewModel> deliver = new List <CreateDeliverViewModel>(); for (int i = 0; i < orderDetailsList.Count; i++) { CreateDeliverViewModel temp = new CreateDeliverViewModel(); temp.productId = orderDetailsList[i].ProductId; temp.productName = orderDetailsList[i].Product.Name; temp.OrderId = orderDetailsList[i].OrderId; deliver.Add(temp); } ViewBag.Cars = new SelectList(_context.Cars, "Id", "RegistrationPlate"); ViewBag.Order = order.Id; ViewBag.customer = order.Customer.Company; return(View(deliver)); } Delivers newDeliver = new Delivers(); newDeliver.OrderId = order.Id; var employee = await GetEmployeeByUserIdAsync(); newDeliver.EmployeeId = employee.Id; newDeliver.CustomerId = (int)order.CustomerId; newDeliver.CarId = carid; newDeliver.StatusDeliverId = 1; _context.Add(newDeliver); await _context.SaveChangesAsync(); foreach (var item in orderDetails) { DeliverDetails temp = new DeliverDetails(); temp.ProductId = item.ProductId; temp.Quantity = item.Quantity; temp.DeliverId = newDeliver.Id; _context.Add(temp); } order.ShippingDate = shippingDate; order.OrderStatusId = 14; try { _context.Update(order); await _context.SaveChangesAsync(); } catch { return(NotFound()); } return(RedirectToAction("index", "Delivers")); }