protected void btn_CreateCourse_Click(object sender, EventArgs e) { ServicePointManager.Expect100Continue = true; ServicePointManager.DefaultConnectionLimit = 9999; ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; String token = "1b4cb9114197a84985695b19b1164d0a"; long start = ToUnixTimestamp(Convert.ToDateTime(txt_StatrtDate.Text)); long end = ToUnixTimestamp(Convert.ToDateTime(txt_EndDate.Text)); //Start Create New Course MoodleCourses courses = new MoodleCourses(); courses.fullname = HttpUtility.UrlEncode(txt_fullname.Text.Trim()); courses.shortname = HttpUtility.UrlEncode(txt_shortname.Text.Trim()); courses.categoryid = HttpUtility.UrlEncode(txt_categoryid.Text.Trim()); courses.idnumber = HttpUtility.UrlEncode(txt_Idnumber.Text.Trim()); courses.summary = HttpUtility.UrlEncode(txt_Summary.Text.Trim()); courses.summaryformat = HttpUtility.UrlEncode(txt_summaryformat.Text.Trim()); courses.format = HttpUtility.UrlEncode(txt_format.Text.Trim()); courses.showgrades = HttpUtility.UrlEncode(txt_showgrades.Text.Trim()); courses.newsitems = HttpUtility.UrlEncode(txt_NewsItems.Text.Trim()); courses.startdate = HttpUtility.UrlEncode(start.ToString()); courses.enddate = HttpUtility.UrlEncode(end.ToString()); courses.numsections = HttpUtility.UrlEncode(txt_numsections.Text.Trim()); courses.maxbytes = HttpUtility.UrlEncode(txt_maxbytes.Text.Trim()); courses.showreports = HttpUtility.UrlEncode(txt_ShowReports.Text.Trim()); courses.visible = HttpUtility.UrlEncode(txt_visible.Text.Trim()); courses.groupmode = HttpUtility.UrlEncode(txt_groupmode.Text.Trim()); courses.groupmodeforce = HttpUtility.UrlEncode(txt_groupmodeforce.Text.Trim()); courses.defaultgroupingid = HttpUtility.UrlEncode(txt_defaultgroupingid.Text.Trim()); courses.enablecompletion = HttpUtility.UrlEncode(txt_enablecompletion.Text.Trim()); courses.completionnotify = HttpUtility.UrlEncode(txt_completionnotify.Text.Trim()); courses.lang = HttpUtility.UrlEncode(txt_lang.Text.Trim()); List <MoodleCourses> coursesList = new List <MoodleCourses>(); coursesList.Add(courses); Array arrCourses = coursesList.ToArray(); //String postData = String.Format("courses[0][fullname]={0}&courses[0][shortname]={1}&courses[0][categoryid]={2}&courses[0][idnumber]={3}&courses[0][summary]={4}&courses[0][summaryformat]={5}&courses[0][format]={6}&courses[0][showgrades]={7}&courses[0][newsitems]={8}&courses[0][showreports]={9}&courses[0][visible]={10}&courses[0][groupmode]={11}&courses[0][groupmodeforce]={12}&courses[0][defaultgroupingid]={13}", courses.fullname, courses.shortname, courses.categoryid, courses.idnumber, courses.summary, courses.summaryformat, courses.format, courses.showgrades, courses.newsitems, courses.showreports, courses.visible, courses.groupmode, courses.groupmodeforce, courses.defaultgroupingid); String postData = String.Format("courses[0][fullname]={0}&courses[0][shortname]={1}&courses[0][categoryid]={2}&courses[0][idnumber]={3}&courses[0][summary]={4}&courses[0][summaryformat]={5}&courses[0][format]={6}&courses[0][showgrades]={7}&courses[0][newsitems]={8}&courses[0][startdate]={9}&courses[0][enddate]={10}&courses[0][numsections]={11}&courses[0][maxbytes]={12}&courses[0][showreports]={13}&courses[0][visible]={14}&courses[0][groupmode]={15}&courses[0][groupmodeforce]={16}&courses[0][defaultgroupingid]={17}&courses[0][enablecompletion]={18}&courses[0][completionnotify]={19}&courses[0][lang]={20}", courses.fullname, courses.shortname, courses.categoryid, courses.idnumber, courses.summary, courses.summaryformat, courses.format, courses.showgrades, courses.newsitems, courses.startdate, courses.enddate, courses.numsections, courses.maxbytes, courses.showreports, courses.visible, courses.groupmode, courses.groupmodeforce, courses.defaultgroupingid, courses.enablecompletion, courses.completionnotify, courses.lang); string createRequest = string.Format("https://lms.ectmoodle.ae/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_course_create_courses"); // 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); lbl_results.Text = contents; } else { // Good List <MoodleCreateCourseResponse> newCourses = serializer.Deserialize <List <MoodleCreateCourseResponse> >(contents); string id = ""; string shortname = ""; foreach (var value in newCourses) { id = value.id; shortname = value.shortname; } //End Create New Course // Deserialize string idimportcourse = ""; string contentsimport = core_course_get_courses_by_field("idnumber", txt_ImportCourseID.Text.Trim()); JavaScriptSerializer serializer1 = new JavaScriptSerializer(); if (contentsimport.Contains("exception")) { // Error MoodleException moodleError = serializer1.Deserialize <MoodleException>(contentsimport); lbl_results.Text = contentsimport; } else { // Good //List<MoodleCourses_Get> newCourses1 = serializer.Deserialize<List<MoodleCourses_Get>>(contents1); //string fullname1 = ""; //foreach (var value in newCourses1) //{ // idimportcourse = value.id; // fullname1 = value.fullname; //} //object yourOjbect = new JavaScriptSerializer().DeserializeObject(contentsimport); DataSet importobject = JsonConvert.DeserializeObject <DataSet>(contentsimport); idimportcourse = importobject.Tables[0].Rows[0]["id"].ToString(); } //Start Import Previous Course Contents to the Created Course Now MoodleImportCourse import = new MoodleImportCourse(); import.importfrom = HttpUtility.UrlEncode(idimportcourse); import.importto = HttpUtility.UrlEncode(id); import.deletecontent = HttpUtility.UrlEncode("0"); import.name = HttpUtility.UrlEncode("activities"); import.value = HttpUtility.UrlEncode("1"); import.name1 = HttpUtility.UrlEncode("blocks"); import.value1 = HttpUtility.UrlEncode("1"); import.name2 = HttpUtility.UrlEncode("filters"); import.value2 = HttpUtility.UrlEncode("1"); List <MoodleImportCourse> importList = new List <MoodleImportCourse>(); importList.Add(import); Array arrImport = importList.ToArray(); String postImportData = String.Format("importfrom={0}&importto={1}&deletecontent={2}&options[0][name]={3}&options[0][value]={4}&options[0][name]={5}&options[0][value]={6}&options[0][name]={7}&options[0][value]={8}", import.importfrom, import.importto, import.deletecontent, import.name, import.value, import.name1, import.value1, import.name2, import.value2); string createRequestImport = string.Format("https://lms.ectmoodle.ae/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_course_import_course"); // Call Moodle REST Service HttpWebRequest reqImport = (HttpWebRequest)WebRequest.Create(createRequestImport); reqImport.Method = "POST"; reqImport.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formDataImport = UTF8Encoding.UTF8.GetBytes(postImportData); reqImport.ContentLength = formDataImport.Length; // Write out the form Data to the request: using (Stream postImport = reqImport.GetRequestStream()) { postImport.Write(formDataImport, 0, formDataImport.Length); } // Get the Response HttpWebResponse respImport = (HttpWebResponse)reqImport.GetResponse(); Stream resStreamImport = respImport.GetResponseStream(); StreamReader readerImport = new StreamReader(resStreamImport); string contentsImport = readerImport.ReadToEnd(); // Deserialize JavaScriptSerializer serializerImport = new JavaScriptSerializer(); if (contentsImport.Contains("exception")) { // Error MoodleException moodleError = serializerImport.Deserialize <MoodleException>(contentsImport); lbl_results.Text = contentsImport; } else { // Good //End Import Previous Course Contents to the Created Course Now List <string> newImport = serializerImport.Deserialize <List <string> >(contentsImport); //Start Check if any groups were present in the imported course or not; if yes delete all existing groups MoodleGetCourseGroup GetCourse = new MoodleGetCourseGroup(); GetCourse.courseid = HttpUtility.UrlEncode(id); List <MoodleGetCourseGroup> CourseGroupList = new List <MoodleGetCourseGroup>(); CourseGroupList.Add(GetCourse); Array arrCourseGroup = CourseGroupList.ToArray(); String postCourseGroup = String.Format("courseid={0}", GetCourse.courseid); string createRequestCourseGroup = string.Format("https://lms.ectmoodle.ae/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_group_get_course_groups"); // Call Moodle REST Service HttpWebRequest reqCourseGroup = (HttpWebRequest)WebRequest.Create(createRequestCourseGroup); reqCourseGroup.Method = "POST"; reqCourseGroup.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formCourseGroup = UTF8Encoding.UTF8.GetBytes(postCourseGroup); reqCourseGroup.ContentLength = formCourseGroup.Length; // Write out the form Data to the request: using (Stream postImportCourseGroup = reqCourseGroup.GetRequestStream()) { postImportCourseGroup.Write(formCourseGroup, 0, formCourseGroup.Length); } // Get the Response HttpWebResponse respImportCourseGroup = (HttpWebResponse)reqCourseGroup.GetResponse(); Stream resStreamImportCourseGroup = respImportCourseGroup.GetResponseStream(); StreamReader readerImportCourseGroup = new StreamReader(resStreamImportCourseGroup); string contentsImportCourseGroup = readerImportCourseGroup.ReadToEnd(); JavaScriptSerializer serializerImportCourseGroup = new JavaScriptSerializer(); if (contentsImportCourseGroup.Contains("exception")) { // Error MoodleException moodleError = serializerImportCourseGroup.Deserialize <MoodleException>(contentsImportCourseGroup); lbl_results.Text = contentsImportCourseGroup; } else { // Good List <MoodleGetCourseGroupResponse> newCourseGroup = serializer.Deserialize <List <MoodleGetCourseGroupResponse> >(contentsImportCourseGroup); string groupid = ""; foreach (var value in newCourseGroup) { groupid = value.id; //Start Delete Groups MoodleDeleteGroup DeleteGroup = new MoodleDeleteGroup(); DeleteGroup.groupids = HttpUtility.UrlEncode(groupid); List <MoodleDeleteGroup> DeleteGroupList = new List <MoodleDeleteGroup>(); DeleteGroupList.Add(DeleteGroup); Array arrDeleteGroup = DeleteGroupList.ToArray(); String postDeleteGroup = String.Format("groupids[0]={0}", DeleteGroup.groupids); string createRequestDeleteGroup = string.Format("https://lms.ectmoodle.ae/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_group_delete_groups"); // Call Moodle REST Service HttpWebRequest reqDeleteGroup = (HttpWebRequest)WebRequest.Create(createRequestDeleteGroup); reqDeleteGroup.Method = "POST"; reqDeleteGroup.ContentType = "application/x-www-form-urlencoded"; // Encode the parameters as form data: byte[] formDeleteGroup = UTF8Encoding.UTF8.GetBytes(postDeleteGroup); reqDeleteGroup.ContentLength = formDeleteGroup.Length; // Write out the form Data to the request: using (Stream postImportDeleteGroup = reqDeleteGroup.GetRequestStream()) { postImportDeleteGroup.Write(formDeleteGroup, 0, formDeleteGroup.Length); } // Get the Response--- HttpWebResponse respImportDeleteGroup = (HttpWebResponse)reqDeleteGroup.GetResponse(); Stream resStreamImportDeleteGroup = respImportDeleteGroup.GetResponseStream(); StreamReader readerImportDeleteGroup = new StreamReader(resStreamImportDeleteGroup); string contentsImportDeleteGroup = readerImportDeleteGroup.ReadToEnd(); JavaScriptSerializer serializerImportDeleteGroup = new JavaScriptSerializer(); if (contentsImportDeleteGroup.Contains("exception")) { // Error MoodleException moodleError = serializerImportDeleteGroup.Deserialize <MoodleException>(contentsImportDeleteGroup); lbl_results.Text = contentsImportDeleteGroup; } else { // Good lbl_results.Text = "Course Created & Imported Successfuly-" + id + "/" + shortname + ""; } //End Delete Groups } } } } }
public string core_course_create_courses(string fullname, string shortname, string categoryid, string idnumbber, string summary, string summaryformat, string format, string showgrades, string newsitems, string startdate, string enddate, string numsections, string maxbytes, string showreports, string visible, string groupmode, string groupmodeforce, string defaultgroupingid, string enablecompletion, string completionnotify, string lang) { ServicePointManager.Expect100Continue = true; ServicePointManager.DefaultConnectionLimit = 9999; ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; String token = "1b4cb9114197a84985695b19b1164d0a"; long start = ToUnixTimestamp(Convert.ToDateTime(txt_StatrtDate.Text)); long end = ToUnixTimestamp(Convert.ToDateTime(txt_EndDate.Text)); MoodleCourses courses = new MoodleCourses(); courses.fullname = HttpUtility.UrlEncode(fullname); courses.shortname = HttpUtility.UrlEncode(shortname); courses.categoryid = HttpUtility.UrlEncode(categoryid); courses.idnumber = HttpUtility.UrlEncode(idnumbber); courses.summary = HttpUtility.UrlEncode(summary); courses.summaryformat = HttpUtility.UrlEncode(summaryformat); courses.format = HttpUtility.UrlEncode(format); courses.showgrades = HttpUtility.UrlEncode(showgrades); courses.newsitems = HttpUtility.UrlEncode(newsitems); courses.startdate = HttpUtility.UrlEncode(start.ToString()); courses.enddate = HttpUtility.UrlEncode(end.ToString()); courses.numsections = HttpUtility.UrlEncode(numsections); courses.maxbytes = HttpUtility.UrlEncode(maxbytes); courses.showreports = HttpUtility.UrlEncode(showreports); courses.visible = HttpUtility.UrlEncode(visible); courses.groupmode = HttpUtility.UrlEncode(groupmode); courses.groupmodeforce = HttpUtility.UrlEncode(groupmodeforce); courses.defaultgroupingid = HttpUtility.UrlEncode(defaultgroupingid); courses.enablecompletion = HttpUtility.UrlEncode(enablecompletion); courses.completionnotify = HttpUtility.UrlEncode(completionnotify); courses.lang = HttpUtility.UrlEncode(lang); List <MoodleCourses> coursesList = new List <MoodleCourses>(); coursesList.Add(courses); Array arrCourses = coursesList.ToArray(); String postData = String.Format("courses[0][fullname]={0}&courses[0][shortname]={1}&courses[0][categoryid]={2}&courses[0][idnumber]={3}&courses[0][summary]={4}&courses[0][summaryformat]={5}&courses[0][format]={6}&courses[0][showgrades]={7}&courses[0][newsitems]={8}&courses[0][startdate]={9}&courses[0][enddate]={10}&courses[0][numsections]={11}&courses[0][maxbytes]={12}&courses[0][showreports]={13}&courses[0][visible]={14}&courses[0][groupmode]={15}&courses[0][groupmodeforce]={16}&courses[0][defaultgroupingid]={17}&courses[0][enablecompletion]={18}&courses[0][completionnotify]={19}&courses[0][lang]={20}", courses.fullname, courses.shortname, courses.categoryid, courses.idnumber, courses.summary, courses.summaryformat, courses.format, courses.showgrades, courses.newsitems, courses.startdate, courses.enddate, courses.numsections, courses.maxbytes, courses.showreports, courses.visible, courses.groupmode, courses.groupmodeforce, courses.defaultgroupingid, courses.enablecompletion, courses.completionnotify, courses.lang); string createRequest = string.Format("https://lms.ectmoodle.ae/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_course_create_courses"); // 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(); return(contents); }