public IList <Load> Get(LoadSearchCriteria criteria) { var loads = _zaladunki .Where(l => l.LoadDate >= criteria.BeginDate) .Where(l => l.LoadDate <= criteria.EndDate) .Where(l => !criteria.Status.HasValue || l.LoadStatus == criteria.Status.Value) .ToList(); return(loads); }
public IHttpActionResult Get([FromUri] LoadSearchCriteria criteria) { var loads = LoadsService.Get(criteria.BeginDate); if (loads == null || !loads.Any()) { return(new CustomActionResult("Brak danych")); } return(Ok(loads)); }
public static Expression <Func <LoadViewData, bool> > GetCarrierLoadFilter(LoadSearchCriteria loadSearchCriteria) { var originStartDate = loadSearchCriteria.OrigDateStart; var originEndDate = loadSearchCriteria.OrigDateEnd.HasValue ? loadSearchCriteria.OrigDateEnd.Value.AddDays(1) : originStartDate?.AddDays(1); var destStartDate = loadSearchCriteria.DestDateStart; var destEndDate = loadSearchCriteria.DestDateStart.HasValue ? loadSearchCriteria.DestDateEnd.Value.AddDays(1) : destStartDate?.AddDays(1); var equipmentIds = loadSearchCriteria.EquipmentType != null?Newtonsoft.Json.JsonConvert.DeserializeObject <List <string> >(loadSearchCriteria.EquipmentType) : new List <string>(); var serviceTypeIds = loadSearchCriteria.ServiceTypes != null?loadSearchCriteria.ServiceTypes.ToList() : new List <int>(); Guid quickSearchGuid; var quickSearchIsGuid = Guid.TryParse(loadSearchCriteria.QuickSearch, out quickSearchGuid); return(x => ( string.IsNullOrWhiteSpace(loadSearchCriteria.QuickSearch) || ( x.ReferenceLoadDisplay.Contains(loadSearchCriteria.QuickSearch) || x.ReferenceLoadId.Contains(loadSearchCriteria.QuickSearch) || (quickSearchIsGuid && x.LoadId == quickSearchGuid) || x.EquipmentCategoryDesc.Contains(loadSearchCriteria.QuickSearch) || x.EquipmentCategoryId.Contains(loadSearchCriteria.QuickSearch) || x.EquipmentId.Contains(loadSearchCriteria.QuickSearch) || x.EquipmentType.Contains(loadSearchCriteria.QuickSearch) || x.OriginCity.Contains(loadSearchCriteria.QuickSearch) || x.DestCity.Contains(loadSearchCriteria.QuickSearch) || x.OriginState.Contains(loadSearchCriteria.QuickSearch) || x.DestState.Contains(loadSearchCriteria.QuickSearch) || (x.DestCity + ", " + x.DestState).Contains(loadSearchCriteria.QuickSearch) || (x.OriginCity + ", " + x.OriginState).Contains(loadSearchCriteria.QuickSearch) || x.Scac.Contains(loadSearchCriteria.QuickSearch) ) ) && (!loadSearchCriteria.OrigDateStart.HasValue || ((x.OriginEarlyDtTm >= loadSearchCriteria.OrigDateStart && x.OriginEarlyDtTm <= originEndDate) || (x.OriginLateDtTm >= loadSearchCriteria.OrigDateStart && x.OriginLateDtTm <= originEndDate)) ) && (!loadSearchCriteria.DestDateStart.HasValue || ((x.DestEarlyDtTm >= loadSearchCriteria.DestDateStart && x.DestEarlyDtTm <= destEndDate) || (x.DestLateDtTm >= loadSearchCriteria.DestDateStart && x.DestLateDtTm <= destEndDate)) ) && (!equipmentIds.Any() || equipmentIds.Contains(x.EquipmentId)) && ( !loadSearchCriteria.OrigLat.HasValue || ( 7926 * Math.Asin(Math.Sqrt(Math.Sin(((Math.PI / 180) * (x.OriginLat - loadSearchCriteria.OrigLat.Value)) / 2) * Math.Sin(((Math.PI / 180) * (x.OriginLat - loadSearchCriteria.OrigLat.Value)) / 2) + Math.Cos((Math.PI / 180) * loadSearchCriteria.OrigLat.Value) * Math.Cos((Math.PI / 180) * (x.OriginLat)) * Math.Sin(((Math.PI / 180) * (x.OriginLng - loadSearchCriteria.OrigLng.Value)) / 2) * Math.Sin(((Math.PI / 180) * (x.OriginLng - loadSearchCriteria.OrigLng.Value)) / 2))) ) <= loadSearchCriteria.OrigDH ) && ( !loadSearchCriteria.DestLat.HasValue || ( 7926 * Math.Asin(Math.Sqrt(Math.Sin(((Math.PI / 180) * (x.DestLat - loadSearchCriteria.DestLat.Value)) / 2) * Math.Sin(((Math.PI / 180) * (x.DestLat - loadSearchCriteria.DestLat.Value)) / 2) + Math.Cos((Math.PI / 180) * loadSearchCriteria.DestLat.Value) * Math.Cos((Math.PI / 180) * (x.OriginLat)) * Math.Sin(((Math.PI / 180) * (x.DestLng - loadSearchCriteria.DestLng.Value)) / 2) * Math.Sin(((Math.PI / 180) * (x.DestLng - loadSearchCriteria.DestLng.Value)) / 2))) ) <= loadSearchCriteria.DestDH ) && (loadSearchCriteria.OrigState == null || x.OriginState == loadSearchCriteria.OrigState) && (loadSearchCriteria.DestState == null || x.DestState == loadSearchCriteria.DestState) && (!serviceTypeIds.Any() || x.LoadServiceTypes.Any(y => serviceTypeIds.Contains(y.ServiceTypeId)))); }
public async Task <IActionResult> GetLoadsBySearchType(ShipperSearchTypeData searchType, [FromBody] LoadSearchCriteria loadSearchCriteria) { try { if (!_userContext.UserId.HasValue) { throw new EmptyUserIdException("Invalid UserId"); } var pageableQuery = _shippingService.GetLoadsBySearchType(searchType); if (loadSearchCriteria != null) { pageableQuery.Filter(DomainServices.Utilities.QueryFilters.GetShippingLoadFilter(loadSearchCriteria)); } var response = await pageableQuery .HandleSorting(Request) .HandlePaging(Request) .ToPageableResponse(); return(Success(response)); } catch (Exception e) { throw e; } }
public async Task <IActionResult> Search(SearchTypeData searchType, [FromBody] LoadSearchCriteria loadSearchCriteria) { try { if (!_userContext.UserId.HasValue) { throw new EmptyUserIdException("Invalid UserId"); } switch (searchType) { case SearchTypeData.UserLanes: // We can do this out of order of a typical linq query b/c the Pageable Query will handle applying it to the IQueryable in the correct order. var pageableLoads = _loadService .GetAllOpenLoads(_userContext.UserId.Value) .HandleSorting(Request) .HandlePaging(Request); if (loadSearchCriteria != null) { pageableLoads.Filter(QueryFilters.GetCarrierLoadFilter(loadSearchCriteria)); } return(Success(await pageableLoads.ToPageableResponse())); case SearchTypeData.Booked: { pageableLoads = _loadService .GetBookedLoads(_userContext.UserId.Value) .HandleSorting(Request) .HandlePaging(Request); if (loadSearchCriteria != null) { pageableLoads.Filter(QueryFilters.GetCarrierLoadFilter(loadSearchCriteria)); } var pageableResult = await pageableLoads.ToPageableResponse(); if (string.IsNullOrWhiteSpace(Request.Query[PageableQueryConstants.OrderByQuery])) { var loads = pageableResult.Data; var visibilityTypes = _util.GetVisibilityTypes(_userContext.UserId.Value); if (visibilityTypes != null && visibilityTypes.Count > 0) { var loadsToProcess = loads.Where(x => x.DestLateDtTm >= DateTime.Now).ToList(); if (loadsToProcess.Count() > 0) { _util.CheckLoadsForVisibility(loadsToProcess, _userContext.Token, visibilityTypes); } } var loadsWithWarnings = loads.Where(x => x.ShowVisibilityWarning == true).OrderBy(x => x.OriginLateDtTm).ToList(); var loadsNoWarnings = loads.Where(x => x.ShowVisibilityWarning == false).OrderByDescending(x => x.OriginLateDtTm).ToList(); pageableResult.Data.Clear(); pageableResult.Data.AddRange(loadsWithWarnings); pageableResult.Data.AddRange(loadsNoWarnings); } return(Success(pageableResult)); } case SearchTypeData.Delivered: pageableLoads = _loadService .GetDeliveredLoads(_userContext.UserId.Value) .HandleSorting(Request) .HandlePaging(Request); if (loadSearchCriteria != null) { pageableLoads.Filter(QueryFilters.GetCarrierLoadFilter(loadSearchCriteria)); } return(Success(await pageableLoads.ToPageableResponse())); default: return(Error <List <LoadData> >(new Exception("SearchType not valid"))); } } catch (UnauthorizedAccessException ex) { return(Forbidden <ResponseMessage <List <LoadData> > >(ex)); } catch (Exception ex) { throw ex; } }