public Task <ActionResult <IPaginationResult <LoadingLocation> > > Get([FromBody] LoadingLocationSearchRequest request) { return(this._loadingLocationsService.Search(request).Convert <IPaginationResult <LoadingLocation> >(this)); }
public async Task <IWrappedResponse> Search(LoadingLocationSearchRequest request) { var query = _olmaLoadingLocationRepo.FindAll() .AsNoTracking(); #region security // TODO add security #endregion #region convert search request if (request.Divisions?.Count > 0) { var divisionIds = request.Divisions; query = query.Where(l => l.CustomerDivisionId != null && divisionIds.Contains((int)l.CustomerDivisionId)); } if (request.Partners?.Count > 0) { var partnerIds = request.Partners; query = query.Where(l => l.CustomerPartnerId != null && partnerIds.Contains((int)l.CustomerPartnerId)); } #endregion #region ordering query = query.OrderBy(l => l.Id); #endregion var projectedQuery = query.ProjectTo <LoadingLocation>(Mapper.ConfigurationProvider); #region Add PublicHolidays var statesDict = _olmaCountryStateRepo.FindAll().Include(c => c.PublicHolidays).ToDictionary(s => s.Id, s => s.PublicHolidays); var countriesDict = _olmaCountryRepo.FindAll().Include(c => c.PublicHolidays).ToDictionary(c => c.Id, c => c.PublicHolidays); var mappedResult = projectedQuery.ToPaginationResult(request); foreach (var loadingLocation in mappedResult.Data) { var publicHolidays = new List <PublicHoliday>(); var stateId = loadingLocation.Address.State; var countryId = loadingLocation.Address.Country; if (stateId != null && statesDict.ContainsKey((int)stateId)) { publicHolidays.AddRange(Mapper.Map <ICollection <Olma.PublicHoliday>, ICollection <PublicHoliday> >(statesDict[(int)stateId])); } if (countryId != null && countriesDict.ContainsKey((int)countryId)) { publicHolidays.AddRange(Mapper.Map <ICollection <Olma.PublicHoliday>, ICollection <PublicHoliday> >(countriesDict[(int)countryId])); } loadingLocation.PublicHolidays = publicHolidays.AsEnumerable(); } #endregion return(Ok(mappedResult)); }