static void Main(string[] args) { MoodleUser user = MoodleDB.getMoodleDB().getUserByID(3); List <MoodleUser> users = MoodleDB.getMoodleDB().getUserWithSameModules(user); Console.ReadLine(); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <returns></returns> protected MoodleUser getUserObject(MySqlDataReader reader) { MoodleUser user; user = new MoodleUser(int.Parse(reader["ID"].ToString()), reader["username"].ToString(), reader["password"].ToString(), reader["firstname"].ToString(), reader["lastname"].ToString(), reader["city"].ToString(), reader["country"].ToString()); return(user); }
static void Main(string[] args) { String token = "7e708f0bf5b3911ace4e4922d220fbb0x"; string base_url = @"http://moodle.apexnet.it"; MoodleUser user = new MoodleUser(); user.username = HttpUtility.UrlEncode("mrossi"); user.password = HttpUtility.UrlEncode("fakepassword"); user.firstname = HttpUtility.UrlEncode("Mario"); user.lastname = HttpUtility.UrlEncode("Rossi"); user.email = HttpUtility.UrlEncode("*****@*****.**"); List<MoodleUser> userList = new List<MoodleUser>(); userList.Add(user); Array arrUsers = userList.ToArray(); String postData = String.Format("users[0][username]={0}&users[0][password]={1}&users[0][firstname]={2}&users[0][lastname]={3}&users[0][email]={4}", user.username, user.password, user.firstname, user.lastname, user.email); string createRequest = string.Format(base_url + "/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_user_create_users"); // Call Moodle REST Service HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formData = UTF8Encoding.UTF8.GetBytes(postData); req.ContentLength = formData.Length; // Write out the form Data to the request: using (Stream post = req.GetRequestStream()) { post.Write(formData, 0, formData.Length); } // Get the Response HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream resStream = resp.GetResponseStream(); StreamReader reader = new StreamReader(resStream); string contents = reader.ReadToEnd(); // Deserialize JsonSerializer serializer = new JsonSerializer(); if (contents.Contains("exception")) { // Error MoodleException moodleError = JsonConvert.DeserializeObject<MoodleException>(contents); } else { // Success List<MoodleCreateUserResponse> newUsers = JsonConvert.DeserializeObject<List<MoodleCreateUserResponse>>(contents); } }
public void GetUserByID() { int ID = 1; MoodleUser user = MoodleDB.getMoodleDB().getUserByID(ID); Assert.AreEqual(user.ID, ID); Assert.IsNotNull(user.fName); }
static void bestMatches() { MoodleUser user = MoodleDB.getMoodleDB().getUserByID(4); List <MoodleUser> users = System.getSystem().getBestMatches(user); foreach (MoodleUser mu in users) { Console.WriteLine(mu.toString()); } }
static void Main(string[] args) { String token = "ce8c1b87049bf89b62eba1ae87fd9c62"; MoodleUser user = new MoodleUser(); user.username = HttpUtility.UrlEncode("*****@*****.**"); user.password = HttpUtility.UrlEncode("Pass@word1"); user.firstname = HttpUtility.UrlEncode("Daryl"); user.lastname = HttpUtility.UrlEncode("Orwin"); user.email = HttpUtility.UrlEncode("*****@*****.**"); List<MoodleUser> userList = new List<MoodleUser>(); userList.Add(user); Array arrUsers = userList.ToArray(); String postData = String.Format("users[0][username]={0}&users[0][password]={1}&users[0][firstname]={2}&users[0][lastname]={3}&users[0][email]={4}", user.username, user.password, user.firstname, user.lastname, user.email); string createRequest = string.Format("http://MyMoodleUrl.com/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_user_create_users"); // Call Moodle REST Service HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formData = UTF8Encoding.UTF8.GetBytes(postData); req.ContentLength = formData.Length; // Write out the form Data to the request: using (Stream post = req.GetRequestStream()) { post.Write(formData, 0, formData.Length); } // Get the Response HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream resStream = resp.GetResponseStream(); StreamReader reader = new StreamReader(resStream); string contents = reader.ReadToEnd(); // Deserialize JavaScriptSerializer serializer = new JavaScriptSerializer(); if (contents.Contains("exception")) { // Error MoodleException moodleError = serializer.Deserialize<MoodleException>(contents); } else { // Good List<MoodleCreateUserResponse> newUsers = serializer.Deserialize<List<MoodleCreateUserResponse>>(contents); } }
/// <summary> /// Login the user to the locationDB /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public MoodleUser Login(string username, string password) { MoodleUser user = null; int id = LocationDB.getLocationDB().login(username, password); if (id != -1) { user = MoodleDB.getMoodleDB().getUserByID(id); } return(user); }
public string GetCreateData(MoodleUser user) { //Post data for creation return(string.Format( "users[0][username]={0}&users[0][password]={1}&users[0][firstname]={2}&users[0][lastname]={3}&users[0][email]={4}", user.Username, user.Password, user.FirstName, user.LastName, user.Email )); }
public IdentityResult RetrieveIdentity(Dictionary <string, object> context) { const string logMethodName = ".RetrieveIdentity(Dictionary<string, object> context) - "; _log.Debug(logMethodName + "Begin Method"); // Based on partner name, Populate sso custom attributes from ASAMember Model retrieved by call to SAL String partnerName = (String)context["partnerName"]; String optionalParam = (String)context["optionalParam"]; IdentityResult result = new IdentityResult(); try { string memberPath = UtilityMethods.ReadConfigValue("pathGetMember"); string memberResponse = WebServiceRequester.MakeServiceCall(memberPath); SiteMemberModel memberModel = UtilityMethods.DeserializeResponse <SiteMemberModel>(memberResponse); bool getsAdditionalValues = true; //Connection with Interships.com if (partnerName == "SaltIDP/Internships/PSP_OAuthDevConnection_To_Internships" || partnerName == "SaltIDP/Internships/PSP_OAuthProdConnection_To_Internships") { getsAdditionalValues = false; result = AddInternshipsAttributes(result, context, optionalParam, memberModel.PrimaryEmailKey); } //Connection with community Jive Prod if (partnerName.Contains("SaltIDP/Jive")) { result = AddJiveAttributes(result, memberModel, optionalParam); } //Connection with remote Learner else if (partnerName == "SaltIDP/RemoteLearner/PSP_Dev_ConnectionTo_MoodlePortal" || partnerName == "SaltIDP/RemoteLearner/PSP_Test_ConnectionTo_MoodlePortal" || partnerName == "SaltIDP/RemoteLearner/PSP_Stage_ConnectionTo_MoodlePortal" || partnerName == "SaltIDP/RemoteLearner/PSP_Prod_ConnectionTo_MoodlePortal") { result = AddRemoteLearnerAttributes(result, memberModel); //Setup (create/update) user in Courses MoodleUser mu = new MoodleUser(memberModel); mu.SetupUser(); } result = AddSSOCoreAttributes(result, memberModel, partnerName, getsAdditionalValues); } catch (Exception ex) { _log.Error(logMethodName + ex); throw ex; } _log.Debug(logMethodName + "End Method"); return(result); }
/// <summary> /// Finds user with the same town as user. /// </summary> /// <param name="user">User to finds matches for</param> /// <returns>List of users</returns> public List <MoodleUser> getUsersWithSameTown(MoodleUser user) { List <MoodleUser> users = new List <MoodleUser>(); string query = String.Format("SELECT * FROM Students WHERE City={0} AND ID NOT {1}", user.city, user.ID); using (MySqlDataReader reader = this.runQuery(query)) { while (reader.Read()) { users.Add(getUserObject(reader)); } } return(users); }
/******************** * GET From Database **********************/ /// <summary> /// Get a User from the moodle DB /// </summary> /// <param name="ID">ID of the User</param> /// <returns>Moodle User</returns> public MoodleUser getUser(int ID) { MoodleUser user = null; string query = String.Format("SELECT * FROM mdl_User WHERE id = {0}", ID); using (var reader = this.runQuery(query)) { while (reader.Read()) { user = this.getUserObject(reader); } } return(user); }
/// <summary> /// gets uses if they have on or more matches and add them once for each match; /// </summary> /// <param name="user"></param> /// <returns></returns> public List <MoodleUser> getUserWithSameModules(MoodleUser user) { List <MoodleUser> users = new List <MoodleUser>(); user.courses = this.getUsersCourses(user); string query = String.Format("SELECT * FROM mdl_user_enrolments JOIN mdl_enrol on mdl_user_enrolments.enrolid=mdl_enrol.id WHERE mdl_enrol.courseID IN ("); for (int i = 0; i < user.courses.Count; i++) { if (i == 0) { query = query + user.courses[i].ID; } else { query = query + ", " + user.courses[i].ID; } } query = query + ") AND mdl_user_enrolments.userID !=" + user.ID; List <int> userIDs = new List <int>(); using (var reader = this.runQuery(query)) { while (reader.Read()) { int ID = int.Parse(reader["userID"].ToString()); if (!userIDs.Contains(ID)) { userIDs.Add(ID); } } } foreach (int i in userIDs) { bool found = false; foreach (MoodleUser moUser in users) { if (i == moUser.ID) { found = true; } } if (!found) { users.Add(this.getUserByID(i)); } } return(users); }
/// <summary> /// Gets user by ID /// </summary> /// <param name="ID">ID of the user</param> /// <returns>A Moodle user Object</returns> public MoodleUser getUserByID(int ID) { MoodleUser user = null; string query = String.Format("SELECT * FROM mdl_user WHERE ID ={0} ", ID); using (var reader = this.runQuery(query)) { while (reader.Read()) { user = getUserObject(reader); } } user.courses = MoodleDB.getMoodleDB().getUsersCourses(user); return(user); }
public static List <MoodleUser> GetUserList() { List <MoodleUser> userList = new List <MoodleUser>(); var connection = DBMethods.GetConnection(); var command = DBMethods.GetCommand(connection, "Users"); int i = 0; // Row index for DataReader connection.Open(); try { MySqlDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()) { MoodleUser user = new MoodleUser(); if (dataReader.IsDBNull(i)) { Console.WriteLine("Null!"); break; } else { //necessary fields to create the user user.Id = dataReader.GetInt32(0); //This will not going to be added in to post data. user.Username = HttpUtility.UrlEncode(dataReader.GetString(1)); user.Password = HttpUtility.UrlEncode(dataReader.GetString(2)); //Let's assume we've got student's password in db for him/her moodle account user.FirstName = HttpUtility.UrlEncode(dataReader.GetString(3)); user.LastName = HttpUtility.UrlEncode(dataReader.GetString(4)); user.Email = HttpUtility.UrlEncode(dataReader.GetString(5)); userList.Add(user); } i++; } //Close the reader. dataReader.Close(); } finally { //Close the conection connection.Close(); } return(userList); }
public void BuildCoursesFromConfigTest_Should_Return_AllCourses() { //Arrange int memberId = 1940; var returnList = new List <CourseModel>(); MoodleUser mu = new MoodleUser(memberId.ToString()); //Act List <CourseModel> courses = mu.BuildCoursesFromConfig(); //Assert Assert.IsNotNull(courses); Assert.AreEqual(12, courses.Count); Assert.AreEqual("Budgeting", courses[0].idnumber); Assert.AreEqual("Budgeting", courses[0].shortname); Assert.AreEqual(26, courses[0].id); Assert.AreEqual("101-25847", courses[0].contentid); }
public List <MoodleCourse> getUsersCourses(MoodleUser user) { List <MoodleCourse> courses = new List <MoodleCourse>(); string query = String.Format("SELECT * FROM mdl_user_enrolments JOIN mdl_enrol on mdl_user_enrolments.enrolid=mdl_enrol.id WHERE mdl_user_enrolments.userID != {0}", user.ID); List <int> courseIDs = new List <int>(); using (var reader = this.runQuery(query)) { while (reader.Read()) { int ID = int.Parse(reader["courseID"].ToString()); if (!courseIDs.Contains(ID)) { courseIDs.Add(ID); } } } foreach (int i in courseIDs) { courses.Add(this.getCourse(i)); } return(courses); }
/// <summary> /// Validates the login. /// </summary> /// <returns><c>true</c>,if login was validated</returns> /// <param name="user">User.</param> public Boolean validateLogin(MoodleUser user) { /***** * string hashPassword = this.hashPassword (user.password); * string query = String.Format ("SELECT * FROM mdl_user WHERE username={0} AND Password={1}", user.username, hashPassword); * MySqlCommand cmd = new MySqlCommand (query, this.connection); * MoodleUser returnedUser=null; * * using (var reader = cmd.ExecuteReader ()) * { * while (reader.Read()) * { * returnedUser = MoodleUser.getUserObject(reader); * } * } * * if (returnedUser != null && returnedUser.ID == user.ID) * { * return true; * } * return false; ***/ return(false); }
static void Main(string[] args) { String token = "token-goes-here"; MoodleUser user = new MoodleUser(); user.username = HttpUtility.UrlEncode("*****@*****.**"); user.password = HttpUtility.UrlEncode("Pass@Fakew0rd"); user.firstname = HttpUtility.UrlEncode("Daryl"); user.lastname = HttpUtility.UrlEncode("Orwin"); user.email = HttpUtility.UrlEncode("*****@*****.**"); List <MoodleUser> userList = new List <MoodleUser>(); userList.Add(user); Array arrUsers = userList.ToArray(); String postData = String.Format("users[0][username]={0}&users[0][password]={1}&users[0][firstname]={2}&users[0][lastname]={3}&users[0][email]={4}", user.username, user.password, user.firstname, user.lastname, user.email); string createRequest = string.Format("http://moodleurl.com/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_user_create_users"); // Call Moodle REST Service HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formData = UTF8Encoding.UTF8.GetBytes(postData); req.ContentLength = formData.Length; // Write out the form Data to the request: using (Stream post = req.GetRequestStream()) { post.Write(formData, 0, formData.Length); } // Get the Response HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream resStream = resp.GetResponseStream(); StreamReader reader = new StreamReader(resStream); string contents = reader.ReadToEnd(); // Deserialize JavaScriptSerializer serializer = new JavaScriptSerializer(); if (contents.Contains("exception")) { // Error MoodleException moodleError = serializer.Deserialize <MoodleException>(contents); } else { // Good List <MoodleCreateUserResponse> newUsers = serializer.Deserialize <List <MoodleCreateUserResponse> >(contents); } }
public ActionResult RegisterForMoodle(int?eh) { string moodleURL = string.Concat("http://", Properties.Settings.Default.MoodleBaseURL, "/webservice/rest/server.php"); string function = "core_user_create_users"; string[] nameComponents = User.Identity.Name.Split(new Char[] { ' ' }); try { MoodleUser mUser = new MoodleUser() { username = HttpUtility.UrlEncode(User.Identity.Name.Replace(@"'", "").Replace(" ", "").ToLower()), password = HttpUtility.UrlEncode("r3MuSU53r#"), email = HttpUtility.UrlEncode(UserManager.FindById(User.Identity.GetUserId()).EmailAddress), firstname = nameComponents[0] }; if (nameComponents.Length == 1) { mUser.lastname = "R3man"; } else if (nameComponents.Length == 2) { mUser.lastname = nameComponents[1]; } else if (nameComponents.Length == 3) { mUser.lastname = string.Concat(nameComponents[1], " ", nameComponents[2]); } ; //List<MoodleUser> userList = new List<MoodleUser>(); //userList.Add(mUser); //Array arrUsers = userList.ToArray(); String postData = String.Format("users[0][username]={0}&users[0][password]={1}&users[0][firstname]={2}&users[0][lastname]={3}&users[0][email]={4}", mUser.username, mUser.password, mUser.firstname, mUser.lastname, mUser.email); string createRequest = string.Format("{0}?wstoken={1}&wsfunction={2}&moodlewsrestformat=json", moodleURL, Properties.Settings.Default.MoodleToken, function); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; byte[] formData = UTF8Encoding.UTF8.GetBytes(postData); req.ContentLength = formData.Length; using (Stream post = req.GetRequestStream()) { post.Write(formData, 0, formData.Length); } // Get the Response HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream resStream = resp.GetResponseStream(); StreamReader reader = new StreamReader(resStream); string contents = reader.ReadToEnd(); // Deserialize JavaScriptSerializer serializer = new JavaScriptSerializer(); if (contents.Contains("exception")) { // Error MoodleException moodleError = serializer.Deserialize <MoodleException>(contents); TempData.Add("Message", "An error occurred: Please contact Clyde en Marland with this message; "); TempData.Add("ErrorMessage", moodleError.debuginfo); } else { // Good TempData.Add("Message", "Registration Complete!"); List <MoodleCreateUserResponse> newUsers = serializer.Deserialize <List <MoodleCreateUserResponse> >(contents); } } catch (Exception ex) { TempData.Add("Message", "An error occurred: Please contact Clyde en Marland with this message; "); TempData.Add("ErrorMessage", ex.Message); } //return View("Index#MoodleTab"); return(RedirectToAction("Index")); }
static void Main(string[] args) { String token = "7e708f0bf5b3911ace4e4922d220fbb0x"; string base_url = @"http://moodle.apexnet.it"; MoodleUser user = new MoodleUser(); user.username = HttpUtility.UrlEncode("mrossi"); user.password = HttpUtility.UrlEncode("fakepassword"); user.firstname = HttpUtility.UrlEncode("Mario"); user.lastname = HttpUtility.UrlEncode("Rossi"); user.email = HttpUtility.UrlEncode("*****@*****.**"); List <MoodleUser> userList = new List <MoodleUser>(); userList.Add(user); Array arrUsers = userList.ToArray(); String postData = String.Format("users[0][username]={0}&users[0][password]={1}&users[0][firstname]={2}&users[0][lastname]={3}&users[0][email]={4}", user.username, user.password, user.firstname, user.lastname, user.email); string createRequest = string.Format(base_url + "/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_user_create_users"); // Call Moodle REST Service HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formData = UTF8Encoding.UTF8.GetBytes(postData); req.ContentLength = formData.Length; // Write out the form Data to the request: using (Stream post = req.GetRequestStream()) { post.Write(formData, 0, formData.Length); } // Get the Response HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream resStream = resp.GetResponseStream(); StreamReader reader = new StreamReader(resStream); string contents = reader.ReadToEnd(); // Deserialize JsonSerializer serializer = new JsonSerializer(); if (contents.Contains("exception")) { // Error MoodleException moodleError = JsonConvert.DeserializeObject <MoodleException>(contents); } else { // Success List <MoodleCreateUserResponse> newUsers = JsonConvert.DeserializeObject <List <MoodleCreateUserResponse> >(contents); } }
public ActionResult SSOService() { // Either an authn request has been received or login has just completed in response to a previous authn request. _log.Debug("SSO Service Begin"); string partnerSP = null; string myCurrentSP = SAMLIdentityProvider.GetPartnerPendingResponse(); Dictionary <string, object> paramDictionary = new Dictionary <string, object> { { "optionalParam", Request.Params["optionalParam"] } }; if (Request.Form.AllKeys.Contains("SAMLRequest") || (Request.QueryString.AllKeys.Contains("SAMLRequest") && (Request.QueryString.AllKeys.Contains("RelayState") || Request.QueryString.AllKeys.Contains("Signature")))) { // Receive the authn request from the service provider (SP-initiated SSO). _log.Debug("Calling ReceiveSSO"); SAMLIdentityProvider.ReceiveSSO(Request, out partnerSP); myCurrentSP = SAMLIdentityProvider.GetPartnerPendingResponse(); _log.Debug("Received SSO from " + partnerSP); } // If the user isn't logged in at the identity provider, force the user to login. if (!User.Identity.IsAuthenticated) { _log.Debug("Redirecting to login"); FormsAuthentication.RedirectToLoginPage(); return(new EmptyResult()); } // The user is logged in at the identity provider. // Respond to the authn request by sending a SAML response containing a SAML assertion to the SP. // Use the configured or logged in user name as the user name to send to the service provider (SP). // Include some user attributes. string userName = WebConfigurationManager.AppSettings[AppSettings.SubjectName]; IDictionary <string, string> attributes = new Dictionary <string, string>(); if (string.IsNullOrEmpty(userName)) { try { string memberPath = UtilityMethods.ReadConfigValue("pathGetMember"); _log.Debug("Calling " + memberPath); string memberResponse = WebServiceRequester.MakeServiceCall(memberPath); SiteMemberModel memberModel = UtilityMethods.DeserializeResponse <SiteMemberModel>(memberResponse); userName = memberModel.MembershipId.ToString(); bool getsAdditionalValues = true; //determine which SP, and populate the respective member attributes myCurrentSP = SAMLIdentityProvider.GetPartnerPendingResponse(); //Connection with remote Learner if (myCurrentSP.Contains("oldmoney.remote-learner.net") || myCurrentSP.Contains("saltcourses.saltmoney.org")) { attributes = AddRemoteLearnerAttributes(attributes, memberModel); //Setup (create/update) user in Courses MoodleUser mu = new MoodleUser(memberModel); mu.SetupUser(); } if (myCurrentSP.Contains("sso.online.tableau.com")) { attributes = AddTableauAttributes(attributes, memberModel); } if (myCurrentSP.Contains("community.saltmoney.org")) { String optionalParam = (String)paramDictionary["optionalParam"]; attributes = AddJiveAttributes(attributes, memberModel, optionalParam); } _log.Debug("Calling AddSSOCoreAttributes"); attributes = AddSSOCoreAttributes(attributes, memberModel, myCurrentSP, getsAdditionalValues); _log.Debug("Returned from AddSSOCoreAttributes with " + attributes.Count() + " Attributes"); } catch (Exception ex) { _log.Error(ex); throw ex; } } try { _log.Debug("Calling SendSSO for " + userName); SAMLIdentityProvider.SendSSO(Response, userName, attributes); } catch (Exception ex) { _log.Error(ex); throw ex; } return(new EmptyResult()); }
/// <summary> /// Gets a user year and there matches avg /// </summary> /// <param name="ID"></param> /// <returns></returns> public Dictionary <MoodleCourse, List <LocationAvg> > getAvgsYear(int ID) { MoodleUser user = MoodleDB.getMoodleDB().getUserByID(ID); List <MoodleCourse> courses = MoodleDB.getMoodleDB().getUsersCourses(user); List <MoodleUser> matches = System.getSystem().getBestMatches(user); Dictionary <MoodleCourse, List <LocationAvg> > averages = new Dictionary <MoodleCourse, List <LocationAvg> >(); List <LocationAvg> avgs = LocationDB.getLocationDB().getAveragesYear(matches); ///Overall //User LocationAvg userAvg = LocationDB.getLocationDB().getUsersAvgYear(ID); MoodleCourse global = new MoodleCourse(-1, "Global", "Global", ""); //Match Avg int totalOn = 0, totalOff = 0; foreach (MoodleUser avg in matches) { LocationAvg matchAvg = LocationDB.getLocationDB().getUsersAvgYear(ID); if (matchAvg != null) { totalOn = totalOn + matchAvg.on; totalOff = totalOff + matchAvg.off; } } int avgMatchOn = 0, avgMatchOff = 0; //On if (matches.Count > 0 && totalOn > 0) { avgMatchOn = totalOn / matches.Count; } if (matches.Count > 0 && totalOff > 0) { avgMatchOff = totalOff / matches.Count; } LocationAvg overallAvg = new LocationAvg(-1, DateTime.Now, avgMatchOn, avgMatchOff); List <LocationAvg> locationAvgs = new List <LocationAvg>(); locationAvgs.Add(userAvg); locationAvgs.Add(overallAvg); averages.Add(global, locationAvgs); //Per Course //User foreach (MoodleCourse course in courses) { int cTotalOn = 0, cTotalOff = 0; //User LocationAvg avg = LocationDB.getLocationDB().getUsersAvgYear(course.ID, user.ID); int count = 0; foreach (MoodleUser mUser in matches) { foreach (MoodleCourse c in user.courses) { if (course.ID == c.ID) { LocationAvg tempLA = LocationDB.getLocationDB().getUsersAvgYear(course.ID, mUser.ID); if (tempLA != null) { cTotalOn = cTotalOn + tempLA.on; cTotalOff = cTotalOff + tempLA.off; count++; } } } } int cAvgMatchOn = 0, cAvgMatchOff = 0; if (matches.Count > 0 && cTotalOn > 0) { cAvgMatchOn = cTotalOn / matches.Count; cAvgMatchOff = cTotalOff / matches.Count; } List <LocationAvg> cAvgs = new List <LocationAvg>(); LocationAvg locAvg = new LocationAvg(-1, DateTime.Now, cAvgMatchOn, cAvgMatchOff); cAvgs.Add(avg); cAvgs.Add(locAvg); averages.Add(course, cAvgs); } return(averages); }
/// <summary> /// Returns a list of users that are a best /// match for user will try to return a min of 5 users /// </summary> /// <param name="user">The user to find matches for</param> /// <returns>List of moodle user</returns> public List <MoodleUser> getBestMatches(MoodleUser user) { List <MoodleUser> users = new List <MoodleUser>(); List <MoodleUser> matches = new List <MoodleUser>(); // List to be returned. users = MoodleDB.getMoodleDB().getUserWithSameModules(user); //Perfect Match. //Main Loop foreach (MoodleUser moUser in users) { moUser.courses = MoodleDB.getMoodleDB().getUsersCourses(moUser); int courseMatch = 0; if (moUser.city.ToLower() == user.city.ToLower()) { foreach (MoodleCourse course in moUser.courses) { foreach (MoodleCourse userCourse in user.courses) { if (course.ID == userCourse.ID) { courseMatch++; } } } } if (user.courses.Count == courseMatch) { if (!matches.Contains(moUser)) { matches.Add(moUser); } } } foreach (MoodleUser mu in matches) // FY all matches from main list. { users.Remove(mu); } ///2 > Modules match int matchLevel = user.courses.Count; while (matches.Count < 5) { foreach (MoodleUser moUser in users) { int courseMatch = 0; foreach (MoodleCourse course in moUser.courses) { foreach (MoodleCourse c in user.courses) { if (c.ID == course.ID) { courseMatch++; } } } if (courseMatch == matchLevel) { matches.Add(moUser); } } foreach (MoodleUser moUser in matches) { users.Remove(moUser); } matchLevel--; if (users.Count == 0 || matchLevel == 0) { break; } } return(matches); }