public async Task <int> Count(TrackingFilter filter)
        {
            IQueryable <TrackingDAO> Trackings = DataContext.Tracking.AsNoTracking();

            Trackings = DynamicFilter(Trackings, filter);
            return(await Trackings.CountAsync());
        }
        public async Task <ActionResult <bool> > BulkDelete([FromBody] List <long> Ids)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            TrackingFilter TrackingFilter = new TrackingFilter();

            TrackingFilter = await TrackingService.ToFilter(TrackingFilter);

            TrackingFilter.Id = new IdFilter {
                In = Ids
            };
            TrackingFilter.Selects = TrackingSelect.Id;
            TrackingFilter.Skip    = 0;
            TrackingFilter.Take    = int.MaxValue;

            List <Tracking> Trackings = await TrackingService.List(TrackingFilter);

            Trackings = await TrackingService.BulkDelete(Trackings);

            if (Trackings.Any(x => !x.IsValidated))
            {
                return(BadRequest(Trackings.Where(x => !x.IsValidated)));
            }
            return(true);
        }
        /**
         * Creats a PdfImage object using an explicitly provided dictionary and image bytes
         * @param dictionary the dictionary for the image
         * @param samples the samples
         * @since 5.0.3
         */
        protected internal PdfImageObject(PdfDictionary dictionary, byte[] samples, PdfDictionary colorSpaceDic)
        {
            this.dictionary    = dictionary;
            this.colorSpaceDic = colorSpaceDic;
            TrackingFilter trackingFilter = new TrackingFilter();
            IDictionary <PdfName, FilterHandlers.IFilterHandler> handlers = new Dictionary <PdfName, FilterHandlers.IFilterHandler>(FilterHandlers.GetDefaultFilterHandlers());

            handlers[PdfName.JBIG2DECODE] = trackingFilter;
            handlers[PdfName.DCTDECODE]   = trackingFilter;
            handlers[PdfName.JPXDECODE]   = trackingFilter;

            imageBytes = PdfReader.DecodeBytes(samples, dictionary, handlers);

            if (trackingFilter.lastFilterName != null)
            {
                if (PdfName.JBIG2DECODE.Equals(trackingFilter.lastFilterName))
                {
                    streamContentType = ImageBytesType.JBIG2;
                }
                else if (PdfName.DCTDECODE.Equals(trackingFilter.lastFilterName))
                {
                    streamContentType = ImageBytesType.JPG;
                }
                else if (PdfName.JPXDECODE.Equals(trackingFilter.lastFilterName))
                {
                    streamContentType = ImageBytesType.JP2;
                }
            }
            else
            {
                DecodeImageBytes();
            }
        }
        private IQueryable <TrackingDAO> OrFilter(IQueryable <TrackingDAO> query, TrackingFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <TrackingDAO> initQuery = query.Where(q => false);

            foreach (TrackingFilter TrackingFilter in filter.OrFilter)
            {
                IQueryable <TrackingDAO> queryable = query;
                if (TrackingFilter.Id != null && TrackingFilter.Id.HasValue)
                {
                    queryable = queryable.Where(q => q.Id, filter.Id);
                }
                if (TrackingFilter.TrackerId != null && TrackingFilter.TrackerId.HasValue)
                {
                    queryable = queryable.Where(q => q.TrackerId, filter.TrackerId);
                }
                if (TrackingFilter.TargetId != null && TrackingFilter.TargetId.HasValue)
                {
                    queryable = queryable.Where(q => q.TargetId, filter.TargetId);
                }
                if (TrackingFilter.PlaceId != null && TrackingFilter.PlaceId.HasValue)
                {
                    queryable = queryable.Where(q => q.PlaceId, filter.PlaceId);
                }
                if (TrackingFilter.PlaceCheckingId != null && TrackingFilter.PlaceCheckingId.HasValue)
                {
                    queryable = queryable.Where(q => q.PlaceCheckingId, filter.PlaceCheckingId);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
예제 #5
0
        public async Task <List <Tracking> > List(TrackingFilter TrackingFilter)
        {
            try
            {
                List <Tracking> Trackings = await UOW.TrackingRepository.List(TrackingFilter);

                return(Trackings);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(TrackingService));
            }
            return(null);
        }
예제 #6
0
        public async Task <int> Count(TrackingFilter TrackingFilter)
        {
            try
            {
                int result = await UOW.TrackingRepository.Count(TrackingFilter);

                return(result);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(TrackingService));
            }
            return(0);
        }
예제 #7
0
 public async Task <TrackingFilter> ToFilter(TrackingFilter filter)
 {
     if (filter.OrFilter == null)
     {
         filter.OrFilter = new List <TrackingFilter>();
     }
     if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0)
     {
         return(filter);
     }
     foreach (var currentFilter in CurrentContext.Filters)
     {
         TrackingFilter subFilter = new TrackingFilter();
         filter.OrFilter.Add(subFilter);
         List <FilterPermissionDefinition> FilterPermissionDefinitions = currentFilter.Value;
         foreach (FilterPermissionDefinition FilterPermissionDefinition in FilterPermissionDefinitions)
         {
             if (FilterPermissionDefinition.Name == nameof(subFilter.Id))
             {
                 subFilter.Id = FilterBuilder.Merge(subFilter.Id, FilterPermissionDefinition.IdFilter);
             }
             if (FilterPermissionDefinition.Name == nameof(subFilter.TrackerId))
             {
                 subFilter.TrackerId = FilterBuilder.Merge(subFilter.TrackerId, FilterPermissionDefinition.IdFilter);
             }
             if (FilterPermissionDefinition.Name == nameof(subFilter.TargetId))
             {
                 subFilter.TargetId = FilterBuilder.Merge(subFilter.TargetId, FilterPermissionDefinition.IdFilter);
             }
             if (FilterPermissionDefinition.Name == nameof(subFilter.PlaceId))
             {
                 subFilter.PlaceId = FilterBuilder.Merge(subFilter.PlaceId, FilterPermissionDefinition.IdFilter);
             }
             if (FilterPermissionDefinition.Name == nameof(subFilter.PlaceCheckingId))
             {
                 subFilter.PlaceCheckingId = FilterBuilder.Merge(subFilter.PlaceCheckingId, FilterPermissionDefinition.IdFilter);
             }
             if (FilterPermissionDefinition.Name == nameof(CurrentContext.UserId) && FilterPermissionDefinition.IdFilter != null)
             {
                 if (FilterPermissionDefinition.IdFilter.Equal.HasValue && FilterPermissionDefinition.IdFilter.Equal.Value == CurrentUserEnum.IS.Id)
                 {
                 }
                 if (FilterPermissionDefinition.IdFilter.Equal.HasValue && FilterPermissionDefinition.IdFilter.Equal.Value == CurrentUserEnum.ISNT.Id)
                 {
                 }
             }
         }
     }
     return(filter);
 }
        public async Task <List <Tracking> > List(TrackingFilter filter)
        {
            if (filter == null)
            {
                return(new List <Tracking>());
            }
            IQueryable <TrackingDAO> TrackingDAOs = DataContext.Tracking.AsNoTracking();

            TrackingDAOs = DynamicFilter(TrackingDAOs, filter);
            TrackingDAOs = DynamicOrder(TrackingDAOs, filter);
            List <Tracking> Trackings = await DynamicSelect(TrackingDAOs, filter);

            return(Trackings);
        }
        public async Task <ActionResult <int> > Count([FromBody] Tracking_TrackingFilterDTO Tracking_TrackingFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            TrackingFilter TrackingFilter = ConvertFilterDTOToFilterEntity(Tracking_TrackingFilterDTO);

            TrackingFilter = await TrackingService.ToFilter(TrackingFilter);

            int count = await TrackingService.Count(TrackingFilter);

            return(count);
        }
