public async Task <PetImage> AddPetImageAsync(PetImageAddRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (!request.PetId.HasValue && !request.PetCode.HasValue) { throw new ArgumentException("PetId and PetCode are NULL"); } var table = _petImageMapper.MapAddRequestToTable(request); int newId = 0; if (request.PetId.HasValue) { newId = await _petImageDataAccess.AddPetImageAsync(request.PetId.Value, table) .ConfigureAwait(false); } else if (request.PetCode.HasValue) { newId = await _petImageDataAccess.AddPetImageAsync(request.PetCode.Value, table) .ConfigureAwait(false); } var newTable = await _petImageDataAccess.GetPetImageByIdAsync(newId) .ConfigureAwait(false); return(_petImageMapper.MapPetImageTableToPetImage(newTable)); }