public async Task Submit(string userName, NamedUserAnswer userAnswer) { if (string.IsNullOrWhiteSpace(userName)) { throw new ArgumentNullException(nameof(userName)); } if (userAnswer == null) { throw new ArgumentNullException(nameof(userAnswer)); } await this.ValidateBotsCount(userName); ImageInfo imageInfo; try { imageInfo = await this.imageClient.Create(userAnswer); } catch (Exception ex) { throw new ImageNotCreatedException("Не удалось создать образ", ex); } var bot = new Bot { Name = userAnswer.Name, Tag = imageInfo.Tag, Code = userAnswer.Code, Language = userAnswer.Language, AddedAt = DateTime.UtcNow }; await this.ValidateBotsCount(userName); await this.userRepository.AddBot(userName, bot); }
public async Task <IActionResult> Submit([FromBody] NamedUserAnswer userAnswer) { try { await this.submitService.Submit(this.User.Identity.Name, userAnswer); return(this.Ok()); } catch (ImageNotCreatedException ex) { this.logger.LogWarning(ex, "Не удалось создать образ."); return(this.BadRequest(new ErrorResponse("Не удалось создать образ, попробуйте еще раз."))); } catch (BotsCountExceededException ex) { this.logger.LogWarning(ex, "Превышен лимит на количество ботов."); return(this.BadRequest(new ErrorResponse("Превышен лимит на количество ботов."))); } catch (Exception ex) { this.logger.LogError(ex, "Не получилось отправить решение."); return(this.StatusCode((int)HttpStatusCode.InternalServerError, new ErrorResponse("Произошла ошибка, попробуйте еще раз."))); } }