public ActionResult View(int course = 1)
        {
            using (ApplicationDbContext context = new ApplicationDbContext())
            {
                int semesterId = ScheduleHelper.GetCurrentSemesterId();

                ScheduleViewModel vm = ScheduleRepository.GetScheduleViewModel(semesterId, course);

                //If user is admin then load access mode
                string userName = HttpContext.User.Identity.GetUserName();
                ViewBag.AccessMode = ScheduleAccessMode.View.ToString();
                if (HttpContext.User.IsInRole("Admin"))
                {
                    var roleStore   = new RoleStore <IdentityRole>(context);
                    var roleManager = new RoleManager <IdentityRole>(roleStore);
                    var userStore   = new UserStore <ApplicationUser>(context);
                    var userManager = new UserManager <ApplicationUser>(userStore);

                    var adminUser = userManager.FindByName(userName);
                    // var adminUser2 = context.Users.Single(i => i.UserName.ToString() == userName);
                    ViewBag.AccessMode = adminUser.ScheduleAccessMode.ToString();
                }

                return(View("Index", vm));
            }
        }
예제 #2
0
        public void MondayItemInPast_OnRollDay_IsTomorrow()
        {
            // Arrange
            var currentTime = new DateTimeOffset(2015, 01, 12, 16, 35, 22,
                                                 TimeZoneInfo.Local.GetUtcOffset(ScheduleHelper.Now()));

            SetCurrentTime(currentTime);

            var monday = new DateTimeOffset(2015, 01, 12, 15, 32, 00,
                                            TimeZoneInfo.Local.GetUtcOffset(ScheduleHelper.Now()));
            var expectedTime = new DateTimeOffset(2015, 01, 13, 15, 32, 00,
                                                  TimeZoneInfo.Local.GetUtcOffset(ScheduleHelper.Now()));

            Assert.AreEqual(DayOfWeek.Monday, monday.DayOfWeek);

            ScheduleInfo info = new ScheduleInfo()
            {
                EventTime = monday,
                TimeType  = ScheduleTimeType.Standard,
            };

            // Act
            var newDateTime = ScheduleHelper.RollForwardToNextDay(info);

            // Assert
            Assert.AreEqual(expectedTime, newDateTime);
        }
        public void GetNextMonthday()
        {
            var date1 = new DateTime(2014, 12, 1);
            var date2 = new DateTime(2015, 1, 1);
            var date3 = new DateTime(2015, 2, 1);
            var date4 = new DateTime(2015, 3, 2);
            var date5 = new DateTime(2015, 4, 3);

            var dateN1 = new DateTime(2014, 12, 31);
            var dateN2 = new DateTime(2015, 1, 31);
            var dateN3 = new DateTime(2015, 2, 28);
            var dateN4 = new DateTime(2015, 3, 31);
            var dateN5 = new DateTime(2015, 4, 30);

            var next1 = ScheduleHelper.GetNextDate(date1, ScheduleEnum.Monthly, null, 31);
            var next2 = ScheduleHelper.GetNextDate(date2, ScheduleEnum.Monthly, null, 31);
            var next3 = ScheduleHelper.GetNextDate(date3, ScheduleEnum.Monthly, null, 31);
            var next4 = ScheduleHelper.GetNextDate(date4, ScheduleEnum.Monthly, null, 31);
            var next5 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Monthly, null, 31);

            Assert.AreEqual(dateN1, next1);
            Assert.AreEqual(dateN2, next2);
            Assert.AreEqual(dateN3, next3);
            Assert.AreEqual(dateN4, next4);
            Assert.AreEqual(dateN5, next5);
        }
        public void GetNextWeekday()
        {
            var date5 = new DateTime(2014, 12, 31);

            var dateN1 = new DateTime(2015, 1, 5);
            var dateN2 = new DateTime(2015, 1, 6);
            var dateN3 = new DateTime(2015, 1, 7);
            var dateN4 = new DateTime(2015, 1, 1);
            var dateN5 = new DateTime(2015, 1, 2);
            var dateN6 = new DateTime(2015, 1, 3);
            var dateN7 = new DateTime(2015, 1, 4);

            var next1 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Monday, null);
            var next2 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Tuesday, null);
            var next3 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Wednesday, null);
            var next4 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Thursday, null);
            var next5 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Friday, null);
            var next6 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Saturday, null);
            var next7 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Weekly, DayOfWeek.Sunday, null);

            Assert.AreEqual(dateN1, next1);
            Assert.AreEqual(dateN2, next2);
            Assert.AreEqual(dateN3, next3);
            Assert.AreEqual(dateN4, next4);
            Assert.AreEqual(dateN5, next5);
            Assert.AreEqual(dateN6, next6);
            Assert.AreEqual(dateN7, next7);
        }
