예제 #1
0
        private ProblemResourceViewModel GetFullProblemResource(ProblemResource resource)
        {
            var tasks = ProblemResourceTaskService.GetResourceTasks(resource);

            return(new ProblemResourceViewModel(resource, tasks));
        }
예제 #2
0
        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
            }));
        }