private ProblemResourceViewModel GetFullProblemResource(ProblemResource resource) { var tasks = ProblemResourceTaskService.GetResourceTasks(resource); return(new ProblemResourceViewModel(resource, tasks)); }
public IActionResult EditClientProblemResource([FromBody] CreateUpdateProblemResourceRequest request, long clientID, long problemID, long resourceID) { var user = UserService.Get(long.Parse(User.Identity.Name)); if (user == null) { return(NotFound(new ResponseModel { Success = false, Message = "Пользователь не найден" })); } var specialist = SpecialistService.GetSpecialistFromUser(user); if (specialist == null) { return(NotFound(new ResponseModel { Success = false, Message = "Специалист не найден" })); } var client = UserService.Get(clientID); if (client == null) { return(NotFound(new ResponseModel { Success = false, Message = "Клиент не найден" })); } var problem = ProblemService.Get(problemID); if (problem == null) { return(NotFound(new ResponseModel { Success = false, Message = "Проблема не найдена" })); } if (problem.User != client) { return(BadRequest(new ResponseModel { Success = false, Message = "Ошибка доступа" })); } var session = SessionService.GetCurrentSession(problem); if (session == null) { return(NotFound(new ResponseModel { Success = false, Message = "Активная сессия не найдена" })); } if (session.Problem != problem) { return(BadRequest(new ResponseModel { Success = false, Message = "Ошибка доступа" })); } var resource = ProblemResourceService.Get(resourceID); if (resource == null) { return(NotFound(new ResponseModel { Success = false, Message = "Ресурс не найден" })); } if (request.Title != resource.Title) { resource.Title = request.Title; } if (request.Emotion != resource.Emotion) { resource.Emotion = request.Emotion; } if (request.Location != resource.Location) { resource.Location = request.Location; } if (request.Characteristic != resource.Characteristic) { resource.Characteristic = request.Characteristic; } if (request.Influence != resource.Influence) { resource.Influence = request.Influence; } if (request.LikeScore != resource.LikeScore) { resource.LikeScore = request.LikeScore; } request.Tasks.ForEach(task => ProblemResourceTaskService.CreateUpdateTask(task, resource)); var resources = ProblemResourceService.GetProblemResources(problem) .Select(x => GetFullProblemResource(x)) .ToList(); return(Ok(new DataResponse <List <ProblemResourceViewModel> > { Data = resources })); }