public async Task <IActionResult> Order() { OrderViewModel orderViewModel; // Order view model OrderDetailViewModel orderDetailViewModel; // Order detail view model List <OrderDetailViewModel> orderDetailViewModels = new List <OrderDetailViewModel>(); // Order detail view model list List <Order> orders; // Order model list OrderStateViewModel orderStateViewModel = new OrderStateViewModel(); // View model List <OrderDetail> orderDetails = new List <OrderDetail>(); // Order detail model list ProductDetail productDetail; // Product detail model ProductDetailBasicViewModel productDetailBasicViewModel; // Product detail view model List <ProductDetailBasicViewModel> productDetailBasicViewModels = new List <ProductDetailBasicViewModel>(); // Product detail view model list // Get current user var user = await _userManager.GetUserAsync(User); if (user == null) { return(RedirectToAction("SignIn", "Login")); } // Get orders of user orders = orderService.GetOrders(user.Id); if (orders.Count > 0) { foreach (var order in orders) { // Set order orderViewModel = new OrderViewModel(order); productDetailBasicViewModels = new List <ProductDetailBasicViewModel>(); // Set product orderDetails = orderDetailService.GetOrderDetails(order.Id); if (orderDetails.Count > 0) { foreach (var orderDetail in orderDetails) { productDetail = productDetailService.GetOne(orderDetail.ProductDetailId); productDetail.PriceNavigation = new ProductPrice(); productDetail.ColorNavigation = new ProductType(); productDetail.SizeNavigation = new ProductType(); productDetailBasicViewModel = new ProductDetailBasicViewModel(productDetail); productDetailBasicViewModels.Add(productDetailBasicViewModel); } } orderDetailViewModel = new OrderDetailViewModel(orderViewModel, productDetailBasicViewModels, null); orderDetailViewModels.Add(orderDetailViewModel); } orderStateViewModel.Orders = orderDetailViewModels; // Tất cả đơn hàng orderStateViewModel.AcceptOrders = orderDetailViewModels.Where(o => o.Order.State == 1).ToList(); // Đơn hàng đang chờ xác nhận orderStateViewModel.ShippingOrders = orderDetailViewModels.Where(o => o.Order.State == 2).ToList(); // Đơn hàng đang giao orderStateViewModel.DoneOrders = orderDetailViewModels.Where(o => o.Order.State == 3).ToList(); // Đơn hàng giao thành công orderStateViewModel.CancelOrders = orderDetailViewModels.Where(o => o.Order.State == 0).ToList(); // Đơn hàng đã hủy } return(View(orderStateViewModel)); }
public async Task <IActionResult> SendEmailAsync(Guid?id, [Bind("ID", "StateAction", "Message")] OrderStateViewModel viewModel) { if (id == null) { return(NotFound()); } _logger.LogDebug($"Admin/Orders/SendEmail values: id = {id}, action = {viewModel.StateAction}, message = {viewModel.Message}"); Guid orderid = (Guid)id; Order order = await _context.Orders.SingleAsync(o => o.ID.Equals(orderid)); order.IsSend = true; order.Shippingdate = DateTime.Now; _context.Entry(order).State = EntityState.Modified; await _context.SaveChangesAsync(); if (order == null) { return(NotFound()); } var ordervm = await GetOrderViewModel(orderid); string subject = "Versand von Auftrag " + ordervm.Number; string email = ordervm.EMail; string message = $"<p>Hallo Frau/Herr {ordervm.CutomerLastName},</p>" + $"<p>ich habe die Ware zum Auftrag {ordervm.Number} vom {ordervm.OrderDate.ToShortDateString()} am {DateTime.Now.ToShortDateString()} versendet:</p>" + $"<table><tr><th>Position</th><th>Artikel-Nr.</th><th>Artikelname</th><th>Menge</th></tr>"; foreach (var item in ordervm.OderLines) { message += $"<tr><td>{item.Position}</td><td>{item.ProductNumber}</td><td>{item.ProductName}</td><td>{Math.Round(item.OrderQuantity,2)} {item.OrderUnit}</td></tr>"; } message += $"</table>"; message += $"<p><strong>Sendungsinformationen:</strong></p>"; message += $"<p>{viewModel.Message}</p>"; message += $"<p>Vielen Dank für den Einkauf.</p>"; message += $"<p>Viele Grüße,<br /> Petra Buron</p><br />"; var agb = await _context.ShopFiles.SingleAsync(s => s.ShopFileType == Enums.ShopFileTypeEnum.AGB); var wiederuf = await _context.ShopFiles.SingleAsync(s => s.ShopFileType == Enums.ShopFileTypeEnum.WRB); var datenschutz = await _context.ShopFiles.SingleAsync(s => s.ShopFileType == Enums.ShopFileTypeEnum.DSK); var attachments = new List <string> { agb.Filename, wiederuf.Filename, datenschutz.Filename }; await _emailSender.SendEmailWithAttachmentsAsync(email, subject, message, attachments); return(RedirectToAction(nameof(Details), new { id = id })); }
public async Task <IActionResult> MarkClosedAsync(Guid?id, [Bind("ID", "StateAction", "Message")] OrderStateViewModel viewModel) { if (id == null) { return(NotFound()); } var order = await _context.Orders.SingleAsync(o => o.ID == id); if (order == null) { return(NotFound()); } order.IsClosed = true; _context.Entry(order).State = EntityState.Modified; await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Details), new { id = id })); }
public async Task <IActionResult> AvailableWork(int locationNameNum, int?page) { OrderStateViewModel _model = await _orderActions.AvailableWork(locationNameNum, page); return(View(_model)); }
public IActionResult FirstPickUp([Bind("OrderId, EntitiesPassed")] OrderStateViewModel model) { using (_unitOfWork) { Order order = new Order(); DepartmentState firstDepartmentState; if (!ModelState.IsValid) { ViewBag.ErrorMessage = "Oops, something went wrong, refresh the page and try again."; return(View("Error")); } if (_unitOfWork.OrderRepository.Find(o => o.OrderId == model.OrderId).Any()) { order = _unitOfWork.OrderRepository.GetById(model.OrderId); } else { ViewBag.ErrorMessage = "Order doesn't exist."; return(View("Error")); } if (order.EntitiesNotProcessed < 1) { return(RedirectToAction("Details", new { id = model.OrderId, message = "All entities related to this order have been processed." })); } if (model.EntitiesPassed > order.EntitiesNotProcessed || model.EntitiesPassed < 1) { return(RedirectToAction("Details", new { id = model.OrderId, message = "Number of entities must be between 1 and " + order.EntitiesNotProcessed.ToString() })); } firstDepartmentState = _unitOfWork.DepartmentStateRepository.Find(ls => ls.OrderId == order.OrderId && ls.LocationPosition == 1).FirstOrDefault(); if (!_unitOfWork.UserRepository.HasRole(HttpContext.User.Identity.Name, GetLocationIntValue(firstDepartmentState.Name))) { return(RedirectToAction("Logout", "Account")); } order.EntitiesNotProcessed -= model.EntitiesPassed; firstDepartmentState.EntitiesInProgress += model.EntitiesPassed; order.DepartmentStates.Add(firstDepartmentState); if (firstDepartmentState.Status == ((Enums.Statuses) 1).ToString()) { firstDepartmentState.Status = ((Enums.Statuses) 2).ToString(); firstDepartmentState.Start = DateTime.Now; } if (order.Status != ((Enums.Statuses) 2).ToString()) { order.StartedAt = DateTime.Now; order.Status = ((Enums.Statuses) 2).ToString(); } _unitOfWork.Update(order); _unitOfWork.Complete(); _unitOfWork.LogRepository.CreateLog( HttpContext.User.Identity.Name, "Started processing " + model.EntitiesPassed.ToString() + " " + _unitOfWork.OrderRepository.GetById(model.OrderId).EntityType + " in " + firstDepartmentState.Name + ".", DateTime.Now, order.OrderNumber); return(RedirectToAction("Details", new { id = model.OrderId, messageType = 1, message = model.EntitiesPassed.ToString() + " entities successfully passed to " + firstDepartmentState.Name })); } }
public IActionResult Details(int id, int messageType = 0, string message = "") { using (_unitOfWork) { if (message != "") { if (messageType == 1) { ViewBag.successMessage = message; } else { ViewBag.errorMessage = message; } } Order order = _unitOfWork.OrderRepository.GetOrderAndDepartmentStatesById(id); //string userRole = ((UserRoles)_unitOfWork.UserRepository.GetUserByName(HttpContext.User.Identity.Name).Role).ToString(); if (order == null) { ViewBag.ErrorMessage = "Order doesn't exist."; return(View("Error")); } string webRoot = _hostingEnvironment.WebRootPath; if (!Directory.Exists(webRoot + "/OrderFiles/")) { Directory.CreateDirectory(webRoot + "/OrderFiles/"); } if (!Directory.Exists(webRoot + "/OrderFiles/" + order.OrderId.ToString() + "/")) { Directory.CreateDirectory(webRoot + "/OrderFiles/" + order.OrderId.ToString() + "/"); } string[] strfiles = Directory.GetFiles(webRoot + "/OrderFiles/" + order.OrderId.ToString() + "/", "*.*"); Dictionary <string, string> fileNamesUrls = new Dictionary <string, string>(); if (strfiles.Length > 0) { string fileName; for (int i = 0; i < strfiles.Length; i++) { fileName = Path.GetFileName(strfiles[i]); string _CurrentFile = strfiles[i].ToString(); if (System.IO.File.Exists(_CurrentFile)) { string tempFileURL = "/OrderFiles/" + order.OrderId.ToString() + "/" + Path.GetFileName(_CurrentFile).Replace(" ", "%20"); fileNamesUrls.Add(Path.GetFileName(_CurrentFile), tempFileURL); } } } string UserName = HttpContext.User.Identity.Name; List <int> userRoles = _unitOfWork.UserRepository.GetUserRolesByUserName(UserName); List <int> allowedLocationPositions = new List <int>(); foreach (DepartmentState ls in order.DepartmentStates) { if (userRoles.Contains(GetLocationIntValue(ls.Name)) && ls.Status != ((Enums.Statuses) 3).ToString()) { allowedLocationPositions.Add(ls.LocationPosition - 1); } } OrderStateViewModel model = new OrderStateViewModel { OrderDetails = order, AllowedPositions = allowedLocationPositions }; if (fileNamesUrls.Count() > 0) { model.FileNamesUrls = fileNamesUrls; } return(View(model)); } }