public async Task <List <PetLost> > Post(PetSearchByDateRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } return(await _petSearchProvider.GetPetLostByDateAsync(request) .ConfigureAwait(false)); }
public List <PetLost> SearchLostPets(DateTime?from, DateTime?to) { var request = new PetSearchByDateRequest { From = from, To = to }; return(_petSearchServiceClient.SearchLostPets(request)); }
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); }