Ejemplo n.º 1
0
        public async Task <List <PetLost> > Post(PetSearchByDateRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return(await _petSearchProvider.GetPetLostByDateAsync(request)
                   .ConfigureAwait(false));
        }
Ejemplo n.º 2
0
        public List <PetLost> SearchLostPets(DateTime?from, DateTime?to)
        {
            var request = new PetSearchByDateRequest
            {
                From = from,
                To   = to
            };

            return(_petSearchServiceClient.SearchLostPets(request));
        }
Ejemplo n.º 3
0
        public async Task <List <PetLost> > GetPetLostByDateAsync(PetSearchByDateRequest request)
        {
            var result = new List <PetLost>();

            using (var dbConnection = _dbConnectionFactory.Open())
            {
                var lostQuery = dbConnection.From <PetAlertTableModel>()
                                .LeftJoin <PetAlertTableModel, PetTableModel>((pa, p) => pa.PetId.HasValue && pa.PetId.Value == p.Id)
                                .LeftJoin <PetAlertTableModel, OwnerTableModel>((pa, o) => pa.OwnerTableModelId == o.Id)
                                .LeftJoin <PetAlertTableModel, PetImageTableModel>((pa, pi) => pa.PetId == pi.PetTableModelId && pi.IsProfileImage)
                                .Where(pa => pa.AlertStatus == (int)AlertStatusEnum.Active);

                if (request.From.HasValue && request.To.HasValue)
                {
                    lostQuery = lostQuery.And(pa => pa.CreatedOn >= request.From.Value && pa.CreatedOn <= request.To.Value);
                }

                var lostResults = await dbConnection.SelectMultiAsync <PetAlertTableModel, PetTableModel, OwnerTableModel, PetImageTableModel>(lostQuery)
                                  .ConfigureAwait(false);

                // --- PetAlertImages ---
                var imagesQuery = dbConnection.From <PetAlertTableModel>()
                                  .Join <PetAlertTableModel, PetAlertImageTableModel>((pa, pai) => pa.Id == pai.PetAlertTableModelId)
                                  .Where(pa => pa.AlertStatus == (int)AlertStatusEnum.Active);

                if (request.From.HasValue && request.To.HasValue)
                {
                    imagesQuery = imagesQuery.And(pa => pa.CreatedOn >= request.From.Value && pa.CreatedOn <= request.To.Value);
                }

                var imagesResults = await dbConnection.SelectMultiAsync <PetAlertTableModel, PetAlertImageTableModel>(imagesQuery)
                                    .ConfigureAwait(false);

                if (lostResults.Any())
                {
                    result = FormatLostResults(lostResults);
                }

                if (imagesResults.Count > 0)
                {
                    var groupedImages = imagesResults.GroupBy(x => x.Item1.Code).ToList();

                    foreach (var groupedImage in groupedImages)
                    {
                        var foundAlertImage = result.Where(a => a.AlertCode == groupedImage.Key);
                        if (foundAlertImage != null)
                        {
                            result.Find(r => r.AlertCode == groupedImage.Key).PetProfileImageUrl = groupedImage.FirstOrDefault(x => x.Item2.Id > 0).Item2.ImageUrl;
                        }
                    }
                }
            }

            return(result);
        }
        public List <PetLost> SearchLostPets(PetSearchByDateRequest request)
        {
            var response = _findMyPetClient.JsonClient().Post(request);

            return(response);
        }