/// <summary> /// Método que inicializa los schedulers en el caso de alguna configuración en el modulo General Settings /// </summary> /// <param name="configuration"></param> /// <param name="countryId"></param> /// <param name="currencyId"></param> public void GeneralSettingsStart(GeneralSettingsConfigurationScheduler configuration, int countryId, int currencyId) { PostACHConfigurationScheduler postACHConfiguration = new PostACHConfigurationScheduler(); SettlementConfigurationScheduler settlementConfiguration = new SettlementConfigurationScheduler(); ClosingProcessesConfigurationScheduler closingProcessesConfiguration = new ClosingProcessesConfigurationScheduler(); postACHConfiguration.PostACHConfiguration = configuration.PostACHConfiguration; postACHConfiguration.GeneralSettingConfiguration = configuration.GeneralSettingConfiguration; settlementConfiguration.GeneralSettingConfiguration = configuration.GeneralSettingConfiguration; settlementConfiguration.SettlementConfiguration = configuration.SettlementConfiguration; closingProcessesConfiguration.GeneralSettingConfiguration = configuration.GeneralSettingConfiguration; closingProcessesConfiguration.ClosingProcessesConfiguration = configuration.ClosingProcessesConfiguration; if (postACHConfiguration.PostACHConfiguration != null) { this.PostACHStart(postACHConfiguration, countryId, currencyId); } if (settlementConfiguration.SettlementConfiguration.Any()) { this.SettlementStart(settlementConfiguration, countryId, currencyId); } if (closingProcessesConfiguration.ClosingProcessesConfiguration != null) { this.ClosingProcessesStart(closingProcessesConfiguration, countryId, currencyId); } }
/// <summary> /// Método que inicializa la configuración del scheduler en el caso del proceso Close Batch /// </summary> /// <param name="configuration"></param> /// <param name="countryId"></param> /// <param name="currencyId"></param> public void ClosingProcessesStart(ClosingProcessesConfigurationScheduler configuration, int countryId, int currencyId) { string countryName = configuration.ClosingProcessesConfiguration.Country.Name.Trim(); string group = string.Format("{0}_{1}_closingProcessesGroup", countryName, currencyId); string[] groupsToDelete = new string[] { group }; if (RemoveJobsByGroup(groupsToDelete)) { if (configuration.ClosingProcessesConfiguration.ExecutionModeId == Utilitarios.Base.ExecutionMode.Automatic) { string daysToExecute = GenerateDaysOfWeek(configuration.GeneralSettingConfiguration); TimeSpan timeToExecute = (TimeSpan)configuration.ClosingProcessesConfiguration.CloseBatchTime; int secondsToExecute = timeToExecute.Seconds; int minutesToExecute = timeToExecute.Minutes; int hoursToExecute = timeToExecute.Hours; string cronExpression = string.Format("{0} {1} {2} {3} {4} {5}", secondsToExecute.ToString(), minutesToExecute.ToString(), hoursToExecute.ToString(), "?", "*", daysToExecute); //string cronExpression = "0 * 8-19 * * ?"; var id = Guid.NewGuid(); IJobDetail job = JobBuilder.Create <ClosingProcessesTask>() .StoreDurably(true) .WithIdentity(string.Format("job_CP_{0}_{1}_{2}", countryName, currencyId, id), group) .UsingJobData("countryId", countryId.ToString()) .UsingJobData("currencyId", currencyId.ToString()) .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(string.Format("tgr_CP_{0}_{1}_{2}", countryName, currencyId, id), group) .ForJob(job) .WithSchedule(CronScheduleBuilder.CronSchedule(cronExpression) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(configuration.GeneralSettingConfiguration.TimeZone))) .Build(); this.scheduler.ScheduleJob(job, trigger); this.scheduler.Start(); } } }