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