Beispiel #1
0
        public async Task <Pet> GetPetAsync(PetRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (!request.Id.HasValue && request.Code == null)
            {
                throw new ArgumentException("Id and Code are NULL");
            }

            PetTableModel table = null;

            if (request.Id.HasValue)
            {
                table = await _petDataAccess.GetPetByIdAsync(request.Id.Value)
                        .ConfigureAwait(false);
            }
            else if (request.Code.HasValue)
            {
                table = await _petDataAccess.GetPetByCodeAsync(request.Code.Value)
                        .ConfigureAwait(false);
            }

            var owners = await _petDataAccess.GetOwnersByPetIdAsync(table.Id)
                         .ConfigureAwait(false);

            var alerts = await _petAlertDataAccess.GetPetAlertsByPetIdAsync(table.Id)
                         .ConfigureAwait(false);

            var pet = _petMapper.MapPetTableToPet(table, true);

            pet.Owners = owners;
            pet.Alerts = alerts;

            return(pet);
        }