public async Task <IActionResult> Details(int id) { var order = await _context.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id); if (order == null) { return(NotFound()); } if (order.CreatorId != CurrentUserId) { ErrorMessage = "You don't have access to this order."; return(NotFound()); } if (order.Status == OrderStatusCodes.Created) { ErrorMessage = "Must confirm order before viewing details."; return(RedirectToAction("Index")); } var model = new OrderReviewModel(); model.Order = order; model.OrderDetails = order.GetOrderDetails(); return(View(model)); }
public async Task <IActionResult> Confirmation(int id) { var order = await _context.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id); if (order == null) { return(NotFound()); } if (order.CreatorId != CurrentUserId) { if (AllowAdminOverride() == false) { ErrorMessage = "You don't have access to this order."; return(NotFound()); } Message = "Warning, Admin editing order for user."; } await _orderService.UpdateTestsAndPrices(order); var model = new OrderReviewModel(); model.Order = order; model.OrderDetails = order.GetOrderDetails(); return(View(model)); }
public async Task <IActionResult> Confirmed(int id) { var order = await _context.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id); if (order == null) { return(NotFound()); } if (order.CreatorId != CurrentUserId) { if (!User.IsInRole(RoleCodes.Admin)) { ErrorMessage = "You don't have access to this order."; return(NotFound()); } } var model = new OrderReviewModel(); model.Order = order; model.OrderDetails = order.GetOrderDetails(); return(View(model)); }
public async Task <int> LeaveReview([FromBody] ReviewPostModel rpm) { int returnCode = 1; try { Order order = await _orderService.FindOrderByIdAsync(rpm.OrderId); OrderReviewModel newReview = new OrderReviewModel(); var user = await _userManager.GetUserAsync(HttpContext.User); newReview.OrderId = order.Id; newReview.Rating = Convert.ToInt16(rpm.Rating); newReview.CustomerComment = rpm.Comment; newReview.User = user; int reviewResult = await _orderService.AddOrderReviewAsync(order, newReview); returnCode = 0; } catch (Exception) { returnCode = 1; } return(returnCode); }
public async Task <IActionResult> AddRequestNumber(int id) { var order = await _dbContext.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id); if (order == null) { return(NotFound()); } if (order.Status != OrderStatusCodes.Confirmed) { ErrorMessage = "You can only receive a confirmed order"; return(RedirectToAction("Orders")); } var model = new OrderReviewModel(); model.Order = order; model.OrderDetails = order.GetOrderDetails(); model.HideLabDetails = false; await GetHistories(id, model); return(View(model)); }
public async Task <OrderReviewModel> FindOrderReviewAsync(int OrderId) { OrderReviewModel orderReview = null; orderReview = await _context.OrderReview.Where(or => or.OrderId == OrderId).FirstOrDefaultAsync(); return(orderReview); }
public async Task <IActionResult> AdminView(int pageNumber = 0) { var model = new OrderHistoryModel(); //var orders = await _orderService.QueryAllAdminOrdersAsync(); var orders = _orderService.GetAllAdminOrdersByPage(pageNumber, orderConfirmationOrdersPerPage); List <OrderReviewModel> reviews = new List <OrderReviewModel>(); foreach (Order o in orders) { OrderReviewModel orm = await _orderService.FindOrderReviewAsync(o.Id); if (orm != null) { orm.CustomerComment = orm.Rating + ": " + orm.CustomerComment; reviews.Add(orm); } } model.Orders = orders; model.Reviews = reviews; if (TempData["AdminConfirmOrderConcurrency"] != null) { ModelState.AddModelError(string.Empty, TempData["AdminConfirmOrderConcurrency"].ToString()); } // pagination int pageCount = _orderService.GetAdminOrdersPageCount(orderConfirmationOrdersPerPage); ViewBag.PageCount = pageCount; if (pageNumber + 1 < pageCount) { ViewBag.NextPageNumber = pageNumber + 1; } else { ViewBag.NextPageNumber = null; } if (pageNumber > 0) { ViewBag.PreviousPageNumber = pageNumber - 1; } else { ViewBag.PreviousPageNumber = null; } ViewBag.CurrentPageNumber = pageNumber; return(View(model)); }
public async Task <IActionResult> Index(int pageNumber = 0) { var model = new OrderHistoryModel(); var user = await _userManager.GetUserAsync(HttpContext.User); //var orders = await _orderService.QueryAllOrdersAsync(user); var orders = _orderService.GetAllOrdersByPage(user, pageNumber, orderHistoryOrdersPerPage); List <OrderReviewModel> reviews = new List <OrderReviewModel>(); foreach (Order o in orders) { OrderReviewModel orm = await _orderService.FindOrderReviewAsync(o.Id); if (orm != null) { orm.CustomerComment = orm.Rating + ": " + orm.CustomerComment; reviews.Add(orm); } } model.Orders = orders; model.Reviews = reviews; // pagination int pageCount = _orderService.GetOrdersPageCount(user, orderHistoryOrdersPerPage); ViewBag.PageCount = pageCount; if (pageNumber + 1 < pageCount) { ViewBag.NextPageNumber = pageNumber + 1; } else { ViewBag.NextPageNumber = null; } if (pageNumber > 0) { ViewBag.PreviousPageNumber = pageNumber - 1; } else { ViewBag.PreviousPageNumber = null; } ViewBag.CurrentPageNumber = pageNumber; return(View(model)); }
private async Task GetHistories(int id, OrderReviewModel model) { model.History = await _context.History.Where(a => a.OrderId == id).Select(s => new History { Action = s.Action, ActionDateTime = s.ActionDateTime, Id = s.Id, Status = s.Status, ActorId = s.ActorId, ActorName = s.ActorName, Notes = s.Notes }).OrderBy(o => o.ActionDateTime).ToListAsync(); //Basically filtering out jsonDetails }
public async Task <IActionResult> Details(int id) { var order = await _dbContext.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id && o.Status != OrderStatusCodes.Created); if (order == null) { return(NotFound()); } var model = new OrderReviewModel(); model.Order = order; model.OrderDetails = order.GetOrderDetails(); model.HideLabDetails = false; return(View(model)); }
public async Task <int> AddOrderReviewAsync(Order order, OrderReviewModel review) { int returnCode = 1; try { _context.OrderReview.Add(review); order.StatusCode = 4; //Reviewed _context.Update(order); await _context.SaveChangesAsync(); returnCode = 0; } catch (Exception) { returnCode = 1; } return(returnCode); }
public async Task <IActionResult> Finalize(int id) { var order = await _dbContext.Orders.Include(i => i.Creator).SingleOrDefaultAsync(o => o.Id == id); if (order == null) { return(NotFound()); } if (order.Status != OrderStatusCodes.Received) { ErrorMessage = "You can only Complete a Received order"; return(RedirectToAction("Orders")); } var result = await _orderService.OverwriteOrderFromDb(order); if (result.WasError) { if (result.ErrorMessage != null) { ErrorMessage = $"Error. Unable to continue. Error looking up on Labworks: {result.ErrorMessage}"; } else { ErrorMessage = string.Format("Error. Unable to continue. The following codes were not found locally: {0}", string.Join(",", result.MissingCodes)); } return(RedirectToAction("Orders")); } order = await UpdateOrderFromLabworksResult(order, result); var model = new OrderReviewModel(); model.Order = order; model.OrderDetails = order.GetOrderDetails(); model.HideLabDetails = false; await GetHistories(id, model); return(View(model)); }