/// <summary> /// This pulls a snapshot of the MyMav system and stores the data. Note that it relies on the old method of using WinForms so it /// wont run on the server and will need to run locally. Needs to be updated to using HttpRequests /// </summary> public void UTADataPull() { Stopwatch watch = new Stopwatch(); watch.Start(); //TODO Implement a way to get all the semester numbers. //new SemesterControl(Server.MapPath("~/Log.txt")).Semesters; var semesterList = new List<Semester>() { new Semester() { SemesterNumber = "2158", SemesterName = "Fall 2015", Departments = new List<Department>() }, new Semester() { SemesterNumber = "2155", SemesterName = "Summer 2015", Departments = new List<Department>() }, new Semester() { SemesterNumber = "2152", SemesterName = "Spring 2015", Departments = new List<Department>() }, new Semester() { SemesterNumber = "2145", SemesterName = "Summer 2014", Departments = new List<Department>() } }; var departments = new DepartmentListControl(); //var control = new ClassListControl(semesterList, departments.deptList, Server.MapPath("~/Log.txt")); int semesterId = 0; foreach (var semester in semesterList) { Semester data = connection.Query<Semester>("select * from Semester where SemesterNumber='" + semester.SemesterNumber + "'").FirstOrDefault(); if (data == null) { semesterId = connection.Query<int>("insert Semester (SemesterNumber, SemesterName) values (@SemesterNumber, @SemesterName); select cast(scope_identity() as int)", semester).First(); } else semesterId = data.Id; semester.Id = semesterId; foreach (var currentDepartment in departments.deptList) { Department department = connection.Query<Department>("select * from Department where DepartmentAcronym='" + currentDepartment.Substring(currentDepartment.IndexOf('(') + 1, currentDepartment.IndexOf(')') - currentDepartment.IndexOf('(') - 1) + "' and SemesterId='" + semesterId + "'").FirstOrDefault(); if (department == null) { var departmentName = currentDepartment.Split('(')[0]; departmentName = departmentName.Insert(currentDepartment.IndexOf('\''), "'"); department = new Department() { DepartmentName = departmentName.Trim(), DepartmentAcronym = currentDepartment.Substring(currentDepartment.IndexOf('(') + 1, currentDepartment.IndexOf(')') - currentDepartment.IndexOf('(') - 1), SemesterId = semesterId, }; var departmentId = connection.Query<int>("insert Department (SemesterId, DepartmentAcronym) values (@SemesterId, @DepartmentAcronym); select cast(scope_identity() as int)", department).First(); department.Id = departmentId; semester.Departments.Add(department); } else { semester.Departments.Add(department); } } } foreach(var semester in semesterList) { Parallel.ForEach(semester.Departments, new ParallelOptions { MaxDegreeOfParallelism = 2 }, x => new MyMavScreenshot(semester, x.DepartmentAcronym, x.Id).Execute()); } //var tempy = new MyMavScreenshot(semesterList.ElementAt(0), "CSE", ); // tempy.Execute(); watch.Stop(); //return Json(new //{ // Success = false, // ClassData = semesterList, //}, JsonRequestBehavior.AllowGet); }
/// <summary> /// Note that DepartmentListControl is now deprecated and should be converted to using HttpRequest /// as per the other MyMav requests. This method is obselete in the sense that it was written to add additional data after the fact. /// The Batch pull already inserts this data currently. /// </summary> public void UpdateDepartments() { var departments = new DepartmentListControl(); List<Department> mainDepartments = connection.Query<Department>("select * from Department").ToList(); foreach(var department in departments.deptList) { var currentDepartment = department.Substring(department.IndexOf('(') + 1, department.IndexOf(')') - department.IndexOf('(') - 1); var departmentName = department.Split('(')[0].Trim(); if (currentDepartment.Contains('\'')) currentDepartment.Insert(currentDepartment.IndexOf('\''), "'"); if (departmentName.Contains('\'')) departmentName = departmentName.Insert(departmentName.IndexOf('\''), "'"); connection.Query<int>("update Department set DepartmentName='" + departmentName+ "' where DepartmentAcronym = '" + currentDepartment +"'"); } }