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 })); } }
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 }); }