예제 #5
0
        private void _UpdateScheduleList()
        {
            // create list of schedule in date range
            DateRangeCalendarWidget calendarWidget = _GetCalendarWidget();

            _exportedSchedule = ScheduleHelper.GetCurrentSchedulesByDates(calendarWidget.StartDate, calendarWidget.EndDate, true);
        }
        public void Set_shedule_month()
        {
            var report = CreateReport("Mixed");

            Open($"/Reports/schedule.aspx?r={report.GeneralReport.Id}");

            Click("Добавить ежемесячное расписание");
            //Чекбоксы должны быть выбраны по-умолчанию, но на всякий случай оставляю код
            //browser.Div("firstSixMonth").ChildOfType<CheckBox>(box => !box.Checked).Checked = true;
            //browser.Div("firstFifteenDays").ChildOfType<CheckBox>(box => !box.Checked).Checked = true;
            Click("Применить");
            AssertText("Временной промежуток от 23:00 до 4:00 является недопустимым для времени выполнения отчета");
            var text = browser.FindElementsByCssSelector("input[type=\"text\"]").First(x => x.GetAttribute("value") == "0:00");

            text.Clear();
            text.SendKeys("10:00");
            Click("Применить");
            AssertNoText("Временной промежуток от 23:00 до 4:00 является недопустимым для времени выполнения отчета");
            AssertText("Задать расписание для отчета");

            var taskService   = ScheduleHelper.GetService();
            var reportsFolder = ScheduleHelper.GetReportsFolder(taskService);
            var currentTask   = ScheduleHelper.GetTaskOrCreate(taskService, reportsFolder, report.GeneralReport.Id, "", "GR");

            Assert.That(currentTask.Definition.Settings.RestartCount == 3);
            Assert.That(currentTask.Definition.Settings.RestartInterval == new TimeSpan(0, 15, 0));
            Assert.That(currentTask.Definition.Settings.StartWhenAvailable);
            Click(By.CssSelector(".deleteMonthItem"));
            Click("Применить");
        }
예제 #7
0
        public void GetScheduleTimeFromSqlValuesTest()
        {
            const int sqlTime = 50607;
            var       t       = ScheduleHelper.GetScheduleTimeFromSqlValues(sqlTime);

            Assert.AreEqual(new TimeSpan(5, 6, 7), t);
        }
