Exemple #1
0
        protected virtual SitecronJob CreateSitecronJob(Item jobItem)
        {
            if (jobItem == null)
            {
                return(null);
            }

            var siteCronJob = new SitecronJob();

            siteCronJob.ItemId                   = jobItem.ID.ToString();
            siteCronJob.TemplateId               = jobItem.TemplateID;
            siteCronJob.Name                     = jobItem.Name;
            siteCronJob.JobSource                = "DATABASE";
            siteCronJob.JobTypeSignature         = jobItem[SitecronConstants.FieldNames.Type];
            siteCronJob.CronExpression           = jobItem[SitecronConstants.FieldNames.CronExpression];
            siteCronJob.Parameters               = jobItem[SitecronConstants.FieldNames.Parameters];
            siteCronJob.Items                    = jobItem[SitecronConstants.FieldNames.Items];
            siteCronJob.Disable                  = jobItem[SitecronConstants.FieldNames.Disable] == "1";
            siteCronJob.ArchiveAfterExecution    = jobItem[SitecronConstants.FieldNames.ArchiveAfterExecution] == "1";
            siteCronJob.ExecuteExactlyAtDateTime = new DateField(jobItem.Fields[SitecronConstants.FieldNames.ExecuteExactlyAtDateTime]).DateTime;
            siteCronJob.LastRunUTC               = jobItem[SitecronConstants.FieldNames.LastRunUTC];
            siteCronJob.NextRunUTC               = jobItem[SitecronConstants.FieldNames.NextRunUTC];
            siteCronJob.ExecutionTime            = jobItem[SitecronConstants.FieldNames.ExecutionTime];
            siteCronJob.LastRunLog               = jobItem[SitecronConstants.FieldNames.LastRunUTC];
            siteCronJob.SitecoreJobType          = jobItem[SitecronConstants.FieldNames.SitecoreJobType];
            siteCronJob.SitecoreJobMethod        = jobItem[SitecronConstants.FieldNames.SitecoreJobMethod];
            siteCronJob.SitecoreJobName          = jobItem[SitecronConstants.FieldNames.SitecoreJobName];
            siteCronJob.SitecoreJobCategory      = jobItem[SitecronConstants.FieldNames.SitecoreJobCategory];
            siteCronJob.SitecoreJobSiteName      = jobItem[SitecronConstants.FieldNames.SitecoreJobSiteName];
            siteCronJob.SitecoreJobPriority      = jobItem[SitecronConstants.FieldNames.SitecoreJobPriority];
            siteCronJob.SitecoreScheduleJob      = jobItem[SitecronConstants.FieldNames.SitecoreScheduleJob];
            siteCronJob.MinionFullName           = jobItem[SitecronConstants.FieldNames.MinionFullName];
            siteCronJob.EnvironmentName          = jobItem[SitecronConstants.FieldNames.EnvironmentName];
            return(siteCronJob);
        }
        public bool IsValid(SitecronJob job)
        {
            if (job == null)
            {
                return(false);
            }

            if (job.JobType == null)
            {
                Log.Info($"Sitecron - Job Not Loaded - Could not load type '{job.JobTypeSignature}' for job - Job Source: {job.JobSource} - {job.Name} - {job.ItemId}", this);
                return(false);
            }

            if (string.IsNullOrEmpty(job.CronExpression) && job.ExecuteExactlyAtDateTime.Value == DateTime.MinValue)
            {
                Log.Info($"Sitecron - Job Not Loaded - Invalid ExecuteExactlyAtDateTime or Cron Expression: Job Source: {job.JobSource} - {job.Name} ExecuteExactlyAtDateTime: {job.ExecuteExactlyAtDateTime.Value} Cron Expression: {job.CronExpression}", this);
                return(false);
            }

            if (!string.IsNullOrEmpty(job.CronExpression) && job.ExecuteExactlyAtDateTime.Value != DateTime.MinValue)
            {
                Log.Info($"Sitecron - Job Not Loaded - Both ExecuteExactlyAtDateTime and Cron Expression specified: Job Source: {job.JobSource} - {job.Name} ExecuteExactlyAtDateTime: {job.ExecuteExactlyAtDateTime.Value} Cron Expression: {job.CronExpression}", this);
                return(false);
            }

            if (job.ExecuteExactlyAtDateTime.Value != DateTime.MinValue && job.ExecuteExactlyAtDateTime.Value.ToUniversalTime() < DateTime.Now.ToUniversalTime())
            {
                Log.Info($"Sitecron - Job Not Loaded - ExecuteExactlyAtDateTime is in the past: Job Source: {job.JobSource} - {job.Name} ExecuteExactlyAtDateTime: {job.ExecuteExactlyAtDateTime.Value} Cron Expression: {job.CronExpression}", this);
                return(false);
            }

            if (job.Disable)
            {
                Log.Info($"Sitecron - Job Not Loaded - Job Disabled: Job Source: {job.JobSource} - {job.Name} Type: {job.JobTypeSignature} Cron Expression: {job.CronExpression}", this);
                return(false);
            }

            //if its a Run As Sitecore Job, validate fields
            if (job.TemplateId == SitecronConstants.Templates.SitecronRunAsSitecoreJobTemplateID && (string.IsNullOrEmpty(job.SitecoreJobCategory) || string.IsNullOrEmpty(job.SitecoreJobMethod) || string.IsNullOrEmpty(job.SitecoreJobName) || string.IsNullOrEmpty(job.SitecoreJobSiteName) || string.IsNullOrEmpty(job.SitecoreJobType) || string.IsNullOrEmpty(job.SitecoreJobPriority)))
            {
                Log.Info($"Sitecron - RunAsSitecoreJob - Job Not Loaded - Job Disabled: Job Source: {job.JobSource} - {job.Name} Type: {job.JobTypeSignature} Cron Expression: {job.CronExpression}", this);
                return(false);
            }

            //if its a SiteCron Sitecore Schedule Command Job, validate fields
            if (job.TemplateId == SitecronConstants.Templates.SiteCronSitecoreScheduleCommandJobTemplateID && (string.IsNullOrEmpty(job.SitecoreJobCategory) || string.IsNullOrEmpty(job.SitecoreJobName) || string.IsNullOrEmpty(job.SitecoreJobSiteName) || string.IsNullOrEmpty(job.SitecoreJobPriority) || string.IsNullOrEmpty(job.SitecoreScheduleJob)))
            {
                Log.Info($"Sitecron - SiteCron Sitecore Schedule Command Job - Job Not Loaded - Job Disabled: Job Source: {job.JobSource} - {job.Name} Type: {job.JobTypeSignature} Cron Expression: {job.CronExpression}", this);
                return(false);
            }
            return(true);
        }