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 }); }
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 }); }
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 }); }
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); }