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