/// <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 Post ACH /// </summary> /// <param name="configuration"></param> /// <param name="countryId"></param> /// <param name="currencyId"></param> public void PostACHStart(PostACHConfigurationScheduler configuration, int countryId, int currencyId) { string countryName = configuration.PostACHConfiguration.Country.Name.Trim(); string group = string.Format("{0}_{1}_postACHGroup", countryName, currencyId); string[] groupsToDelete = new string[] { group }; if (RemoveJobsByGroup(groupsToDelete)) { if (configuration.PostACHConfiguration.ExecutionModeId == Utilitarios.Base.ExecutionMode.Automatic) { string daysToExecute = GenerateDaysOfWeek(configuration.GeneralSettingConfiguration); TimeSpan startTime = (TimeSpan)configuration.PostACHConfiguration.StartTime; TimeSpan finishTime = (TimeSpan)configuration.PostACHConfiguration.FinishTime; TimeSpan importTimer = (TimeSpan)configuration.PostACHConfiguration.ImportTimer; int minutesStartTime = startTime.Minutes; int hoursStartTime = startTime.Hours; int minutesFinishTime = finishTime.Minutes; int hoursFinishTime = finishTime.Hours; int cronMinutes = default(int); int cronHours = default(int); if (importTimer.Minutes < 60) { cronMinutes = importTimer.Minutes; cronHours = 0; } else { cronMinutes = 0; cronHours = importTimer.Minutes / 60; } DateTime horaBase = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, startTime.Hours, startTime.Minutes, 0); DateTime horaTermino = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, finishTime.Hours, finishTime.Minutes, 0); var id = Guid.NewGuid(); IJobDetail job = JobBuilder.Create <PostACHTask>() .StoreDurably(true) .WithIdentity(string.Format("job_PA_{0}_{1}_{2}", countryName, currencyId, id), group) .UsingJobData("countryId", countryId.ToString()) .UsingJobData("currencyId", currencyId.ToString()) .Build(); this.scheduler.AddJob(job, true); do { string cron = string.Format("0 {0} {1} ? * {2}", horaBase.Minute, horaBase.Hour, daysToExecute); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(string.Format("tgr_PA_{0}_{1}_{2}", countryName, currencyId, id), group) .ForJob(job) .WithSchedule(CronScheduleBuilder.CronSchedule(cron) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(configuration.GeneralSettingConfiguration.TimeZone))) .Build(); this.scheduler.ScheduleJob(trigger); horaBase = horaBase.AddMinutes(importTimer.Minutes); id = Guid.NewGuid(); } while (horaBase <= horaTermino); this.scheduler.Start(); } } }