Beispiel #1
0
        public static PictureStorage MapUpdatePictureRequestToPictureStorage(UpdatePictureRequest updatePictureRequest)
        {
            if (updatePictureRequest == null)
            {
                return(null);
            }

            return(new PictureStorage {
                Caption = updatePictureRequest.Caption
            });
        }
Beispiel #2
0
        public async Task <IActionResult> Update(string id, [FromBody] UpdatePictureRequest updatePictureRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var userId = HttpContext?.User.Claims.First(x => x.Type == ClaimTypes.NameIdentifier).Value;

            if (await _pictureService.UpdateAsync(id, userId, updatePictureRequest))
            {
                return(Ok());
            }

            return(BadRequest());
        }
Beispiel #3
0
        public async Task <bool> UpdateAsync(string pictureId, string userId, UpdatePictureRequest updatePictureRequest)
        {
            var pictureStorage = PictureMapper.MapUpdatePictureRequestToPictureStorage(updatePictureRequest);

            var previousPicture = await _pictureRepository.ReadAsync(pictureId);

            var pictureContest = await _contestRepository.ReadAsync(previousPicture.ContestId);

            var currentContest = await _contestRepository.ReadSettingsAsync("current");

            // Vote has been cast, picture belongs to current contest, user has not already voted for contest
            if (updatePictureRequest.Vote &&
                pictureContest.Id == currentContest.CurrentId &&
                (pictureContest.Voters == null ||
                 pictureContest.Voters.All(x => x != userId)))
            {
                if (pictureContest.Voters == null)
                {
                    pictureContest.Voters = new List <string>();
                }

                pictureContest.Voters.Add(userId);
                pictureStorage.Votes = previousPicture.Votes + 1;

                await _contestRepository.UpdateAsync(pictureContest.Id, new ContestStorage
                {
                    Voters = pictureContest.Voters
                });

                await _pictureRepository.UpdateAsync(pictureId, pictureStorage);

                return(true);
            }
            if (updatePictureRequest.Caption != null)
            {
                await _pictureRepository.UpdateAsync(pictureId, pictureStorage);

                return(true);
            }

            return(false);
        }