Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        public async Task <OrderReviewModel> FindOrderReviewAsync(int OrderId)
        {
            OrderReviewModel orderReview = null;

            orderReview = await _context.OrderReview.Where(or => or.OrderId == OrderId).FirstOrDefaultAsync();

            return(orderReview);
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
 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
 }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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));
        }