Example #1
0
        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);
        }
Example #2
0
        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("Произошла ошибка, попробуйте еще раз.")));
            }
        }