public HwndObject GetInfoManager() // TODO: make this a retryable action { foreach (HwndObject o in getMainContainer().GetChildren()) { Console.ForegroundColor = Colors.Message; if (o.Title.StartsWith("Info Manager")) { Stuff.WriteConsoleMessage("Info Manager already opened"); return(o); } } Stuff.WriteConsoleMessage("Info Manager not opened..."); Input.PressKeyCombo(Input.KEY_ALT, Input.KEY_A); Thread.Sleep(1000); Input.PressKey(Input.KEY_I); Thread.Sleep(1000); HwndObject infoManager = GetInfoManager(); if (infoManager == null) { Stuff.WriteConsoleError("Unable to open info manager"); } return(infoManager); }
private void RunReport(string reportName, string path, Action findReport, Action reportParameters, int numRetries = 3) { if (!EnoughRetries(numRetries)) { return; } CloseInfoManager(); if (GetInfoManager() == null) { Stuff.WriteConsoleError("Unable to open info manager...Giving Up"); return; } Thread.Sleep(1000); findReport.Invoke(); Input.PressKey(Input.KEY_TAB); Thread.Sleep(500); Input.PressKey(Input.KEY_ENTER); Thread.Sleep(5000); Console.ForegroundColor = Colors.Message; Console.WriteLine("Loading " + reportName + ", will save to " + path); HwndObject parameters = null; HwndObject report = null; if (!InitializeReport(out parameters, out report, reportName)) { Console.ForegroundColor = Colors.Error; Console.WriteLine("Trying again..."); RunReport(reportName, path, findReport, reportParameters, numRetries - 1); return; } Thread.Sleep(5000); reportParameters.Invoke(); Console.ForegroundColor = Colors.Message; Console.WriteLine("Requesting Report"); Stopwatch watch = Stopwatch.StartNew(); while (report.GetChildren()[0].GetChildren().Count == 0) { Console.WriteLine("Waiting... (" + watch.ElapsedMilliseconds + ")"); Thread.Sleep(3000); } watch.Stop(); Console.ForegroundColor = Colors.Success; Console.WriteLine("Report Generated"); SaveReport(path); Console.ForegroundColor = Colors.Message; Console.WriteLine("Report Processed"); report.CloseWindow(); }
public void RunChairReport(string path, string startDate, string endDate, List <Tuple <string, string> > studentRanges, int numRetries = DEFAULT_RETRIES) { if (!EnoughRetries(numRetries)) { return; } CloseInfoManager(); if (GetInfoManager() == null) { Stuff.WriteConsoleError("Unable to open info manager...Giving Up"); return; } Input.MoveTo(new Point(800, 95)); // Custom Lists Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(500); Input.MoveTo(new Point(300, 220)); // Category Thread.Sleep(500); Input.RegisterClick(); Input.MoveTo(new Point(485, 350)); Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(500); Stuff.WriteConsoleMessage("Setting student ranges"); SetStudentRangeParameters(new Point(485, 350), studentRanges); Thread.Sleep(500); Stuff.WriteConsoleMessage("Setting date range of " + startDate + " to " + endDate); SetDateFieldParameters(new Point(710, 350), startDate, endDate); Thread.Sleep(500); if (!new RetryableAction(() => ExecuteQuery(), "Executing Query").Execute()) { Stuff.WriteConsoleError("Unable to execute query to gather appointments"); return; } Thread.Sleep(5000); GetInfoManager().Activate(); if (!new RetryableAction(() => ExportQuery(), "Exporting Query Results").Execute()) { Stuff.WriteConsoleError("Unable to export query results"); return; } Thread.Sleep(5000); if (!new RetryableAction(() => SaveExcel(path), "Saving Generated Excel File").Execute()) { Stuff.WriteConsoleError("Unable to save excel file"); return; } Thread.Sleep(5000); }
private void SetDateFieldParameters(Point p, string startDate, string endDate, int numRetries = DEFAULT_RETRIES) { if (!EnoughRetries(numRetries) || !OpenColumnCondition(p)) { Stuff.WriteConsoleError("Unable to set date range parameters"); return; } Input.PressKey(Input.KEY_B); // Set to "Between" Input.PressKey(Input.KEY_TAB); Input.KeyboardWrite(startDate, 100); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.KeyboardWrite(endDate, 100); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_ENTER); Input.PressKeyCombo(Input.KEY_ALT, Input.KEY_C); }
public bool Execute(int numRetries = DEFAULT_RETRIES) { if (numRetries == 0) { return(false); } try { Stuff.WriteConsoleMessage("Running " + actionName); action.Invoke(); return(true); } catch (Exception ex) { Stuff.WriteConsoleError(ex.ToString()); Stuff.WriteConsoleError("Unable to complete " + actionName + "; trying again..."); return(Execute(numRetries - 1)); } }
private void SetStudentRangeParameters(Point p, List <Tuple <string, string> > studentRanges, int numRetries = DEFAULT_RETRIES) { if (!EnoughRetries(numRetries) || !OpenColumnCondition(p)) { Stuff.WriteConsoleError("Unable to set student range parameters"); return; } Input.PressKey(Input.KEY_B); Input.PressKey(Input.KEY_TAB); int count = 0; foreach (Tuple <string, string> range in studentRanges) { Input.KeyboardWrite(range.Item1, 100); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.KeyboardWrite(range.Item2, 100); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_ENTER); if ((count + 1) != studentRanges.Count) { Input.RegisterKeyDown(Input.KEY_SHIFT); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.PressKey(Input.KEY_TAB); Input.RegisterKeyUp(Input.KEY_SHIFT); count++; } } Input.RegisterKeyDown(Input.KEY_ALT); Input.PressKey(Input.KEY_C); Input.RegisterKeyUp(Input.KEY_ALT); }
public void SaveExcel(string path) { HwndObject window = HwndObject.GetForegroundWindow(); if (!window.Title.Contains("Excel") && !window.Title.StartsWith("Book")) { foreach (HwndObject o in HwndObject.GetWindows().FindAll(e => e.Title.Contains("Excel"))) { if (o.Title.StartsWith("Book")) { if (window == null) { window = o; } else if (Int32.TryParse(o.Title.Substring(4), out int number)) { if (number > Int32.Parse(window.Title.Substring(4))) { window = o; } } } } } if (window == null) { Console.ForegroundColor = Colors.Error; Console.WriteLine("Unable to export report from Axium"); return; } else { Console.ForegroundColor = Colors.Success; Console.WriteLine("Excel file opened: " + window.Title); } window.Activate(); Thread.Sleep(2000); window.Maximize(); Thread.Sleep(2000); Input.PressKeyCombo(Input.KEY_CONTROL, Input.KEY_S); Thread.Sleep(2000); Input.MoveTo(new Point(800, 635)); Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(500); Input.MoveTo(new Point(570, 195)); Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(500); HwndObject saveDialog = HwndObject.GetWindows().Find(e => e.Title.Contains("Save As")); Stuff.WriteConsoleMessage("Save dialog found!"); saveDialog.Activate(); Thread.Sleep(500); Input.KeyboardWrite(path, 100); Thread.Sleep(100); Input.PressKeyCombo(Input.KEY_ALT, Input.KEY_S); Thread.Sleep(2000); if (!File.Exists(path + ".xlsx")) { Stuff.WriteConsoleError("File was not saved...trying again"); } else { window.CloseWindow(); Stuff.WriteConsoleSuccess("File was saved to " + path); } }
public void RunAppointmentReport(string path, string startDate, string endDate, List <Tuple <string, string> > studentRanges, int numRetries = DEFAULT_RETRIES) { if (!EnoughRetries(numRetries)) { return; } CloseInfoManager(); if (GetInfoManager() == null) { Stuff.WriteConsoleError("Unable to open info manager...Giving Up"); return; } Input.MoveTo(new Point(480, 95)); // Appointment Tab Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(500); Input.MoveTo(new Point(1060, 170)); // Pre-Defined Button Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(1000); Input.MoveTo(new Point(845, 500)); // Michael's Appointment List Thread.Sleep(500); Input.RegisterClick(); Thread.Sleep(1000); Input.PressKeyCombo(Input.KEY_ALT, Input.KEY_S); // Select the report Stuff.WriteConsoleMessage("Setting date range of " + startDate + " to " + endDate); SetDateFieldParameters(new Point(335, 350), startDate, endDate); Thread.Sleep(500); Stuff.WriteConsoleMessage("Setting student ranges"); studentRanges.Add(Tuple.Create("D106", "D106")); //NPE studentRanges.Add(Tuple.Create("D099", "D099")); //ER SetStudentRangeParameters(new Point(560, 350), studentRanges); Thread.Sleep(500); if (!new RetryableAction(() => ExecuteQuery(), "Executing Query").Execute()) { Stuff.WriteConsoleError("Unable to execute query to gather appointments"); return; } Thread.Sleep(5000); GetInfoManager().Activate(); if (!new RetryableAction(() => ExportQuery(), "Exporting Query Results").Execute()) { Stuff.WriteConsoleError("Unable to export query results"); return; } Thread.Sleep(5000); if (!new RetryableAction(() => SaveExcel(path), "Saving Generated Excel File").Execute()) { Stuff.WriteConsoleError("Unable to save excel file"); return; } Thread.Sleep(5000); }