public List <MSchedule> GetSchedule(string idSchedule) { List <MSchedule> scheduleList = new List <MSchedule>(); { sqlCon = con.openConnection(); SqlCommand cmd = new SqlCommand("select * from Doctor.ScheduleDetails where Id_Schedule = '" + idSchedule + "'", sqlCon); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { MSchedule scheduleData = new MSchedule(); scheduleData.IdScheduleDetail = dt.Rows[i]["Id_ScheduleDetail"].ToString(); scheduleData.IdSchedule = dt.Rows[i]["Id_Schedule"].ToString(); scheduleData.Day = dt.Rows[i]["Dayy"].ToString(); scheduleData.Start = dt.Rows[i]["Start_Time"].ToString(); scheduleData.End = dt.Rows[i]["End_Time"].ToString(); scheduleList.Add(scheduleData); } } sqlCon.Close(); } return(scheduleList); }
/// <summary> /// Calculate Sleep ms /// </summary> /// <param name="now"></param> /// <returns>miliseconds</returns> private long CalculateSleep(long now) { String frequencyType = _model.GetFrequencyType(); int frequency = _model.GetFrequency(); if (frequency < 1) { frequency = 1; } long typeSec = 600; // 10 minutes if (frequencyType == null) { typeSec = 300; // 5 minutes } else if (X_R_RequestProcessor.FREQUENCYTYPE_Minute.Equals(frequencyType)) { typeSec = 60; } else if (X_R_RequestProcessor.FREQUENCYTYPE_Hour.Equals(frequencyType)) { typeSec = 3600; } else if (X_R_RequestProcessor.FREQUENCYTYPE_Day.Equals(frequencyType)) { typeSec = 86400; } long sleep = typeSec * 1000 * frequency; // ms if (_model.GetAD_Schedule_ID() == 0) { return(sleep); } // Calculate Schedule MSchedule schedule = MSchedule.Get(GetCtx(), _model.GetAD_Schedule_ID()); long next = schedule.GetNextRunMS(now); long delta = next - now; if (delta < 0) { log.Warning("Negative Delta=" + delta + " - set to " + sleep); delta = sleep; } return(delta); }
/// <summary> /// Run async /// </summary> public void Run() { int AD_Schedule_ID = _model.GetAD_Schedule_ID(); MSchedule schedule = null; if (AD_Schedule_ID != 0) { schedule = MSchedule.Get(GetCtx(), AD_Schedule_ID); if (!schedule.IsOKtoRunOnIP()) { log.Warning(objThread.Name + ": Stopped - IP Restriction " + schedule); return; // done } } try { log.Fine(objThread.Name + ": Pre-Nap - " + _initialNap); Thread.Sleep(_initialNap * 1000); } catch (ThreadInterruptedException e) { log.Log(Level.SEVERE, objThread.Name + ": Pre-Nap Interrupted", e); return; } _start = CommonFunctions.CurrentTimeMillis(DateTime.Now); while (true) { long now = CommonFunctions.CurrentTimeMillis(DateTime.Now); if (_sleepMS == 0) { _sleepMS = CalculateSleep(now); } DateTime scheduled = CommonFunctions.CovertMilliToDate(now + _sleepMS); DateTime?dateNextRun = null; if (_nextWork == 0) { _nextWork = now + _sleepMS; dateNextRun = GetDateNextRun(true); _model.SetDateNextRun(dateNextRun); _model.Save(); } else { dateNextRun = CommonFunctions.CovertMilliToDate(_nextWork); } log.Config(this.objThread.Name + ": NextWork=" + dateNextRun + " - Scheduled=" + scheduled); // --------------- _startWork = CommonFunctions.CurrentTimeMillis(DateTime.Now); DoWork(); now = CommonFunctions.CurrentTimeMillis(DateTime.Now); // --------------- _runCount++; _runLastMS = now - _startWork; _runTotalMS += _runLastMS; // _sleepMS = CalculateSleep(now); _nextWork = now + _sleepMS; // _model.SetDateLastRun(CommonFunctions.CovertMilliToDate(now)); _model.SetDateNextRun(CommonFunctions.CovertMilliToDate(_nextWork)); _model.Save(); log.Fine(objThread.Name + ": " + GetStatistics()); if (!Sleep()) { break; } } _start = 0; }