Пример #1
0
        public async Task <IActionResult> AcceptPublicPin([FromBody] AcceptDTO acceptDTO)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                Moderator moderator = await moderatorsCrudService.GetModeratorById(acceptDTO.ModeratorId);

                ResponseDTO answer = await moderationPinService.ModerationAcceptPin(acceptDTO, moderator);

                logger.LogInformation($"Модератор: {acceptDTO.ModeratorId}, проверил и подтвердил пин: {acceptDTO.Id}");
                return(Ok(answer));
            }
            catch (ObjectNotFoundException ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(404, new ResponseDTO()
                {
                    Message = "Пин не найден", Status = false
                }));
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(500, new ResponseDTO()
                {
                    Message = "На данный момент на стороне сервера ошибка сообщите администратору",
                    Status = false
                }));
            }
        }
Пример #2
0
        public async Task <ResponseDTO> ModerationAcceptPin(AcceptDTO acceptDTO, Moderator moderator)
        {
            //Remove from Moderation database table
            ProblemPin foundedPin = await moderatePinContext.ModerateProblemPins.Include(problemPin => problemPin.Images).FirstOrDefaultAsync(pins => pins.Id == acceptDTO.Id);

            moderatePinContext.ModerateProblemPins.Remove(foundedPin);
            await moderatePinContext.SaveChangesAsync();

            // Add to Public database table
            foundedPin.ModeratorId = acceptDTO.ModeratorId;
            await publicPinContext.ProblemPins.AddAsync(foundedPin);

            int count = await publicPinContext.SaveChangesAsync();

            if (count > 0)
            {
                Moderator newModerator = moderator;
                newModerator.ModeratedPinsCount += 1;
                moderatePinContext.Entry(moderator).CurrentValues.SetValues(newModerator);
                int countModerator = await moderatePinContext.SaveChangesAsync();

                if (countModerator > 0)
                {
                    cache.Set(newModerator.Id, newModerator, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(5)));
                }
                cache.Set(foundedPin.Id, foundedPin, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(5)));
            }
            return(new ResponseDTO()
            {
                Message = "Пин успешно прошёл модерацию и добавлен в публичную базу", Status = true
            });
        }