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}); }
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}); }