public async Task <PetAlert> CreatePetAlertAsync(PetAlertCreateRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var table = _petAlertMapper.MapCreateRequestToTable(request);

            int newId = 0;

            if (request.PetId.HasValue || request.PetCode.HasValue)
            {
                PetTableModel pet = null;
                if (request.PetId.HasValue)
                {
                    pet = await _petDataAccess.GetPetByIdAsync(request.PetId.Value)
                          .ConfigureAwait(false);
                }
                else if (request.PetCode.HasValue)
                {
                    pet = await _petDataAccess.GetPetByCodeAsync(request.PetCode.Value)
                          .ConfigureAwait(false);
                }

                table.PetId = pet.Id;

                newId = await _petAlertDataAccess.AddPetAlertAsync(table)
                        .ConfigureAwait(false);
            }
            else
            {
                var alertImages = request.UrlImages.ConvertAll(x => _petAlertMapper.MapImagesToTable(x));

                newId = await _petAlertDataAccess.AddPetPublicAlertAsync(table, alertImages)
                        .ConfigureAwait(false);
            }

            var newTable = await _petAlertDataAccess.GetPetAlertByIdAsync(newId)
                           .ConfigureAwait(false);

            return(_petAlertMapper.MapPetAlertTableToPetAlert(newTable));
        }
Beispiel #2
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);
        }