예제 #8
0
        public void Temporary_task_should_not_contains_triggers()
        {
            var service = ScheduleHelper.GetService();
            var folder  = ScheduleHelper.GetReportsFolder(service);

            ScheduleHelper.DeleteTask(folder, 100, "GR");
            ScheduleHelper.DeleteTask(folder, 1, "temp");

            var task = ScheduleHelper.GetTaskOrCreate(service, folder, 100, "", "GR");

            ScheduleHelper.SetTaskEnableStatus(100, true, "GR");
            var definition = task.Definition;
            var trigger    = new WeeklyTrigger {
                DaysOfWeek    = DaysOfTheWeek.Friday,
                WeeksInterval = 1,
                StartBoundary = DateTime.Now
            };

            definition.Triggers.Add(trigger);
            ScheduleHelper.UpdateTaskDefinition(service, folder, Convert.ToUInt64(100), definition, "GR");

            task = ScheduleHelper.FindTask(service, folder, 100, "GR");
            Assert.That(task.Definition.Triggers.Count, Is.EqualTo(1));
            var temp = Report.CreateTemporaryTaskForRunFromInterface(service, folder, task, "cmd /c echo");

            Assert.That(temp.Definition.Triggers.Count, Is.EqualTo(0));
        }
        public string Run()
        {
            try
            {
                logger.Info("Scheduled backup started");
                var manager = new BackupManager(_unitOfWork);             
                var currentDate = DateTime.UtcNow.Date;
                var users =
                    _unitOfWork.UserRepository.GetAll().Where(
                        x =>
                            x.BackupPeriod != (int)ScheduleEnum.None && x.NextBackupDate != null &&
                            currentDate.Year == x.NextBackupDate.Value.Year &&
                            currentDate.Month == x.NextBackupDate.Value.Month &&
                            currentDate.Day == x.NextBackupDate.Value.Day
                            ).ToList().Where(x => ScheduleHelper.IsCurrentDateTime((DateTime)x.NextBackupDate, _timespan)).ToList();

                foreach (var user in users)
                {             
                    if (manager.BackupData(user))
                    {
                        user.LastBackupDate = user.NextBackupDate;
                    }

                    user.NextBackupDate = ScheduleHelper.GetNextDate((DateTime)user.NextBackupDate, (ScheduleEnum)user.BackupPeriod, (DayOfWeek?)user.DayOfWeek, user.DayOfMonth);

                    _unitOfWork.Commit();
                }
                return "Success";
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }
예제 #10
0
        public ActionResult Create([Bind(Include = "ID,NameEN,HospitalID, SpecialityID,ExperienceFrom,IsActive,Qualification,Fee")] Doctor doctor)
        {
            ScheduleHelper.UpdateScheduleTimeStampInfo(doctor, Request);
            if (ModelState.IsValid && doctor.HospitalID != 0 && doctor.SpecialityID != 0)
            {
                db.Doctors.Add(doctor);
                string imageLocation = (string)TempData["SavedImageLocation"];
                doctor.ImageExt = Path.GetExtension(imageLocation);
                db.AddNewDoctor(doctor.NameEN, doctor.Qualification, doctor.Fee, doctor.SpecialityID,
                                doctor.ImageExt, true, doctor.ExperienceFrom, doctor.HospitalID, new TimeSpan(0, 15, 0),
                                doctor.SundayMorningStartTime, doctor.SundayMorningEndTime, doctor.SundayAfternoonStartTime, doctor.SundayAfternoonEndTime, doctor.SundayEveningStartTime, doctor.SundayEveningEndTime,
                                doctor.MondayMorningStartTime, doctor.MondayMorningEndTime, doctor.MondayAfternoonStartTime, doctor.MondayAfternoonEndTime, doctor.MondayEveningStartTime, doctor.MondayEveningEndTime,
                                doctor.TuesdayMorningStartTime, doctor.TuesdayMorningEndTime, doctor.TuesdayAfternoonStartTime, doctor.TuesdayAfternoonEndTime, doctor.TuesdayEveningStartTime, doctor.TuesdayEveningEndTime,
                                doctor.WednesdayMorningStartTime, doctor.WednesdayMorningEndTime, doctor.WednesdayAfternoonStartTime, doctor.WednesdayAfternoonEndTime, doctor.WednesdayEveningStartTime, doctor.WednesdayEveningEndTime,
                                doctor.ThursdayMorningStartTime, doctor.ThursdayMorningEndTime, doctor.ThursdayAfternoonStartTime, doctor.ThursdayAfternoonEndTime, doctor.ThursdayEveningStartTime, doctor.ThursdayEveningEndTime,
                                doctor.FridayMorningStartTime, doctor.FridayMorningEndTime, doctor.FridayAfternoonStartTime, doctor.FridayAfternoonEndTime, doctor.FridayEveningStartTime, doctor.FridayEveningEndTime,
                                doctor.SaturdayMorningStartTime, doctor.SaturdayMorningEndTime, doctor.SaturdayAfternoonStartTime, doctor.SaturdayAfternoonEndTime, doctor.SaturdayEveningStartTime, doctor.SaturdayEveningEndTime);
                db.SaveChanges();
                GetImagePath(doctor, imageLocation);

                return(RedirectToAction("Index"));
            }

            ViewBag.HospitalID   = new SelectList(db.Hospitals, "ID", "NameEN", doctor.HospitalID);
            ViewBag.SpecialityID = new SelectList(db.Specializations, "ID", "NameEN", doctor.SpecialityID);
            return(View(doctor));
        }
예제 #11
0
        public ActionResult Edit([Bind(Include = "ID,NameEN,HospitalID, SpecialityID,ExperienceFrom,IsActive,Qualification,Fee")] Doctor doctor)
        {
            ScheduleHelper.UpdateScheduleTimeStampInfo(doctor, Request);
            if (ModelState.IsValid)
            {
                db.UpdateDoctorSchedule(doctor.ID, "SUN", new TimeSpan(0, 15, 0),
                                        doctor.SundayMorningStartTime, doctor.SundayMorningEndTime, doctor.SundayAfternoonStartTime, doctor.SundayAfternoonEndTime, doctor.SundayEveningStartTime, doctor.SundayEveningEndTime);

                db.UpdateDoctorSchedule(doctor.ID, "MON", new TimeSpan(0, 15, 0),
                                        doctor.MondayMorningStartTime, doctor.MondayMorningEndTime, doctor.MondayAfternoonStartTime, doctor.MondayAfternoonEndTime, doctor.MondayEveningStartTime, doctor.MondayEveningEndTime);

                db.UpdateDoctorSchedule(doctor.ID, "TUE", new TimeSpan(0, 15, 0),
                                        doctor.TuesdayMorningStartTime, doctor.TuesdayMorningEndTime, doctor.TuesdayAfternoonStartTime, doctor.TuesdayAfternoonEndTime, doctor.TuesdayEveningStartTime, doctor.TuesdayEveningEndTime);

                db.UpdateDoctorSchedule(doctor.ID, "WED", new TimeSpan(0, 15, 0),
                                        doctor.WednesdayMorningStartTime, doctor.WednesdayMorningEndTime, doctor.WednesdayAfternoonStartTime, doctor.WednesdayAfternoonEndTime, doctor.WednesdayEveningStartTime, doctor.WednesdayEveningEndTime);

                db.UpdateDoctorSchedule(doctor.ID, "THU", new TimeSpan(0, 15, 0),
                                        doctor.ThursdayMorningStartTime, doctor.ThursdayMorningEndTime, doctor.ThursdayAfternoonStartTime, doctor.ThursdayAfternoonEndTime, doctor.ThursdayEveningStartTime, doctor.ThursdayEveningEndTime);

                db.UpdateDoctorSchedule(doctor.ID, "FRI", new TimeSpan(0, 15, 0),
                                        doctor.FridayMorningStartTime, doctor.FridayMorningEndTime, doctor.FridayAfternoonStartTime, doctor.FridayAfternoonEndTime, doctor.FridayEveningStartTime, doctor.FridayEveningEndTime);

                db.UpdateDoctorSchedule(doctor.ID, "SAT", new TimeSpan(0, 15, 0),
                                        doctor.SaturdayMorningStartTime, doctor.SaturdayMorningEndTime, doctor.SaturdayAfternoonStartTime, doctor.SaturdayAfternoonEndTime, doctor.SaturdayEveningStartTime, doctor.SaturdayEveningEndTime);

                db.Entry(doctor).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            ViewBag.HospitalID   = new SelectList(db.Hospitals, "ID", "NameEN", doctor.HospitalID);
            ViewBag.SpecialityID = new SelectList(db.Specializations, "ID", "NameEN", doctor.SpecialityID);
            return(View(doctor));
        }
        public void CheckTaskDefinitionUpdate()
        {
            var comment = Generator.Name();
            var payer   = new Payer("Тестовый плательщик");
            var report  = new GeneralReport(payer)
            {
                Comment = comment
            };

            session.Save(payer);
            session.Save(report);

            var helper = new ScheduleHelper();

            helper.GetTaskOrCreate(report.Id, report.Comment);

            var reportPage = new Reports_GeneralReports {
                DbSession = session
            };

            comment        = Generator.Name();
            report.Comment = comment;
            session.Save(report);
            session.Flush();

            reportPage.UpdateTasksForGeneralReports(new List <ulong>(),
                                                    new List <ulong> {
                report.Id
            });
            var task = helper.GetTaskOrCreate(report.Id, report.Comment);

            Assert.AreEqual(task.Definition.RegistrationInfo.Description, comment);
        }
예제 #13
0
        public IEnumerable <Schedule> GenerateSchedule(int weeks = 4)
        {
            var lastScheduledWeek = scheduleRepository.GetLastScheduledWeek().ToList();

            var lastScheduledDate = lastScheduledWeek.LastOrDefault()?.Date;

            var engineerIds = engineerRepository.GetAllActive().Select(x => x.Id).ToList();

            var engineerRotation = new List <Schedule>();

            for (var i = 0; i < weeks; i++)
            {
                var startingDate = DateHelpers.NextWeekday(lastScheduledDate);

                var shifts = ScheduleHelper.AssignShift(engineerIds, lastScheduledWeek);

                (lastScheduledWeek, lastScheduledDate) = ScheduleHelper.ScheduleWeekRotation(startingDate, shifts);

                engineerRotation.AddRange(lastScheduledWeek);
            }

            scheduleRepository.Save(engineerRotation);

            return(engineerRotation);
        }
        public void GetNextDay()
        {
            var date1 = new DateTime(2014, 12, 3);
            var date2 = new DateTime(2014, 12, 10);
            var date3 = new DateTime(2014, 12, 17);
            var date4 = new DateTime(2014, 12, 24);
            var date5 = new DateTime(2014, 12, 31);

            var dateN1 = new DateTime(2014, 12, 4);
            var dateN2 = new DateTime(2014, 12, 11);
            var dateN3 = new DateTime(2014, 12, 18);
            var dateN4 = new DateTime(2014, 12, 25);
            var dateN5 = new DateTime(2015, 1, 1);

            var next1 = ScheduleHelper.GetNextDate(date1, ScheduleEnum.Daily, null, null);
            var next2 = ScheduleHelper.GetNextDate(date2, ScheduleEnum.Daily, null, null);
            var next3 = ScheduleHelper.GetNextDate(date3, ScheduleEnum.Daily, null, null);
            var next4 = ScheduleHelper.GetNextDate(date4, ScheduleEnum.Daily, null, null);
            var next5 = ScheduleHelper.GetNextDate(date5, ScheduleEnum.Daily, null, null);

            Assert.AreEqual(dateN1, next1);
            Assert.AreEqual(dateN2, next2);
            Assert.AreEqual(dateN3, next3);
            Assert.AreEqual(dateN4, next4);
            Assert.AreEqual(dateN5, next5);
        }
        public string Test()
        {
            try
            {
                logger.Info("Test Scheduled backup started");
                var manager = new BackupManager(_unitOfWork);
                var users =
                    _unitOfWork.UserRepository.GetAll().Where(
                        x =>
                            x.BackupPeriod != (int)ScheduleEnum.None).ToList();

                foreach (var user in users)
                {

                    if (manager.BackupData(user))
                    {
                        user.LastBackupDate = user.NextBackupDate;
                    }

                    user.NextBackupDate = ScheduleHelper.GetNextDate((DateTime)user.NextBackupDate, (ScheduleEnum)user.BackupPeriod, (DayOfWeek?)user.DayOfWeek, user.DayOfMonth);

                    _unitOfWork.Commit();
                }
                return "Success";
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }
예제 #16
0
        public void GetScheduleDateFromSqlValuesTest()
        {
            const int sqlDate = 20100309;
            var       dt      = ScheduleHelper.GetScheduleDateFromSqlValues(sqlDate);

            Assert.AreEqual(new DateTime(2010, 3, 9), dt);
        }
예제 #17
0
        /// <summary>
        /// Configure the Cron Job from 'Frequency' in config file
        /// </summary>
        static ConfigurableCronSchedule()
        {
            string frequencyValue = ConfigurationManager.AppSettings["Frequency"];

            CronExpression = ScheduleHelper.GetCronExpression(frequencyValue);
            //// cronexpression = "*/10 * * * * *";
        }
예제 #18
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();

            //for MiniProfiler
            MiniProfilerEF6.Initialize();
            MiniProfiler.Settings.PopupRenderPosition = RenderPosition.BottomRight;
            GlobalFilters.Filters.Add(new StackExchange.Profiling.Mvc.ProfilingActionFilter());

            //init Interface & Repository Domain
            IoCContainer.InitializeContainer();

            //for report telerik
            ReportsControllerConfiguration.RegisterRoutes(GlobalConfiguration.Configuration);

            //Quartz
            ScheduleHelper.init();

            //using (StreamWriter writer = File.CreateText(Server.MapPath("~/log.txt")))
            //{
            //    Helpers.Common.ConnectionMultiplexer = ConnectionMultiplexer.Connect("localhost,abortConnect=false", writer);
            //}
        }
예제 #19
0
        //Get Schedule For Day
        public void GetScheduleForDay(CallbackQueryEventArgs callbackQueryEventArgs)
        {
            var args = ArgParser.ParseCallbackData(callbackQueryEventArgs.CallbackQuery.Data);

            var directionArg = args.GetValueOrDefault(Commands.Direction);
            var direction    = directionArg == Way.ToCTIR.ToString() ? Way.ToCTIR : Way.ToRzeszow;

            DateTime selectedDay = DateTime.Parse(args.GetValueOrDefault(Commands.Date));

            //Get schedule for date
            var text = ScheduleHelper.GenerateSchedule(selectedDay, direction, User.GetLanguage);

            //Send menu to get back
            var inlineKeyboard = new InlineKeyboardMarkup(new[]
            {
                new [] // First row
                {
                    // Bus stations button
                    InlineKeyboardButton.WithCallbackData(Local.BusStations[User.GetLanguage], Commands.GetBusStation),
                },
                new [] // Second row
                {
                    // Weather button
                    InlineKeyboardButton.WithCallbackData(Local.Weather[User.GetLanguage], $"{Commands.RefreshWeather}"),
                    // Bus schedule url
                    InlineKeyboardButton.WithUrl(Local.URLSchedule[User.GetLanguage], "https://wsiz.edu.pl/studia/informator/rozklad-jazdy-uczelnianego-autobusu"),
                },
                // Third row
                TemplateModelsBuilder.WaysForBus()
            });

            SendMessageAsync(ChatId, text, ParseMode.Markdown, replyMarkup: inlineKeyboard);
            DeleteMessageAsync(ChatId, MessageId);
        }
예제 #20
0
    private void RunSelfTaskAndUpdateAction()
    {
        string user     = HttpContext.Current.User.Identity.Name.Replace(@"ANALIT\", string.Empty);
        var    thisTask = ScheduleHelper.GetTaskOrCreate(taskService, reportsFolder, Convert.ToUInt64(_generalReport.Id), user, "temp_");

        var newAction = new ExecAction(ScheduleHelper.ScheduleAppPath,
                                       "/gr:" + _generalReport.Id +
                                       string.Format(" /inter:true /dtFrom:{0} /dtTo:{1} /manual:true", DateTime.Parse(dtFrom.Value).ToShortDateString(), DateTime.Parse(dtTo.Value).ToShortDateString()),
                                       ScheduleHelper.ScheduleWorkDir);

        var taskDefinition = thisTask.Definition;

        taskDefinition.Actions.RemoveAt(0);
        taskDefinition.Actions.Add(newAction);
        taskDefinition.RegistrationInfo.Description        = user;
        taskDefinition.Settings.RunOnlyIfIdle              = false;
        taskDefinition.Settings.StopIfGoingOnBatteries     = false;
        taskDefinition.Settings.DisallowStartIfOnBatteries = false;
        taskDefinition.Settings.StopIfGoingOnBatteries     = false;
        ScheduleHelper.UpdateTaskDefinition(taskService, reportsFolder, Convert.ToUInt64(_generalReport.Id), taskDefinition, "temp_");

        if (thisTask.State != TaskState.Running)
        {
            thisTask.Run();
            Session.Add("StartTaskTime", DateTime.Now);
            Response.Redirect("Schedule.aspx?r=" + _generalReport.Id);
        }
    }
예제 #21
0
        public void GetSqlValuesFromScheduleDateTest2()
        {
            var dt     = new DateTime(2010, 3, 9, 15, 6, 7);
            var values = ScheduleHelper.GetSqlValuesFromScheduleDateTime(dt);

            Assert.AreEqual(20100309, values.Item1);
            Assert.AreEqual(150607, values.Item2);
        }
        private void ScheduleTriggerAndJobs()
        {
            var rssJob = ScheduleHelper.CreateRSSJob();

            _scheduler.AddJob(rssJob, true).GetAwaiter();
            CreateTriggersEveryXMin(rssJob);
            CreateTriggersCronExp(rssJob);
        }
예제 #23
0
        public void GetScheduleDateTimeFromSqlValuesTest2()
        {
            const int sqlDate = 20100309;
            const int sqlTime = 150607;
            var       dt      = ScheduleHelper.GetScheduleDateTimeFromSqlValues(sqlDate, sqlTime);

            Assert.AreEqual(15, dt.Hour);
        }
예제 #24
0
 private static void SetBizProperties(ArticleScheduleDAL dataObject, ArticleScheduleTask task)
 {
     task.StartDate = ScheduleHelper.GetScheduleDateFromSqlValues(dataObject.ActiveStartDate, DateTime.Now.AddDays(1));
     task.StartTime = ScheduleHelper.GetScheduleTimeFromSqlValues(dataObject.ActiveStartTime, TimeSpan.MinValue);
     task.EndDate   = ScheduleHelper.GetScheduleDateFromSqlValues(dataObject.ActiveEndDate, DateTime.Now.AddDays(1));
     task.EndTime   = ScheduleHelper.GetScheduleTimeFromSqlValues(dataObject.ActiveEndTime, TimeSpan.MinValue);
     task.Duration  = dataObject.UseDuration == 1 ? ScheduleHelper.GetDuration(dataObject.DurationUnits, dataObject.Duration, task.StartDate) : task.EndTime - task.StartTime;
 }
        private void CreateTriggersCronExp(IJobDetail job)
        {
            var subscriptions = _userSubscribeService.GetList(x => x.Active == (short)Active.Yes && x.CronExpression != null);

            foreach (var item in subscriptions)
            {
                _scheduler.ScheduleJob(ScheduleHelper.CreateTriggerCronExpression(item, job));
            }
        }
예제 #26
0
        public void OnItemSaved(object sender, EventArgs args)
        {
            Item savedItem = null;
            ItemSavedRemoteEventArgs remoteArgs = args as ItemSavedRemoteEventArgs;
            ItemChanges savedItemChanges        = Event.ExtractParameter(args, 1) as ItemChanges;

            //Thank you Mike Edwards!
            if (remoteArgs != null)
            {
                savedItem = remoteArgs.Item;
            }
            else
            {
                savedItem = Event.ExtractParameter(args, 0) as Item;
            }

            if (savedItem != null && SitecronConstants.Templates.SitecronJobTemplateID == savedItem.TemplateID) //matched Sitecron job template
            {
                if (savedItemChanges != null && savedItemChanges.FieldChanges.ContainsAnyOf(SiteCronFieldIds.LastRunUTC, SiteCronFieldIds.NextRunUTC, SiteCronFieldIds.ExecutionTime))
                {
                    Log.Info("Sitecron - Ignoring Saved Handler due to stats update.", this);
                }
                else
                {
                    ScheduleHelper scheduler = new ScheduleHelper();
                    scheduler.InitializeScheduler();
                }
            }
            else
            {
                try
                {
                    string typeName = Settings.GetSetting(SitecronConstants.SettingsNames.SiteCronSavedHandlerType);
                    if (!string.IsNullOrEmpty(typeName))
                    {
                        Type type = Type.GetType(typeName);
                        if (type != null)
                        {
                            object instance = Activator.CreateInstance(type);
                            if (instance != null && instance is ISavedHandler)
                            {
                                MethodInfo method = type.GetMethod("OnItemSaved");
                                if (method != null)
                                {
                                    method.Invoke(instance, new object[] { sender, args });
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Error("Sitecron OnItemSaved Custom Type ERROR: " + ex.Message, ex, this);
                }
            }
        }
예제 #27
0
        public void OnItemDeleted(object sender, EventArgs args)
        {
            Item deletedItem = Event.ExtractParameter(args, 0) as Item;

            if (deletedItem != null && SitecronConstants.Templates.SitecronJobTemplateID == deletedItem.TemplateID) //matched Sitecron job template
            {
                ScheduleHelper scheduler = new ScheduleHelper();
                scheduler.InitializeScheduler();
            }
        }
예제 #28
0
        public void GetScheduleDateTimeFromSqlValuesTest3()
        {
            const int sqlDate = 20100309;
            const int sqlTime = 0;
            var       dt      = ScheduleHelper.GetScheduleDateTimeFromSqlValues(sqlDate, sqlTime);

            Assert.AreEqual(0, dt.Hour);
            Assert.AreEqual(0, dt.Minute);
            Assert.AreEqual(0, dt.Second);
        }
        /// <summary>
        /// Save user and also schedule subscribed model.
        /// </summary>
        public override UserSubscribe Save(UserSubscribe entity)
        {
            if (string.IsNullOrEmpty(entity.Id))
            {
                entity = base.Save(entity);
                _scheduler.ScheduleJob(ScheduleHelper.CreateTriggerEveryMin(entity, ScheduleHelper.CreateRSSJob()));
            }

            return(entity);
        }
예제 #30
0
    private void SaveTaskChanges()
    {
        currentTaskDefinition.Settings.Enabled = chbAllow.Checked;
        _generalReport.Allow = chbAllow.Checked;
        _generalReport.Save();

        btnExecute.Enabled = currentTask.State != TaskState.Running && currentTask.State != TaskState.Running;
        btnExecute.Text    = (currentTask.State == TaskState.Running) ? StatusNotRunning : StatusRunning;

        ScheduleHelper.UpdateTaskDefinition(taskService, reportsFolder, _generalReport.Id, currentTaskDefinition, "GR");
    }
예제 #31
0
        public void OnItemDeleted(object sender, EventArgs args)
        {
            Item deletedItem = Event.ExtractParameter(args, 0) as Item;

            if (deletedItem != null && deletedItem.Database.Name.ToLower() == "master")
            {
                if (deletedItem.TemplateID == ID.Parse("{7F2C8881-6AE4-48CF-A499-7745CC4B2EB2}")) //matched Sitecron job template
                {
                    ScheduleHelper scheduler = new ScheduleHelper();
                    scheduler.InitializeScheduler();
                }
            }
        }