Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Método que inicializa la configuración del scheduler en el caso del proceso Settlement
        /// </summary>
        /// <param name="configuration"></param>
        /// <param name="countryId"></param>
        /// <param name="currencyId"></param>
        public void SettlementStart(SettlementConfigurationScheduler configuration, int countryId, int currencyId)
        {
            string countryName = configuration.SettlementConfiguration.FirstOrDefault().TransactionTypeConfigurationCountryCurrency.TransactionTypeConfigurationCountry.Country.Name.Trim();
            string group       = string.Format("{0}_{1}_settlementGroup", countryName, currencyId);

            string[] groupsToDelete = new string[] { group };

            if (RemoveJobsByGroup(groupsToDelete))
            {
                if (configuration.SettlementConfiguration.Any())
                {
                    if (configuration.SettlementConfiguration.Any(c => c.ExecutionModeId == Utilitarios.Base.ExecutionMode.Automatic))
                    {
                        string   daysToExecute = GenerateDaysOfWeek(configuration.GeneralSettingConfiguration);
                        TimeSpan morningSettlement;
                        TimeSpan?afternoonSettlement;

                        foreach (var item in configuration.SettlementConfiguration.Where(p => p.ExecutionModeId == Utilitarios.Base.ExecutionMode.Automatic))
                        {
                            if (item.MorningSettlement.HasValue)
                            {
                                morningSettlement   = (TimeSpan)item.MorningSettlement;
                                afternoonSettlement = (TimeSpan?)item.AfternoonSettlement;

                                int morningSecondsToExecute = morningSettlement.Seconds;
                                int morningMinutesToExecute = morningSettlement.Minutes;
                                int morningHoursToExecute   = morningSettlement.Hours;

                                string morningCronExpression = string.Format("{0} {1} {2} {3} {4} {5}", morningSecondsToExecute.ToString(),
                                                                             morningMinutesToExecute.ToString(),
                                                                             morningHoursToExecute.ToString(),
                                                                             "?",
                                                                             "*",
                                                                             daysToExecute);



                                var id = Guid.NewGuid();

                                IJobDetail jobMorningSettlement = JobBuilder.Create <SettlementTask>()
                                                                  .StoreDurably(true)
                                                                  .WithIdentity(string.Format("job_ST_{0}_{1}_{2}_{3}_{4}", countryName, id, item.Description, item.MorningText, currencyId), group)
                                                                  .UsingJobData("countryId", countryId.ToString())
                                                                  .UsingJobData("currencyId", currencyId.ToString())
                                                                  .UsingJobData("transactionTypeConfigurationCountryCurrencyId", item.TransactionTypeConfigurationCountryCurrencyId.ToString())
                                                                  .Build();

                                ITrigger morningTrigger = TriggerBuilder.Create()
                                                          .WithIdentity(string.Format("tgr_ST_AM_{0}_{1}_{2}_{3}_{4}", countryName, id, item.Description, item.MorningText, currencyId), group)
                                                          .ForJob(jobMorningSettlement)
                                                          .WithSchedule(CronScheduleBuilder.CronSchedule(morningCronExpression)
                                                                        .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(configuration.GeneralSettingConfiguration.TimeZone)))
                                                          .Build();

                                this.scheduler.ScheduleJob(jobMorningSettlement, morningTrigger);

                                if (afternoonSettlement.HasValue)
                                {
                                    int afternoonSecondsToExecute = afternoonSettlement.Value.Seconds;
                                    int afternoonMinutesToExecute = afternoonSettlement.Value.Minutes;
                                    int afternoonHoursToExecute   = afternoonSettlement.Value.Hours;

                                    string afternoonCronExpression = string.Format("{0} {1} {2} {3} {4} {5}", afternoonSecondsToExecute.ToString(),
                                                                                   afternoonMinutesToExecute.ToString(),
                                                                                   afternoonHoursToExecute.ToString(),
                                                                                   "?",
                                                                                   "*",
                                                                                   daysToExecute);


                                    IJobDetail jobAfternoonSettlement = JobBuilder.Create <SettlementTask>()
                                                                        .StoreDurably(true)
                                                                        .WithIdentity(string.Format("job_ST_{0}_{1}_{2}_{3}_{4}", countryName, id, item.Description, item.AfternoonText, currencyId), group)
                                                                        .UsingJobData("countryId", countryId.ToString())
                                                                        .UsingJobData("currencyId", currencyId.ToString())
                                                                        .UsingJobData("transactionTypeConfigurationCountryCurrencyId", item.TransactionTypeConfigurationCountryCurrencyId.ToString())
                                                                        .Build();

                                    ITrigger afternoonTrigger = TriggerBuilder.Create()
                                                                .WithIdentity(string.Format("tgr_ST_PM_{0}_{1}_{2}_{3}_{4}", countryName, id, item.Description, item.AfternoonText, currencyId), group)
                                                                .ForJob(jobAfternoonSettlement)
                                                                .WithSchedule(CronScheduleBuilder.CronSchedule(afternoonCronExpression)
                                                                              .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(configuration.GeneralSettingConfiguration.TimeZone)))
                                                                .Build();


                                    this.scheduler.ScheduleJob(jobAfternoonSettlement, afternoonTrigger);
                                }

                                this.scheduler.Start();
                            }
                        }
                    }
                }
            }
        }