public async Task <IHttpActionResult> CreateOrGetPlayerAsync([FromBody] CreateOrGetPlayerRequest request)
        {
            try
            {
                var player = await service.CreateOrGetPlayerAsync(request);

                return(Ok(player));
            }
            catch (InvalidPlayerDataException ex)
            {
                logger.Error(ex);
                return(BadRequest(ex.Message));
            }
        }
Example #2
0
        /// <inheritdoc/>
        public async Task <PlayerViewModel> CreateOrGetPlayerAsync(CreateOrGetPlayerRequest request)
        {
            if (String.IsNullOrEmpty(request.Name))
            {
                throw new InvalidPlayerDataException("Name is empty!");
            }

            const int maxLength = 3;

            if (request.Name.Length < maxLength)
            {
                throw new InvalidPlayerDataException($"Length must be more than {maxLength}");
            }

            return(await validatedService.CreateOrGetPlayerAsync(request));
        }
Example #3
0
        /// <inheritdoc/>
        public async Task <PlayerViewModel> CreateOrGetPlayerAsync(CreateOrGetPlayerRequest request)
        {
            var dbPlayer = await repository.FirstOrDefaultAsync(p => p.Name == request.Name);

            if (dbPlayer == null)
            {
                dbPlayer = await repository.InsertAsync(
                    new PlayerDbModel
                {
                    Name = request.Name
                });

                await unitOfWork.CommitAsync();
            }

            var player = mapper.Map <Player>(dbPlayer);

            return(mapper.Map <PlayerViewModel>(player));
        }