예제 #1
0
        public ActionResult RejectTask(TaskApproveModel model)
        {
            var currentUser = _userRepository.GetByUsername(User.Identity.Name);
            var task = _taskRepository.GetById(model.TaskId);
            if(task.Order.User.Id != currentUser.Id)
                throw new Exception("Invalid task");

            if (task.WasRejected)
            {
                task.IsDeleted = true;
                _taskRepository.Update(task);

                task.Order.AcceptedTasks--;
                _billingService.Dehold(task.Order.User, task.Order.Price);
                _dbContext.SaveChanges();
            }
            task.TaskStatus = TaskStatus.Rejected;
            task.WasRejected = true;
            _taskRepository.Update(task);
            task.Order.TasksInReview--;
            _ordersRepository.Update(task.Order);
            var responseDelta = (DateTime.Now - task.CreateDate).TotalMinutes;
            var userResponse = new UserResponseHistory
            {
                User = currentUser,
                CreateDate = DateTime.Now,
                ResponseMins = responseDelta
            };
            _userResponseHistoryRepository.Save(userResponse);
            return RedirectToAction("TaskApproval", new {gigRequestId = model.GigId, page = model.Page});
        }
예제 #2
0
        public ActionResult ApproveTask(TaskApproveModel model)
        {
            var currentUser = _userRepository.GetByUsername(User.Identity.Name);
            var task = _taskRepository.GetById(model.TaskId);
            if (task.Order.User.Id != currentUser.Id)
                throw new Exception("Invalid task");

            task.TaskStatus = TaskStatus.Completed;
            _taskRepository.Update(task);
            task.Order.TasksInReview--;

            _ordersRepository.Update(task.Order);
            var review = new Review
            {
                Author = currentUser,
                User = task.User,
                CreateDate = DateTime.Now,
                Message = string.Empty,
                Rate = model.UserRate,
                ReviewMark = model.UserRate > 2 ? ReviewMark.Positive : ReviewMark.Negative
            };
            _reviewRepository.Save(review);
            _userService.RebuildUserRating(task.User.Id);
            var responseDelta = (DateTime.Now - task.CreateDate).TotalMinutes;
            var userResponse = new UserResponseHistory
            {
                User = currentUser,
                CreateDate = DateTime.Now,
                ResponseMins = responseDelta
            };
            _userResponseHistoryRepository.Save(userResponse);
            _userService.RebuildResponseTime(currentUser.Id);
            _billingService.Transfer(currentUser, task.User, task.Order.Price);
            _dbContext.SaveChanges();

            return RedirectToAction("TaskApproval", new {gigRequestId = model.GigId, page = model.Page});
        }