Ejemplo n.º 1
0
        public SummaryDataPageResponse <BackstageJob> Report(BackstageJobSearchModel searchModel)
        {
            var predicate = search(searchModel);

            var query = GetDefaultQuery().Where(predicate);

            var count = query.Count();

            var group_data = query.GroupBy(x => x.Action)
                             .Select(x => new JobGroupState
            {
                Action = x.Key,
                Count  = x.Count()
            }).ToArray();

            query = ApplySortingRule(query, searchModel, x => x.BackstageJobPK);
            query = ApplyPagingRule(query, searchModel);

            var brokers = ObjectRegistry.GetObjects <IJobServiceBroker>();
            BackstageJobThreadState state = null;

            if (brokers.Any())
            {
                var broker = brokers.First();
                state           = broker.GetState();
                state.JobGroups = group_data;
            }

            return(new SummaryDataPageResponse <BackstageJob>(query.ToList(), searchModel.PageNumber, count, false)
            {
                Summary = state
            });
        }
Ejemplo n.º 2
0
        public ActionResponse SoftDelete(BackstageJobSearchModel searchModel)
        {
            var predicate = search(searchModel);
            var count     = Repository.BulkUpdate(predicate, x => new BackstageJob()
            {
                Status = States.Removed
            });

            return(new ActionResponse($"تعداد {count} وظیفه حذف منطقی شدند.")
            {
                Success = true
            });
        }
Ejemplo n.º 3
0
        public ActionResponse RestartAll(BackstageJobSearchModel searchModel)
        {
            var predicate = search(searchModel);
            var count     = Repository.BulkUpdate(predicate, x => new BackstageJob()
            {
                Status    = States.New,
                TimeToRun = DateTime.Now.AddSeconds(-1),
            });

            return(new ActionResponse($"تعداد {count} وظیفه در صف اجرا قرار گرفتند.")
            {
                Success = true
            });
        }
Ejemplo n.º 4
0
        private Expression <Func <BackstageJob, bool> > search(BackstageJobSearchModel searchModel)
        {
            Expression <Func <BackstageJob, bool> > query = PredicateBuilder.New <BackstageJob>(true);

            query = PredicateBuilder.And(query, x => x.Status != States.Removed);

            if (!string.IsNullOrEmpty(searchModel.RunAs))
            {
                query = PredicateBuilder.And(query, x => x.RunAs.Contains(searchModel.RunAs));
            }
            if (!string.IsNullOrEmpty(searchModel.Service))
            {
                query = PredicateBuilder.And(query, q => q.Service.Contains(searchModel.Service));
            }
            if (!string.IsNullOrEmpty(searchModel.Action))
            {
                query = PredicateBuilder.And(query, q => q.Action.Contains(searchModel.Action));
            }
            if (searchModel.RunDtFrom != null && searchModel.RunDtFrom > DateTime.MinValue)
            {
                query = PredicateBuilder.And(query, q => q.RunDt >= searchModel.RunDtFrom.Value);
            }
            if (searchModel.RunDtTo != null && searchModel.RunDtTo > DateTime.MinValue)
            {
                query = PredicateBuilder.And(query, q => q.RunDt <= searchModel.RunDtTo.Value);
            }
            if (searchModel.TimeToRunFrom != null && searchModel.TimeToRunFrom > DateTime.MinValue)
            {
                query = PredicateBuilder.And(query, q => q.TimeToRun >= searchModel.TimeToRunFrom.Value);
            }
            if (searchModel.TimeToRunTo != null && searchModel.TimeToRunTo > DateTime.MinValue)
            {
                query = PredicateBuilder.And(query, q => q.TimeToRun <= searchModel.TimeToRunTo.Value);
            }
            if (searchModel.Status != null)
            {
                query = PredicateBuilder.And(query, q => q.Status == searchModel.Status);
            }
            if (searchModel.Priority != null)
            {
                query = PredicateBuilder.And(query, q => q.Priority == searchModel.Priority);
            }
            if (searchModel.RetryCount != null)
            {
                query = PredicateBuilder.And(query, q => q.RetryCount == searchModel.RetryCount);
            }
            if (searchModel.BackstageJobPK != null)
            {
                query = PredicateBuilder.And(query, q => q.BackstageJobPK == searchModel.BackstageJobPK.Value);
            }
            if (!string.IsNullOrEmpty(searchModel.Queue))
            {
                query = PredicateBuilder.And(query, q => q.Queue == searchModel.Queue);
            }
            if (!string.IsNullOrEmpty(searchModel.Server))
            {
                query = PredicateBuilder.And(query, q => q.Server == searchModel.Server);
            }
            if (!string.IsNullOrEmpty(searchModel.Error))
            {
                query = PredicateBuilder.And(query, q => !string.IsNullOrEmpty(q.Error) && q.Error.IndexOf(searchModel.Error) >= 0);
            }
            if (!string.IsNullOrEmpty(searchModel.Code))
            {
                query = PredicateBuilder.And(query, q => q.UniqueCode.IndexOf(searchModel.Code) >= 0);
            }
            if (!String.IsNullOrEmpty(searchModel.Tags))
            {
                query = PredicateBuilder.And(query, q => !string.IsNullOrEmpty(q.Tags) && q.Tags.IndexOf(searchModel.Tags) >= 0);
            }

            query = query.Reduce(nameof(searchModel), searchModel);

            return(query);
        }