public ResponseBase AddAndScheduleJob(string jobType, string jobName, string jobGroupName, string triggerName,
                                              string triggerGroupName, QuickRepeatIntervals quickRepeatInterval, int intervalValue, int?nTimes)
        {
            if (quickRepeatInterval == QuickRepeatIntervals.None)
            {
                throw new SchedulerServiceError("None is null");
            }
            if (string.IsNullOrEmpty(jobName))
            {
                throw new SchedulerServiceError("JobName is null");
            }
            if (string.IsNullOrEmpty(jobGroupName))
            {
                throw new SchedulerServiceError("JobGroupName is null");
            }
            if (string.IsNullOrEmpty(triggerName))
            {
                throw new SchedulerServiceError("TriggerName is null");
            }
            if (string.IsNullOrEmpty(triggerGroupName))
            {
                throw new SchedulerServiceError("TriggerGroupName is null");
            }

            Type tJob                    = Resolver.ResolveType(jobType);
            var  runSimpleMapTest        = GetType().GetMethod("AddAndScheduleGenericJob");
            var  runSimpleMapTestForType = runSimpleMapTest.MakeGenericMethod(tJob);

            object[] objects = new object[7];
            objects[0] = jobName.Trim();
            objects[1] = jobGroupName.Trim();
            objects[2] = triggerName.Trim();
            objects[3] = triggerGroupName.Trim();
            objects[4] = quickRepeatInterval;
            objects[5] = intervalValue;
            objects[6] = nTimes;
            var obj = runSimpleMapTestForType.Invoke(this, objects);

            return(new ResponseBase());
        }
        public void AddAndScheduleGenericJob <T>(string jobName, string jobGroupName, string triggerName, string triggerGroupName, QuickRepeatIntervals quickRepeatInterval, int intervalValue, int?nTimes) where T : class
        {
            IScheduler scheduler = GetScheduler();

            JobDetailImpl jobDetail = new JobDetailImpl(jobName, jobGroupName, typeof(T));

            ITrigger trigger = null;

            switch (quickRepeatInterval)
            {
            case QuickRepeatIntervals.EverySecond:
                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithIdentity(triggerName, triggerGroupName)
                          .WithSchedule(nTimes.HasValue ? SimpleScheduleBuilder.RepeatSecondlyForTotalCount(nTimes.Value, intervalValue) : SimpleScheduleBuilder.RepeatSecondlyForever(intervalValue))
                          .Build();
                break;

            case QuickRepeatIntervals.EveryMinute:
                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithIdentity(triggerName, triggerGroupName)
                          .WithSchedule(nTimes.HasValue ? SimpleScheduleBuilder.RepeatMinutelyForTotalCount(nTimes.Value, intervalValue) : SimpleScheduleBuilder.RepeatMinutelyForever(intervalValue))
                          .Build();
                break;

            case QuickRepeatIntervals.EveryHour:
                trigger = TriggerBuilder.Create()
                          .StartNow()
                          .WithIdentity(triggerName, triggerGroupName)
                          .WithSchedule(nTimes.HasValue ? SimpleScheduleBuilder.RepeatHourlyForTotalCount(nTimes.Value, intervalValue) : SimpleScheduleBuilder.RepeatHourlyForever(intervalValue))
                          .Build();
                break;
            }

            scheduler.ScheduleJob(jobDetail, trigger);
            //scheduler.Shutdown();
        }