Пример #1
0
        public async Task <List <Route> > GetAllAsync(
            UserAvailableRoutes userRoutesModel,
            int?projectId,
            bool?active)
        {
            if (userRoutesModel == null)
            {
                userRoutesModel = new UserAvailableRoutes();
            }

            if (userRoutesModel.ProjectId.HasValue)
            {
                projectId = userRoutesModel.ProjectId;
            }

            Expression <Func <Route, bool> > filter = x =>
                                                      (!active.HasValue || x.RouteActive == active.Value) &&
                                                      (!projectId.HasValue || x.ProjectRoutes.Any(p => p.ProjectId == projectId.Value)) &&
                                                      (userRoutesModel.RouteIds == null || userRoutesModel.RouteIds.Contains(x.Id));

            var result = await FindAsync(filter);

            SortRoutes(result);
            return(result);
        }
Пример #2
0
        public Task <PageResult <Objects> > FindByParamsAsync(
            string plateNumber,
            string routeName,
            int?carTypeId,
            int?projectId,
            ModelFormatsEnum format,
            bool?active,
            UserAvailableRoutes userRoutesModel,
            int?carBrandId,
            int?providerId,
            int?yearRelease,
            string blockNumber,
            int?blockTypeId,
            string sortBy,
            OrderByEnum orderBy,
            int?page,
            int?pageSize)
        {
            var includes = _includesPure;

            if (format == ModelFormatsEnum.Light)
            {
                includes = _includesLight;
            }
            else if (format == ModelFormatsEnum.Full)
            {
                includes = _includesFull;
            }

            var filter = GetSearchFilter(
                plateNumber,
                routeName,
                carTypeId,
                projectId,
                active,
                userRoutesModel,
                carBrandId,
                providerId,
                yearRelease,
                blockNumber,
                blockTypeId,
                sortBy,
                orderBy);

            var sortByFilter = GetSortExpression(sortBy);

            return(FindPagedAsync(
                       filter,
                       sortByFilter,
                       orderBy,
                       page,
                       pageSize,
                       includes));
        }
Пример #3
0
        private Expression <Func <Objects, bool> > GetSearchFilter(
            string plateNumber,
            string routeName,
            int?carTypeId,
            int?projectId,
            bool?active,
            UserAvailableRoutes userRoutesModel,
            int?carBrandId,
            int?providerId,
            int?yearRelease,
            string blockNumber,
            int?blockTypeId,
            string sortBy,
            OrderByEnum orderBy)
        {
            var locked = !active;

            if (userRoutesModel.ProjectId.HasValue)
            {
                projectId = userRoutesModel.ProjectId;
            }

            if (!string.IsNullOrEmpty(plateNumber))
            {
                plateNumber = plateNumber.ToUpper();
            }

            if (!string.IsNullOrEmpty(routeName))
            {
                routeName = routeName.PrepareRouteName();
            }

            Expression <Func <Objects, bool> > filter = x => (string.IsNullOrEmpty(plateNumber) || x.Name.Contains(plateNumber)) &&
                                                        (!projectId.HasValue || x.ProjectId == projectId) &&
                                                        (!carBrandId.HasValue || x.CarBrandId == carBrandId) &&
                                                        (!providerId.HasValue || x.ProviderId == providerId) &&
                                                        (string.IsNullOrEmpty(routeName) || x.Route.Name.Equals(routeName)) &&
                                                        (!carTypeId.HasValue || x.CarBrand.CarTypeId == carTypeId) &&
                                                        (!locked.HasValue || x.ObjectOutput == locked.Value) &&
                                                        (!yearRelease.HasValue || x.YearRelease == yearRelease) &&
                                                        (string.IsNullOrEmpty(blockNumber) || x.Phone.ToString().Contains(blockNumber) || x.Block.BlockNumber.ToString().Contains(blockNumber)) &&
                                                        (!blockTypeId.HasValue || x.Block.BlockTypeId == blockTypeId) &&
                                                        (userRoutesModel.RouteIds == null || (x.LastRouteId.HasValue && userRoutesModel.RouteIds.Contains(x.LastRouteId.Value)));

            return(filter);
        }
Пример #4
0
        public async Task <UserAvailableRoutes> GetAvailableRoutesModel(ClaimsPrincipal userPrincipal)
        {
            if (userPrincipal == null ||
                userPrincipal.IsInRole(RoleNames.Administrator) ||
                userPrincipal.IsInRole(RoleNames.Dispatcher))
            {
                return(new UserAvailableRoutes());
            }

            var user = await GetUserAsync(userPrincipal);

            var result = new UserAvailableRoutes
            {
                ProjectId = user.ProjectId,
                RouteIds  = user.RouteIds
            };

            return(result);
        }
Пример #5
0
        public Task <List <Objects> > FindAllForFileAsync(
            string plateNumber,
            string routeName,
            int?carTypeId,
            int?projectId,
            bool?active,
            UserAvailableRoutes userRoutesModel,
            int?carBrandId,
            int?providerId,
            int?yearRelease,
            string blockNumber,
            int?blockTypeId,
            string sortBy,
            OrderByEnum orderBy)
        {
            var filter = GetSearchFilter(
                plateNumber,
                routeName,
                carTypeId,
                projectId,
                active,
                userRoutesModel,
                carBrandId,
                providerId,
                yearRelease,
                blockNumber,
                blockTypeId,
                sortBy,
                orderBy);

            var sortByFilter = GetSortExpression(sortBy);

            return(FindOrderedAsync(
                       filter,
                       sortByFilter,
                       orderBy,
                       _includesForPrint));
        }