예제 #10
0
 public TrackingRequest(
     ControllerContext controller,
     TrackingFilter model,
     ICacheProvider cache,
     IMessageRequest <TrackingFilterModel, IEnumerable <DomainModels.Business.TrackingDomain.Tracking> > messageQuery,
     MiddlewareConfiguration middlewareConfiguration,
     Guid correlationId,
     IOperationalUnit operationalUnit)
 {
     _cache                   = cache;
     _controller              = controller;
     _correlationId           = correlationId;
     _model                   = model;
     _messageQuery            = messageQuery;
     _opertationalUnit        = operationalUnit;
     _middlewareConfiguration = middlewareConfiguration;
 }
        public async Task <ActionResult <List <Tracking_TrackingDTO> > > List([FromBody] Tracking_TrackingFilterDTO Tracking_TrackingFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            TrackingFilter TrackingFilter = ConvertFilterDTOToFilterEntity(Tracking_TrackingFilterDTO);

            TrackingFilter = await TrackingService.ToFilter(TrackingFilter);

            List <Tracking> Trackings = await TrackingService.List(TrackingFilter);

            List <Tracking_TrackingDTO> Tracking_TrackingDTOs = Trackings
                                                                .Select(c => new Tracking_TrackingDTO(c)).ToList();

            return(Tracking_TrackingDTOs);
        }
        private TrackingFilter ConvertFilterDTOToFilterEntity(Tracking_TrackingFilterDTO Tracking_TrackingFilterDTO)
        {
            TrackingFilter TrackingFilter = new TrackingFilter();

            TrackingFilter.Selects   = TrackingSelect.ALL;
            TrackingFilter.Skip      = Tracking_TrackingFilterDTO.Skip;
            TrackingFilter.Take      = Tracking_TrackingFilterDTO.Take;
            TrackingFilter.OrderBy   = Tracking_TrackingFilterDTO.OrderBy;
            TrackingFilter.OrderType = Tracking_TrackingFilterDTO.OrderType;

            TrackingFilter.Id              = Tracking_TrackingFilterDTO.Id;
            TrackingFilter.TrackerId       = Tracking_TrackingFilterDTO.TrackerId;
            TrackingFilter.TargetId        = Tracking_TrackingFilterDTO.TargetId;
            TrackingFilter.PlaceId         = Tracking_TrackingFilterDTO.PlaceId;
            TrackingFilter.PlaceCheckingId = Tracking_TrackingFilterDTO.PlaceCheckingId;
            TrackingFilter.CreatedAt       = Tracking_TrackingFilterDTO.CreatedAt;
            TrackingFilter.UpdatedAt       = Tracking_TrackingFilterDTO.UpdatedAt;
            return(TrackingFilter);
        }
