예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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;
            }
        }
예제 #5
0
        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;
            }
        }