コード例 #1
0
        public IActionResult GetProblemAssets(long problemID)
        {
            var user = UserService.Get(long.Parse(User.Identity.Name));

            if (user == 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 != user)
            {
                return(BadRequest(new ResponseModel
                {
                    Success = false,
                    Message = "Доступ запрещен"
                }));
            }

            var images = ProblemImageService.GetProblemImages(problem)
                         .Select(x => new ProblemImageViewModel(x))
                         .ToList();

            var resources = ProblemResourceService.GetProblemResources(problem)
                            .Select(x => GetFullProblemResource(x))
                            .ToList();

            var sessions = SessionService.GetUserSessions(user)
                           .Where(x => x.Problem == problem)
                           .Select(x => GetFullSession(x))
                           .ToList();

            return(Ok(new DataResponse <ClientProblemAssetsViewModel>
            {
                Data = new ClientProblemAssetsViewModel
                {
                    Problem = new ProblemViewModel(problem),
                    Images = images,
                    Resources = resources,
                    Sessions = sessions
                }
            }));
        }
コード例 #2
0
 private SpecialistProfileActiveSessionViewModel GetSessionClientCard(Session session)
 {
     return(new SpecialistProfileActiveSessionViewModel
     {
         Session = new SessionViewModel(session),
         Client = GetClientCard(session.Problem.User, session.Specialist),
         ImagesCount = ProblemImageService.GetProblemImages(session.Problem).Count,
         ResourcesCount = ProblemResourceService.GetProblemResources(session.Problem).Count
     });
 }
コード例 #3
0
        private SpecialistSessionViewModel GetSpecialistSession(Session session)
        {
            var images    = ProblemImageService.GetProblemImages(session.Problem);
            var resources = ProblemResourceService.GetProblemResources(session.Problem);

            var result = new SpecialistSessionViewModel
            {
                SessionID             = session.ID,
                SessionDate           = session.Date,
                SessionStatus         = session.Status,
                Client                = new UserViewModel(session.Problem.User),
                Problem               = new ProblemViewModel(session.Problem),
                ProblemText           = session.Problem.ProblemText,
                Reward                = session.Reward,
                Specialist            = GetFullSpecialist(session.Specialist),
                IsSpecialistClose     = session.IsSpecialistClose,
                IsClientClose         = session.IsClientClose,
                SpecialistCloseDate   = session.SpecialistCloseDate,
                ClientCloseDate       = session.ClientCloseDate,
                SessionImagesCount    = images.Where(x => x.Session == session).Count(),
                TotalImagesCount      = images.Count,
                SessionResourcesCount = resources.Where(x => x.Session == session).Count(),
                TotalResourcesCount   = resources.Count
            };

            var review = ReviewService.GetSessionReview(session);

            if (review != null)
            {
                result.Review      = new ReviewViewModel(review);
                result.ReviewScore = review.Score;
            }

            images.ForEach(image =>
            {
                if (image.Session.Specialist != session.Specialist)
                {
                    result.IsAllImagesFromOneSpecialist = false;
                }
            });

            resources.ForEach(resource =>
            {
                if (resource.Session.Specialist != session.Specialist)
                {
                    result.IsAllResourcesFromOneSpecialist = false;
                }
            });

            return(result);
        }
コード例 #4
0
        public IActionResult ReloadClientProblemImage(long clientID, long problemID, long imageID)
        {
            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 image = ProblemImageService.Get(imageID);

            if (image == null)
            {
                return(NotFound(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 = "Ошибка доступа"
                }));
            }

            image.IsHidden = false;
            ProblemImageService.Update(image);

            var problemImages = ProblemImageService.GetProblemImages(problem)
                                .Select(x => new ProblemImageViewModel(x))
                                .ToList();

            return(Ok(new DataResponse <List <ProblemImageViewModel> >
            {
                Data = problemImages
            }));
        }
コード例 #5
0
        public IActionResult EditClientProblemImage([FromBody] CreateUpdateProblemImageRequest request, long clientID, long problemID, long imageID)
        {
            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 problemImage = ProblemImageService.Get(imageID);

            if (problemImage == null)
            {
                return(NotFound(new ResponseModel
                {
                    Success = false,
                    Message = "Образ не найден"
                }));
            }

            if (request.Title != problemImage.Title)
            {
                problemImage.Title = request.Title;
            }

            if (request.Emotion != problemImage.Emotion)
            {
                problemImage.Emotion = request.Emotion;
            }

            if (request.Location != problemImage.Location)
            {
                problemImage.Location = request.Location;
            }

            if (request.Characteristic != problemImage.Characteristic)
            {
                problemImage.Characteristic = request.Characteristic;
            }

            if (request.IsMine != problemImage.IsMine)
            {
                problemImage.IsMine = request.IsMine;
            }

            if (request.IsIDo != problemImage.IsIDo)
            {
                problemImage.IsIDo = request.IsIDo;
            }

            if (request.IsForever != problemImage.IsForever)
            {
                problemImage.IsForever = request.IsForever;
            }

            if (request.LikeScore != problemImage.LikeScore)
            {
                problemImage.LikeScore = request.LikeScore;
            }

            long parentImageID = 0;

            if (problemImage.ParentImage != null)
            {
                parentImageID = problemImage.ParentImage.ID;
            }

            if (request.ParentImageID != 0 && request.ParentImageID != parentImageID)
            {
                var newParentImage = ProblemImageService.Get(request.ParentImageID);
                if (newParentImage == null)
                {
                    return(NotFound(new ResponseModel
                    {
                        Success = false,
                        Message = "Зависимость не найдена"
                    }));
                }

                problemImage.ParentImage = newParentImage;
            }
            else if (request.ParentImageID == 0)
            {
                problemImage.ParentImage = null;
            }

            ProblemImageService.Update(problemImage);

            var problemImages = ProblemImageService.GetProblemImages(problem)
                                .Select(x => new ProblemImageViewModel(x))
                                .ToList();

            return(Ok(new DataResponse <List <ProblemImageViewModel> >
            {
                Data = problemImages
            }));
        }
コード例 #6
0
        public IActionResult GetClientAssets(long clientID, long problemID)
        {
            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 = "Ошибка доступа"
                }));
            }

            return(Ok(new DataResponse <ProblemAssetsViewModel>
            {
                Data = new ProblemAssetsViewModel
                {
                    Problem = new ProblemViewModel(problem),
                    Images = ProblemImageService.GetProblemImages(problem).Select(x => new ProblemImageViewModel(x)).ToList(),
                    Resources = ProblemResourceService.GetProblemResources(problem).Select(x => GetFullProblemResource(x)).ToList(),
                    Sessions = SessionService.GetProblemSessions(problem).Select(x => GetSpecialistSession(x)).ToList()
                }
            }));
        }