Exemplo n.º 1
0
        public PetAlertDetails GetPetAlertDetails(Guid alertCode)
        {
            var request = new PetAlertDetailsRequest {
                AlertCode = alertCode
            };

            return(_petSearchServiceClient.GetPetAlertDetails(request));
        }
Exemplo n.º 2
0
        public async Task <PetAlertDetails> Post(PetAlertDetailsRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return(await _petSearchProvider.GetPetAlertDetails(request)
                   .ConfigureAwait(false));
        }
Exemplo n.º 3
0
        public async Task <PetAlertDetails> GetPetAlertDetails(PetAlertDetailsRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }


            return(await _petSearchDataAccess.GetPetAlertDetailsAsync(request)
                   .ConfigureAwait(false));
        }
Exemplo n.º 4
0
        public async Task <PetAlertDetails> GetPetAlertDetailsAsync(PetAlertDetailsRequest request)
        {
            PetAlertDetails    petAlertDetails = null;
            PetAlertTableModel petAlertTable   = null;

            using (var dbConnection = _dbConnectionFactory.Open())
            {
                petAlertTable = await dbConnection.SingleAsync <PetAlertTableModel>(pa => pa.Code == request.AlertCode &&
                                                                                    pa.AlertStatus == (int)AlertStatusEnum.Active)
                                .ConfigureAwait(false);

                if (petAlertTable != null)
                {
                    petAlertDetails            = new PetAlertDetails();
                    petAlertDetails.PetInfo    = new PetDetails();
                    petAlertDetails.OwnersInfo = new List <OwnerDetails>();
                    OwnerDetails ownerDetails;

                    // --- Pet Details ---
                    if (petAlertTable.PetId.HasValue && petAlertTable.PetId > 0)
                    {
                        var petQuery = dbConnection.From <PetTableModel>()
                                       .Join <PetTableModel, PetAlertTableModel>((p, pa) => p.Id == pa.PetId &&
                                                                                 pa.Code == petAlertTable.Code);

                        var petResult = await dbConnection.SelectMultiAsync <PetTableModel, PetAlertTableModel>(petQuery)
                                        .ConfigureAwait(false);

                        var petImages = await dbConnection.SelectAsync <PetImageTableModel>(pi => pi.PetTableModelId == petAlertTable.PetId.Value)
                                        .ConfigureAwait(false);

                        foreach (var item in petResult)
                        {
                            petAlertDetails.PetInfo.Name             = item.Item1.Name;
                            petAlertDetails.PetInfo.ProfileImageUrl  = petImages.Where(pi => pi.IsProfileImage).FirstOrDefault()?.ImageUrl;
                            petAlertDetails.PetInfo.DateOfBirth      = item.Item1.DateOfBirth;
                            petAlertDetails.PetInfo.Description      = item.Item1.Description;
                            petAlertDetails.PetInfo.LostComment      = item.Item2.Comment;
                            petAlertDetails.PetInfo.LostDateTime     = item.Item2.CreatedOn;
                            petAlertDetails.PetInfo.PositionImageUrl = item.Item2.PositionImageUrl;
                            petAlertDetails.PetInfo.Images           = petImages.Select(pi => pi.ImageUrl).ToList();
                        }
                    }
                    else
                    {
                        var petImages = await dbConnection.SelectAsync <PetAlertImageTableModel>(pi => pi.PetAlertTableModelId == petAlertTable.Id)
                                        .ConfigureAwait(false);

                        petAlertDetails.PetInfo.Name             = GeneralHelper.GetAnonymousTitle(petAlertTable.AlertType);
                        petAlertDetails.PetInfo.LostComment      = petAlertTable.Comment;
                        petAlertDetails.PetInfo.LostDateTime     = petAlertTable.CreatedOn;
                        petAlertDetails.PetInfo.PositionImageUrl = petAlertTable.PositionImageUrl;
                        petAlertDetails.PetInfo.Images           = petImages.Select(x => x.ImageUrl).ToList();
                    }

                    // --- Owner Details ---
                    if (petAlertTable.OwnerTableModelId.HasValue && petAlertTable.OwnerTableModelId > 0)
                    {
                        // --- Owner's Pet --
                        if (petAlertTable.PetId.HasValue && petAlertTable.PetId.Value > 0)
                        {
                            var ownersQuery = dbConnection.From <OwnerPetTableModel>()
                                              .Join <OwnerPetTableModel, OwnerTableModel>((op, o) => op.OwnerTableModelId == o.Id)
                                              .Join <OwnerPetTableModel, OwnerSettingTableModel>((op, os) => op.OwnerTableModelId == os.OwnerTableModelId)
                                              .Where(op => op.PetTableModelId == petAlertTable.PetId.Value);

                            var ownersResult = await dbConnection.SelectMultiAsync <OwnerPetTableModel, OwnerTableModel, OwnerSettingTableModel>(ownersQuery)
                                               .ConfigureAwait(false);

                            foreach (var item in ownersResult)
                            {
                                ownerDetails = new OwnerDetails
                                {
                                    FullName        = $"{item.Item2.FirstName} {item.Item2.LastName}",
                                    ProfileImageUrl = item.Item2.ProfileImageUrl,
                                    Email           = item.Item3.ShowEmailForAlerts ? item.Item2.Email : string.Empty,
                                    PhoneNumber1    = item.Item3.ShowPhoneNumberForAlerts ? item.Item2.PhoneNumber1 : string.Empty,
                                    PhoneNumber2    = item.Item3.ShowPhoneNumberForAlerts ? item.Item2.PhoneNumber2 : string.Empty,
                                    Address1        = item.Item3.ShowAddressForAlerts ? item.Item2.Address1 : string.Empty,
                                    Address2        = item.Item3.ShowAddressForAlerts ? item.Item2.Address2 : string.Empty
                                };

                                petAlertDetails.OwnersInfo.Add(ownerDetails);
                            }
                        }
                        else // --- Other Pet ---
                        {
                            var ownersQuery = dbConnection.From <OwnerTableModel>()
                                              .Join <OwnerTableModel, OwnerSettingTableModel>((o, os) => o.Id == os.OwnerTableModelId)
                                              .Where(o => o.Id == petAlertTable.OwnerTableModelId);

                            var ownersResult = await dbConnection.SelectMultiAsync <OwnerTableModel, OwnerSettingTableModel>(ownersQuery)
                                               .ConfigureAwait(false);

                            foreach (var item in ownersResult)
                            {
                                ownerDetails = new OwnerDetails
                                {
                                    FullName        = $"{item.Item1.FirstName} {item.Item1.LastName}",
                                    ProfileImageUrl = item.Item1.ProfileImageUrl,
                                    Email           = item.Item2.ShowEmailForAlerts ? item.Item1.Email : string.Empty,
                                    PhoneNumber1    = item.Item2.ShowPhoneNumberForAlerts ? item.Item1.PhoneNumber1 : string.Empty,
                                    PhoneNumber2    = item.Item2.ShowPhoneNumberForAlerts ? item.Item1.PhoneNumber2 : string.Empty,
                                    Address1        = item.Item2.ShowAddressForAlerts ? item.Item1.Address1 : string.Empty,
                                    Address2        = item.Item2.ShowAddressForAlerts ? item.Item1.Address2 : string.Empty
                                };

                                petAlertDetails.OwnersInfo.Add(ownerDetails);
                            }
                        }
                    }
                }
            }

            return(petAlertDetails);
        }
        public PetAlertDetails GetPetAlertDetails(PetAlertDetailsRequest request)
        {
            var response = _findMyPetClient.JsonClient().Post(request);

            return(response);
        }