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);
        }