예제 #13
0
        public async Task <bool> ValidateId(Tracking Tracking)
        {
            TrackingFilter TrackingFilter = new TrackingFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = Tracking.Id
                },
                Selects = TrackingSelect.Id
            };

            int count = await UOW.TrackingRepository.Count(TrackingFilter);

            if (count == 0)
            {
                Tracking.AddError(nameof(TrackingValidator), nameof(Tracking.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
        private async Task <bool> HasPermission(long Id)
        {
            TrackingFilter TrackingFilter = new TrackingFilter();

            TrackingFilter = await TrackingService.ToFilter(TrackingFilter);

            if (Id == 0)
            {
            }
            else
            {
                TrackingFilter.Id = new IdFilter {
                    Equal = Id
                };
                int count = await TrackingService.Count(TrackingFilter);

                if (count == 0)
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #15
0
        /**
         * Creats a PdfImage object using an explicitly provided dictionary and image bytes
         * @param dictionary the dictionary for the image
         * @param samples the samples
         * @since 5.0.3
         */
        protected internal PdfImageObject(PdfDictionary dictionary, byte[] samples, PdfDictionary colorSpaceDic)  {
            this.dictionary = dictionary;
            this.colorSpaceDic = colorSpaceDic;
            TrackingFilter trackingFilter = new TrackingFilter();
            IDictionary<PdfName, FilterHandlers.IFilterHandler> handlers = new Dictionary<PdfName, FilterHandlers.IFilterHandler>(FilterHandlers.GetDefaultFilterHandlers());
            handlers[PdfName.JBIG2DECODE] = trackingFilter;
            handlers[PdfName.DCTDECODE] = trackingFilter;
            handlers[PdfName.JPXDECODE] = trackingFilter;

            imageBytes = PdfReader.DecodeBytes(samples, dictionary, handlers);
            
            if (trackingFilter.lastFilterName != null){
                if (PdfName.JBIG2DECODE.Equals(trackingFilter.lastFilterName))
                    streamContentType = ImageBytesType.JBIG2;
                else if (PdfName.DCTDECODE.Equals(trackingFilter.lastFilterName))
                    streamContentType = ImageBytesType.JPG;
                else if (PdfName.JPXDECODE.Equals(trackingFilter.lastFilterName))
                    streamContentType = ImageBytesType.JP2;
            } else {
                DecodeImageBytes();
            }
        }
 private IQueryable <TrackingDAO> DynamicFilter(IQueryable <TrackingDAO> query, TrackingFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     query = query.Where(q => !q.DeletedAt.HasValue);
     if (filter.CreatedAt != null && filter.CreatedAt.HasValue)
     {
         query = query.Where(q => q.CreatedAt, filter.CreatedAt);
     }
     if (filter.UpdatedAt != null && filter.UpdatedAt.HasValue)
     {
         query = query.Where(q => q.UpdatedAt, filter.UpdatedAt);
     }
     if (filter.Id != null && filter.Id.HasValue)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.TrackerId != null && filter.TrackerId.HasValue)
     {
         query = query.Where(q => q.TrackerId, filter.TrackerId);
     }
     if (filter.TargetId != null && filter.TargetId.HasValue)
     {
         query = query.Where(q => q.TargetId, filter.TargetId);
     }
     if (filter.PlaceId != null && filter.PlaceId.HasValue)
     {
         query = query.Where(q => q.PlaceId, filter.PlaceId);
     }
     if (filter.PlaceCheckingId != null && filter.PlaceCheckingId.HasValue)
     {
         query = query.Where(q => q.PlaceCheckingId, filter.PlaceCheckingId);
     }
     query = OrFilter(query, filter);
     return(query);
 }
        private async Task <List <Tracking> > DynamicSelect(IQueryable <TrackingDAO> query, TrackingFilter filter)
        {
            List <Tracking> Trackings = await query.Select(q => new Tracking()
            {
                Id              = filter.Selects.Contains(TrackingSelect.Id) ? q.Id : default(long),
                TrackerId       = filter.Selects.Contains(TrackingSelect.Tracker) ? q.TrackerId : default(long),
                TargetId        = filter.Selects.Contains(TrackingSelect.Target) ? q.TargetId : default(long),
                PlaceId         = filter.Selects.Contains(TrackingSelect.Place) ? q.PlaceId : default(long),
                PlaceCheckingId = filter.Selects.Contains(TrackingSelect.PlaceChecking) ? q.PlaceCheckingId : default(long),
                Place           = filter.Selects.Contains(TrackingSelect.Place) && q.Place != null ? new Place
                {
                    Id           = q.Place.Id,
                    Name         = q.Place.Name,
                    PlaceGroupId = q.Place.PlaceGroupId,
                    Radius       = q.Place.Radius,
                    Latitude     = q.Place.Latitude,
                    Longtitude   = q.Place.Longtitude,
                } : null,
                PlaceChecking = filter.Selects.Contains(TrackingSelect.PlaceChecking) && q.PlaceChecking != null ? new PlaceChecking
                {
                    Id                    = q.PlaceChecking.Id,
                    AppUserId             = q.PlaceChecking.AppUserId,
                    PlaceId               = q.PlaceChecking.PlaceId,
                    PlaceCheckingStatusId = q.PlaceChecking.PlaceCheckingStatusId,
                    CheckInAt             = q.PlaceChecking.CheckInAt,
                    CheckOutAt            = q.PlaceChecking.CheckOutAt,
                } : null,
                Target = filter.Selects.Contains(TrackingSelect.Target) && q.Target != null ? new AppUser
                {
                    Id          = q.Target.Id,
                    Username    = q.Target.Username,
                    Password    = q.Target.Password,
                    DisplayName = q.Target.DisplayName,
                    Email       = q.Target.Email,
                    Phone       = q.Target.Phone,
                } : null,
                Tracker = filter.Selects.Contains(TrackingSelect.Tracker) && q.Tracker != null ? new AppUser
                {
                    Id          = q.Tracker.Id,
                    Username    = q.Tracker.Username,
                    Password    = q.Tracker.Password,
                    DisplayName = q.Tracker.DisplayName,
                    Email       = q.Tracker.Email,
                    Phone       = q.Tracker.Phone,
                } : null,
            }).ToListAsync();

            return(Trackings);
        }
        private IQueryable <TrackingDAO> DynamicOrder(IQueryable <TrackingDAO> query, TrackingFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case TrackingOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case TrackingOrder.Tracker:
                    query = query.OrderBy(q => q.TrackerId);
                    break;

                case TrackingOrder.Target:
                    query = query.OrderBy(q => q.TargetId);
                    break;

                case TrackingOrder.Place:
                    query = query.OrderBy(q => q.PlaceId);
                    break;

                case TrackingOrder.PlaceChecking:
                    query = query.OrderBy(q => q.PlaceCheckingId);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case TrackingOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case TrackingOrder.Tracker:
                    query = query.OrderByDescending(q => q.TrackerId);
                    break;

                case TrackingOrder.Target:
                    query = query.OrderByDescending(q => q.TargetId);
                    break;

                case TrackingOrder.Place:
                    query = query.OrderByDescending(q => q.PlaceId);
                    break;

                case TrackingOrder.PlaceChecking:
                    query = query.OrderByDescending(q => q.PlaceCheckingId);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }