public void ScheduleService() { try { Schedular = new Timer(new TimerCallback(SchedularCallback)); string mode = ConfigurationManager.AppSettings["Mode"].ToUpper(); SPLibrary.WriteToFile("{0} : " + "Service Mode: " + mode ); //Set the Default Time. DateTime scheduledTime = DateTime.MinValue; if (mode == "DAILY") { //Get the Scheduled Time from AppSettings. scheduledTime = DateTime.Parse(System.Configuration.ConfigurationManager.AppSettings["ScheduledTime"]); if (DateTime.Now > scheduledTime) { //If Scheduled Time is passed set Schedule for the next day. scheduledTime = scheduledTime.AddDays(1); } } if (mode.ToUpper() == "INTERVAL") { //Get the Interval in Minutes from AppSettings. int intervalMinutes = Convert.ToInt32(ConfigurationManager.AppSettings["IntervalMinutes"]); //Set the Scheduled Time by adding the Interval to Current Time. scheduledTime = DateTime.Now.AddMinutes(intervalMinutes); if (DateTime.Now > scheduledTime) { //If Scheduled Time is passed set Schedule for the next Interval. scheduledTime = scheduledTime.AddMinutes(intervalMinutes); } } TimeSpan timeSpan = scheduledTime.Subtract(DateTime.Now); string schedule = string.Format("{0} day(s) {1} hour(s) {2} minute(s) {3} seconds(s)", timeSpan.Days, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds); //Write log file SPLibrary.WriteToFile("{0} : " + "Service scheduled to run after: " + schedule); //////////////////////////////////////////////////////////////////////// //Call userprofile sync try { //PMO site collection string site = ConfigurationManager.AppSettings["rootSite"].ToString(); SPUserProfile up = new SPUserProfile(site); List<NYDOEUser> userColls = up.UserProfiles(); //Console.Write(userColls.Count); // insert tasks to UserTask table DataLayer dal = new DataLayer(); dal.ExecuteSclrBySPDelete("DeleteUsers"); foreach (NYDOEUser item in userColls) { if (item != null) { SortedList sl = new SortedList(); sl.Add("@UID", item.UID); sl.Add("@FirstName", item.FirstName); sl.Add("@LastName", item.LastName); sl.Add("@email", item.Email); sl.Add("@Title", item.JobTitle); sl.Add("@Phone", item.Workphone); sl.Add("@Department", item.Department); sl.Add("@loginame", item.LoginName); dal.ExecuteSclrBySP("InsertUserProfile", sl); } } SPLibrary.WriteToFile("{0} : SYNC SUCCESSFUL "); } catch (Exception ex) { SPLibrary.WriteToFile("{0} : SYNC ERROR: " + ex.Message + ex.StackTrace); } //////////////////////////////////////////////////////////////////////// //Get the difference in Minutes between the Scheduled and Current Time. int dueTime = Convert.ToInt32(timeSpan.TotalMilliseconds); //Change the Timer's Due Time. Schedular.Change(dueTime, Timeout.Infinite); } catch (Exception ex) { SPLibrary.WriteToFile("ERROR: {0} " + ex.Message + ex.StackTrace); //Stop the Windows Service. using (System.ServiceProcess.ServiceController serviceController = new System.ServiceProcess.ServiceController("PMOUserProfileSyncService")) { serviceController.Stop(); } } }
static void Main(string[] args) { try { //empty UserTask table DataLayer dal = new DataLayer(); dal.ExecuteSclrBySPDelete("deleteTask"); //Dashboard site string site = ConfigurationManager.AppSettings["sites"].ToString(); List<UserTask> incompleteTasks = GetIncompleteTaskAll(site); // insert tasks to UserTask table foreach (UserTask item in incompleteTasks) { if (item != null && item.UID!=-1 && item.TaskStatus!= "Completed") { SortedList sl = new SortedList(); sl.Add("@UID", item.UID); sl.Add("@TID", item.TaskID); sl.Add("@DueDate",item.DueDate); sl.Add("@emailtemplateID", 1); sl.Add("@Completed",item.IsComplete); sl.Add("@TaskName", item.TaskName); sl.Add("@TaskDescription",item.TaskDescription); sl.Add("@TaskURL", item.TaskUrl); sl.Add("@TaskStatus", item.TaskStatus); // DataTable dtSaveEmailStatus = new DataTable(); string dtSaveEmailStatus = dal.ExecuteSclrBySP("InsertTask", sl); } } } catch (Exception e) { Console.Write(e.Message); } Console.WriteLine("Press any key to continue ...."); Console.Read(); }