/// <summary> /// /// </summary> /// <param name="keyword"></param> /// <param name="type"></param> /// <param name="repeatType"></param> /// <param name="status"></param> /// <param name="enabled"></param> /// <param name="scope"></param> /// <param name="fromTime"></param> /// <param name="toTime"></param> /// <param name="order"></param> /// <param name="limit"></param> /// <returns></returns> public static List <SchedulerModel> GetAll(string keyword, int?type, SchedulerRepeatType?repeatType, SchedulerStatus?status, bool?enabled, SchedulerScope?scope, DateTime?fromTime, DateTime?toTime, string order, int limit) { var entities = SchedulerServices.GetAll(keyword, type, repeatType, status, enabled, scope, fromTime, toTime, order, limit); return(entities.Select(e => new SchedulerModel(e)).ToList()); }
/// <summary> /// /// </summary> /// <param name="keyword"></param> /// <param name="type"></param> /// <param name="repeatType"></param> /// <param name="status"></param> /// <param name="enabled"></param> /// <param name="scope"></param> /// <param name="fromTime"></param> /// <param name="toTime"></param> /// <param name="order"></param> /// <param name="start"></param> /// <param name="pageSize"></param> /// <returns></returns> public static PageResult <SchedulerModel> GetPaging(string keyword, int?type, SchedulerRepeatType?repeatType, SchedulerStatus?status, bool?enabled, SchedulerScope?scope, DateTime?fromTime, DateTime?toTime, string order, int start, int pageSize) { var result = SchedulerServices.GetPaging(keyword, type, repeatType, status, enabled, scope, fromTime, toTime, order, start, pageSize); return(new PageResult <SchedulerModel>(result.Total, result.Data.Select(e => new SchedulerModel(e)).ToList())); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Delete_Click(object sender, DirectEventArgs e) { if (!string.IsNullOrEmpty(hdfMonth.Text) && !string.IsNullOrEmpty(hdfYear.Text)) { if (!string.IsNullOrEmpty(hdfTimeSheetGroupListId.Text)) { var groupWorkShiftId = Convert.ToInt32(hdfTimeSheetGroupListId.Text); //get all detail workShift var order = " [StartDate] ASC "; var lstWorkShift = TimeSheetWorkShiftController.GetAll(null, false, groupWorkShiftId, null, null, null, null, Convert.ToInt32(hdfMonth.Text), Convert.ToInt32(hdfYear.Text), order, null); var listWorkShiftIds = lstWorkShift.Select(ws => ws.Id).ToList(); if (listWorkShiftIds.Count > 0) { TimeSheetEventController.DeleteByCondition(listWorkShiftIds, null, null, null, TimeSheetAdjustmentType.Default); } //Update status schedule create new timeSheet var scheduler = SchedulerServices.GetSchedulerByName(); if (scheduler != null) { scheduler.Status = SchedulerStatus.Ready; scheduler.Arguments = "-m {0} -y {1} -groupWorkShiftId {2}".FormatWith(hdfMonth.Text, hdfYear.Text, hdfTimeSheetGroupListId.Text); SchedulerServices.Update(scheduler); } } wdWindow.Hide(); } }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public static SchedulerModel Update(SchedulerModel model) { // get entity from database var entity = SchedulerServices.GetById(model.Id); // set new properties from model model.FillEntity(ref entity); // update entity return(new SchedulerModel(SchedulerServices.Update(entity))); }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public static SchedulerModel Create(SchedulerModel model) { // init entity var entity = new Scheduler(); // set properties from model model.FillEntity(ref entity); // insert entity return(new SchedulerModel(SchedulerServices.Create(entity))); }
/// <summary> /// /// </summary> /// <param name="schedulerName"></param> /// <returns></returns> public static SchedulerModel GetByName(string schedulerName) { // init condition var condition = Constant.ConditionDefault; if (string.IsNullOrEmpty(schedulerName)) { return(null); } condition += " AND [Name] = '{0}'".FormatWith(schedulerName); var entity = SchedulerServices.GetByCondition(condition); return(entity != null ? new SchedulerModel(entity) : null); }
protected void Page_Load(object sender, EventArgs e) { // init time var time = DateTime.Now.AddMinutes(1); // init to time var toTime = new DateTime(time.Year, time.Month, time.Day, time.Hour, time.Minute, 0); // get ready scheduler var scheduler = SchedulerServices.GetById(27); //SchedulerServices.GetAll(null, null, null, SchedulerStatus.Ready, true, SchedulerScope.Internal, null, toTime, null, 1).FirstOrDefault(); if (scheduler != null) { // run scheduler RunScheduler(scheduler); } }
/// <summary> /// /// </summary> /// <param name="context"></param> public async Task Execute(IJobExecutionContext context) { try { // init time var time = DateTime.Now.AddMinutes(1); // init to time var toTime = new DateTime(time.Year, time.Month, time.Day, time.Hour, time.Minute, 0); // get ready scheduler var scheduler = SchedulerServices.GetAll(null, null, null, SchedulerStatus.Ready, true, SchedulerScope.Internal, null, toTime, null, 1).FirstOrDefault(); if (scheduler != null) { // run scheduler await RunScheduler(scheduler); } } catch (Exception ex) { // create log var systemLog = new SystemLogModel { Username = "******", Thread = "JobScheduler", Action = SystemAction.TrackError, ShortDescription = ex.Message, LongDescription = ex.ToString(), IsException = true, CreatedDate = DateTime.Now }; // log exception SystemLogController.Create(systemLog); } }
/// <summary> /// /// </summary> /// <param name="scheduler"></param> private Task RunScheduler(Scheduler scheduler) { try { // next run time DateTime?nextRunTime = null; if (scheduler.NextRunTime == null) { return(Task.FromCanceled(new CancellationToken(true))); } // switch repeat type switch (scheduler.RepeatType) { case SchedulerRepeatType.OneTime: break; case SchedulerRepeatType.Monthly: nextRunTime = scheduler.NextRunTime.Value.AddMonths(1); break; case SchedulerRepeatType.Weekly: nextRunTime = scheduler.NextRunTime.Value.AddDays(7); break; case SchedulerRepeatType.Daily: nextRunTime = scheduler.NextRunTime.Value.AddDays(1); break; case SchedulerRepeatType.Hourly: nextRunTime = scheduler.NextRunTime.Value.AddHours(1); break; case SchedulerRepeatType.IntervalTime: if (scheduler.IntervalTime > 0) { nextRunTime = scheduler.NextRunTime.Value.AddMinutes(scheduler.IntervalTime); } break; default: return(Task.FromCanceled(new CancellationToken(true))); } // expired time DateTime?expiredTime = null; if (scheduler.ExpiredAfter > 0 && scheduler.RepeatType != SchedulerRepeatType.OneTime) { expiredTime = scheduler.NextRunTime.Value.AddMinutes(scheduler.ExpiredAfter); } // update current scheduler status to running SchedulerServices.Update(scheduler.Id, SchedulerStatus.Running, DateTime.Now, nextRunTime, expiredTime); // init scheduler type var schedulerType = cat_BaseServices.GetById("cat_SchedulerType", scheduler.SchedulerTypeId); // init job type var jobType = Type.GetType("Web.Core.Framework.{0},Web.Core.Framework".FormatWith(schedulerType.Name)); if (jobType == null) { return(Task.FromCanceled(new CancellationToken(true))); } // init job var job = Activator.CreateInstance(jobType); // int job property ((BaseTask)job).Id = scheduler.Id; ((BaseTask)job).Name = scheduler.Name; ((BaseTask)job).Arguments = scheduler.Arguments; // execute job ((BaseTask)job).Excute(scheduler.Arguments); // update scheduler status when complete SchedulerServices.Update(scheduler.Id, scheduler.RepeatType == SchedulerRepeatType.OneTime ? SchedulerStatus.Completed : SchedulerStatus.Ready); return(Task.CompletedTask); } catch (Exception ex) { // log error SystemLogController.Create(new SystemLogModel("system", "RunScheduler", SystemAction.TrackError, SystemLogType.ScheduleError, ex.Message, ex.ToString(), true)); return(Task.FromException(ex)); } }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public static SchedulerModel GetById(int id) { var entity = SchedulerServices.GetById(id); return(new SchedulerModel(entity)); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public static bool Delete(int id) { // delete entity return(SchedulerServices.Delete(id)); }
protected void storeScheduler_OnRefreshData(object sender, StoreRefreshDataEventArgs e) { storeScheduler.DataSource = SchedulerServices.GetAll(); storeScheduler.DataBind(); }