Example #1
0
        public IActionResult Act(string userAction, string idPhoto)
        {
            if (!Enum.TryParse(typeof(UserAction), userAction, true, out var aRaw))
            {
                throw new ArgumentException($"Action '{userAction}' is not support", nameof(userAction));
            }

            UserAction a     = (UserAction)aRaw;
            var        topic = _ContentManager.GetMetadata().First().Topics.FirstOrDefault(t => t.Blobs.Any(b => b.IdContent == idPhoto));

            if (topic == null)
            {
                throw new ArgumentException($"Photo '{userAction}' not found", nameof(idPhoto));
            }

            string idUser = User?.Identity?.Name;

            if (string.IsNullOrEmpty(idUser))
            {
                throw new InvalidOperationException("Action requires authenticated user");
            }

            _photosRepository.AddUserAction(topic.Title, idUser, idPhoto, a);
            UserPhoto userPhoto = _photosRepository.GetUserPhoto(topic.Title, idUser, idPhoto);
            var       photo     = _photosRepository.GetContent(topic.Title, idPhoto);

            JsPhotoModel ret = new JsPhotoModel()
            {
                Id            = userPhoto.IdContent,
                Url           = "Not applicable",
                Height        = -1,
                Width         = -1,
                MyDislikes    = userPhoto.Dislikes,
                MyLikes       = userPhoto.Likes,
                MyShares      = userPhoto.Shares,
                MyStars       = userPhoto.Stars,
                TotalDislikes = photo.Dislikes,
                TotalLikes    = photo.Likes,
                TotalShares   = photo.Shares,
                TotalStars    = photo.Stars,
            };

            return(Ok(ret));
        }