public ActionResult addContent (Content content)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext db = new ApplicationDbContext())
            {
              
                try
                {
                    db.Content.Add(content);
                    db.SaveChanges();
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = "getContentList";
                    data.message = "Content section '"+content.name+"' added";
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: Content not added;  " + ex.Message;
                }

            }


            return Json(data);
        }
示例#2
0
        public ActionResult getUsers()
        {
            ajaxReturnData data = new ajaxReturnData();
            userList userlist = new userList();

            using (ApplicationDbContext DB = new ApplicationDbContext())
            {
                
                userlist.roles = (from r in DB.Roles
                             select new { Name = r.Name, Id = r.Id }).ToList();

                userlist.users = (from u in DB.Users
                                  select new {u.Roles, u.UserName, u.Email, u.Id, u.PhoneNumber}).ToList();

                userlist.languages = (from l in DB.Language
                                  select new {l.name, l.code, l.flag }).ToList();
                userlist.userLanguages = (from l in DB.UserLanguages
                                      select new { l.userID, l.code, l.user, l.userLanguageID}).ToList();

                data.data = userlist;
            }

            data.statusCode = (int)statusCodes.successRun;
            return Json(data);
        }
        public ActionResult getShortCourses(string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    data.data = DB.shortCourses.ToList();

                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }
                
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to get short courses; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult deleteGallery(int id, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    
                    ImageGallery gal = DB.gallerys.Where(g => g.id == id).FirstOrDefault();
                    DB.gallerys.Remove(gal);
                    DB.SaveChanges();

                    data.message = "gallery deleted";
                    if (string.IsNullOrEmpty(callback))
                    {
                        data.statusCode = (int)statusCodes.success;
                    }
                    else
                    {
                        data.statusCode = (int)statusCodes.successRun;
                        data.callback = callback;
                    }
                }
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to delete gallery; " + ex.Message;
                return Json(data);
            }
        }
示例#5
0
        public ActionResult editQuestion(string callback, int id, string question, string answer)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    FaqQuestion q = DB.faqQuestions.Where(fq => fq.id == id).FirstOrDefault();
                    q.udate(DB, question, answer);
                    DB.SaveChanges();

                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                data.message = "question updated";
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to update question; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult editLanguage(HttpPostedFileBase flag, string name, string code, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                try
                {

                    Language language = new Language();

                    
                    language.name = name;
                    language.code = code;

                    db.Language.Attach(language);

                    db.Entry(language).Property(f => f.name).IsModified = true;
                    db.Entry(language).Property(f => f.code).IsModified = false;

                    if (flag != null)
                    {
                        string path = Server.MapPath("/content/images/");
                        path += flag.FileName;
                        flag.SaveAs(Server.MapPath("~/content/images/flag-" + name + Path.GetExtension(flag.FileName)));
                        language.flag = "/content/images/flag-" + name + Path.GetExtension(flag.FileName);
                        db.Entry(language).Property(f => f.flag).IsModified = true;
                    }
                    else
                    {
                        db.Entry(language).Property(f => f.flag).IsModified = false;
                    }
                    
                    
                    db.SaveChanges();

                    data.message = "Language \"" + name + "\" updated";

                    if (String.IsNullOrEmpty(callback))
                    {
                        data.statusCode = (int)statusCodes.success;
                    }
                    else
                    {
                        data.statusCode = (int)statusCodes.successRun;
                        data.callback = callback;
                    }

                    
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: Language not updated; " + ex.Message;
                }
            }


            return Json(data);
        }
        public ActionResult addLanguage(HttpPostedFileBase flag, string name, string code)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                try
                {

                    string path = Server.MapPath("/content/images/");
                    path += flag.FileName;
                    flag.SaveAs(Server.MapPath("~/content/images/flag-" + name + Path.GetExtension(flag.FileName)));
                    Language language = new Language();
                    language.flag = "/content/images/flag-" + name + Path.GetExtension(flag.FileName);
                    language.name = name;
                    language.code = code;

                    db.Language.Add(language);
                    db.SaveChanges();
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = "getLanguageList";
                    data.message = "Language \"" + name + "\" added";
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: Language not added; " + ex.Message;
                }
            }


            return Json(data);
        }
        public ActionResult getLanguage(string code)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext DB = new ApplicationDbContext())
            {
                try
                {
                    
                    data.data = (from l in DB.Language
                                   where l.code == code
                                             select new { l.code, l.flag, l.name }).ToList(); ;

                    data.statusCode = (int)statusCodes.success;
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: " + ex.Message;
                }

            }


            return Json(data);
        }
示例#9
0
        public ActionResult AddNewPage(Page page)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                
                try
                {
                    db.Pages.Add(page);
                    db.SaveChanges();
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = "getPageList";
                    data.message = "Page added";
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: " + ex.Message;
                }
                
            }
            

                return Json(data);
        }
示例#10
0
        public ActionResult createSchool(string name, int type, string url, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            try {

                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    if (DB.Schools.Where(s => s.url == url).Any())
                    {
                        data.message = "School already be existing; No need to re-exist it";
                        data.statusCode = (int)statusCodes.fail;
                    }
                    else
                    {
                        School school = new School();
                        school.features = new SchoolFeatures();
                        school.content = new List<Content>();
                        school.type = type;
                        school.url = url;
                        
                        DB.Schools.Add(school);
                        DB.SaveChanges();

                        school.addContent(DB, "name", name);

                        data.message = "School "+name+" added.";

                        if (string.IsNullOrEmpty(callback))
                        {
                            data.statusCode = (int)statusCodes.success;
                        }
                        else
                        {
                            data.statusCode = (int)statusCodes.successRun;
                            data.callback = callback;
                        }

                    }
                }
                

            }
            catch(Exception ex)
            {
                data.message = "Failed to create school; " + ex.Message;
                data.statusCode = (int)statusCodes.fail;
            }

            
            return Json(data);
        }
        public ActionResult addShortCourse(string callback, string url, string name)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    if (DB.shortCourses.Where(s => s.url == url).Any())
                    {
                        data.message = "School already be existing; No need to re-exist it";
                        data.statusCode = (int)statusCodes.fail;
                    }
                    else
                    {
                        ShortCourse sc = new ShortCourse();
                        sc.url = url;
                        Faq faq = new Faq();
                        sc.faq = faq;
                        DB.shortCourses.Add(sc);
                        DB.SaveChanges();
                        sc.addContent(DB, "name", name);

                        
                        DB.SaveChanges();

                    }
                    
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                data.message = "short course added";
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to add short course; " + ex.Message;
                return Json(data);
            }
        }
示例#12
0
        public ActionResult getRoles()
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext DB = new ApplicationDbContext())
            {

                data.data = (from r in DB.Roles
                                  select new { Name = r.Name, Id = r.Id }).ToList();
               
            }

            data.statusCode = (int)statusCodes.successRun;
            return Json(data);
        }
示例#13
0
        public ActionResult getGallery(int id, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();
            List<GalleryImage> images = new List<GalleryImage>();
            ImageGallery gal;
            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    gal = DB.gallerys.Where(g => g.id == id).FirstOrDefault();
                    gal.loadContent(DB);

                    gal.galleryImages = DB.galleryImages.Where(img => id == img.galleryID).ToList();

                    foreach (GalleryImage img in gal.galleryImages)
                    {
                        img.loadContent(DB);
                    }
                }

                data.data = gal;


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to get gallery; " + ex.Message;
                return Json(data);
            }
        }
示例#14
0
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {

            //adminReturnData data = new adminReturnData();
            //data.loginData.Email = model.Email;
            //data.loginData.Password = model.Password;
            //data.loginData.RememberMe = model.RememberMe;

            ajaxReturnData data = new ajaxReturnData();

            if (!ModelState.IsValid)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Login invalid, please check your login details";
                return Json(data);
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
            switch (result)
            {
                case SignInStatus.Success:
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = "redirectToReturnURL";
                    return Json(data);
                case SignInStatus.LockedOut:
                    data.statusCode = (int)statusCodes.failRun;
                    data.callback = "redirectToLockout";
                    return Json(data);
                case SignInStatus.RequiresVerification:

                    //TODO  ??.. maybe
                    //return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Login invalid, please check your login details";
                    return Json(data);
            }
        }
示例#15
0
        public ActionResult deleteSchool(int schoolID, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext DB = new ApplicationDbContext())
            {
                try
                {
                    School doomedSchool = new School();
                    doomedSchool.id = schoolID;
                    doomedSchool.features = new SchoolFeatures();
                    DB.Schools.Attach(doomedSchool);
                    DB.Schools.Remove(doomedSchool);

                    DB.SaveChanges();



                    if (string.IsNullOrEmpty(callback))
                    {
                        data.statusCode = (int)statusCodes.success;
                    }
                    else
                    {
                        data.statusCode = (int)statusCodes.successRun;
                        data.callback = callback;
                    }

                    data.message = "school removed";
                    return Json(data);
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: " + ex.Message;
                    return Json(data);
                }

            }
        }
示例#16
0
        public ActionResult getPage(int pageID)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext DB = new ApplicationDbContext())
            {

                try
                {

                    data.data = DB.Pages.Where(p=>p.pageID == pageID).FirstOrDefault();
                    data.statusCode = (int)statusCodes.success;
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: " + ex.Message;
                }

            }


            return Json(data);
        }
示例#17
0
        public ActionResult editContent(Content content, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            using (ApplicationDbContext db = new ApplicationDbContext())
            {

                try
                {
                    
                    db.Entry(content).State = EntityState.Modified;
                    db.SaveChanges();

                    if (string.IsNullOrEmpty(callback))
                    {
                        data.statusCode = (int)statusCodes.success;
                    }
                    else
                    {
                        data.statusCode = (int)statusCodes.successRun;
                        data.callback = callback;
                    }
                    
                    data.message = "Content section '" + content.name + "' updated";
                }
                catch (Exception ex)
                {
                    data.statusCode = (int)statusCodes.fail;
                    data.message = "Error: Content not updated;  " + ex.Message;
                }

            }


            return Json(data);
        }
        public ActionResult getDemographics(string callback, int courseID)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    List<CourseDemography> demos = (from d in DB.demographies
                                              where d.schoolCourseID == courseID
                                              select new
                                              {
                                                  d.content,
                                                  d.id,
                                                  d.languageCode,
                                                  d.percent,
                                                  d.schoolCourseID
                                              }).ToList()
                     .Select(d => new CourseDemography
                     {
                        content = d.content,
                        id = d.id,
                        languageCode = d.languageCode,
                        percent = d.percent,
                        schoolCourseID = d.schoolCourseID
                     }).ToList<CourseDemography>();


                    foreach (var demo in demos)
                    {
                        demo.loadContent(DB);
                    }
                    
                    data.data = demos;
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to load demos; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult getCourses(string callback, int schoolID)
        {
            ajaxReturnData data = new ajaxReturnData();
            List<SchoolCourse> courses = new List<SchoolCourse>();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {


                   courses = (from sc in DB.schoolCourses
                     where sc.schoolID == schoolID
                     select new {
                         sc.demographyImage,
                         sc.hoursPerWeek,
                         sc.id,
                         sc.introductionImage,
                         sc.languageCode,
                         sc.schoolID,
                         sc.studentsPerClass,
                         sc.totalStudents}).ToList()
                               .Select(sc => new SchoolCourse {
                                   demographyImage= sc.demographyImage,
                                   hoursPerWeek= sc.hoursPerWeek,
                                   id=sc.id,
                                   introductionImage=sc.introductionImage,
                                   languageCode=sc.languageCode,
                                   schoolID=sc.schoolID,
                                   studentsPerClass=sc.studentsPerClass,
                                   totalStudents=sc.totalStudents }).ToList<SchoolCourse>();

                    foreach (SchoolCourse sc in courses)
                    {
                        sc.loadContent(DB);
                    }
                }

                data.data = courses;


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to retrieve courses; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult addDemography(CourseDemography demo, string name, int courseID, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    demo.schoolCourseID = courseID;
                    DB.demographies.Add(demo);
                    DB.SaveChanges();
                    demo.addContent(DB, "name", name);
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to add demo; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult addDemography(int courseID, string callback, HttpPostedFileWrapper demographyImage)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    SchoolCourse course = DB.schoolCourses.Where(c => c.id == courseID).FirstOrDefault();


                    if (demographyImage != null && demographyImage.ContentLength > 0)
                    {

                        string path = "/content/images/uploads/courses/" + course.id;
                        bool exists = Directory.Exists(Server.MapPath(path));
                        if (!exists)
                        {
                            Directory.CreateDirectory(Server.MapPath(path));
                        }

                        path = path + "/demographyImage" + Path.GetExtension(demographyImage.FileName);
                        demographyImage.SaveAs(Server.MapPath(path));
                        course.demographyImage = path;
                        DB.SaveChanges();
                    }
                    

                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to add demo image; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult editCosts(string costsText, int id, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    SchoolCourse sc = DB.schoolCourses.Where(s => s.id == id).FirstOrDefault();
                    sc.addContent(DB, "costsText", costsText);
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }
                data.message = "costs updated";
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to update costs; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult updateStepOrder(string steps, string callback)
        {
            ajaxReturnData data = new ajaxReturnData();


            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    JArray j = JArray.Parse(steps);
                    foreach (var item in j)
                    {
                        int id = Convert.ToInt16(item["id"]);
                        TermBreakdownStep t = DB.termSteps.Where(ts => ts.id == id).FirstOrDefault();
                        t.index = Convert.ToInt16(item["index"]);
                        DB.SaveChanges();

                    }

                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }
                data.message = "step order updated";
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to update term breakdown step order; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult deleteStep(string callback, int courseID, int stepID)
        {
            ajaxReturnData data = new ajaxReturnData();


            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    SchoolCourse course = DB.schoolCourses.Include("termSteps").Where(c => c.id == courseID).FirstOrDefault();

                    TermBreakdownStep ts = course.termSteps.Where(t => t.id == stepID).FirstOrDefault();
                    int index = ts.index;
                    course.termSteps.Remove(ts);
                    DB.SaveChanges();

                    //List<TermBreakdownStep> steps = .ToList();

                    foreach (TermBreakdownStep step in course.termSteps)
                    {
                        if(step.index > index)
                        {
                            step.index = (step.index - 1);
                        }
                    }

                    DB.SaveChanges();
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to get term breakdown steps; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult getTermSteps(string callback, int courseID, string languageCode = "en")
        {
            ajaxReturnData data = new ajaxReturnData();


            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    SchoolCourse course = DB.schoolCourses.Include("termSteps.stepContent.contentCollection").Where(c => c.id == courseID).FirstOrDefault();

                    List<TermBreakdownStep> steps = course.termSteps.OrderBy(l => l.index).ToList();

                    foreach (TermBreakdownStep step in steps)
                    {
                        step.loadContent(DB);
                    }

                    data.data = steps;
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }
                
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to get term breakdown steps; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult editTermStep(string editTermBreakdownBody, string callback, int stepID, string languageCode = "en")
        {
            ajaxReturnData data = new ajaxReturnData();
            

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {
                    TermBreakdownStep step = DB.termSteps.Where(s => s.id == stepID).FirstOrDefault();
                    DB.SaveChanges();
                    step.addContent(DB, "termBreakdownText", editTermBreakdownBody);
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                data.message = "term breakdown step edited";
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to edit term breakdown step; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult addTermStep(string addTermBody, string callback, int courseID, string languageCode = "en")
        {
            ajaxReturnData data = new ajaxReturnData();
            TermBreakdownStep termStep = new TermBreakdownStep();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    SchoolCourse course = DB.schoolCourses.Include("termSteps").Where(c => c.id == courseID).FirstOrDefault();


                    int index = course.termSteps.Count;
                    index++;
                    termStep.index = index;
                    course.termSteps.Add(termStep);
                    DB.SaveChanges();
                    termStep.addContent(DB, "termBreakdownText", addTermBody);

                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                data.message = "term breakdown step added";
                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to add term breakdown step; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult deleteDemography(string callback, int id)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    CourseDemography demo = DB.demographies.Where(d => d.id == id).FirstOrDefault();
                    DB.demographies.Remove(demo);
                    DB.SaveChanges();
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to remove demo; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult deleteCourse(string callback, int id)
        {
            ajaxReturnData data = new ajaxReturnData();

            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    SchoolCourse sc = DB.schoolCourses.Where(c => c.id == id).FirstOrDefault();
                    DB.schoolCourses.Remove(sc);
                    DB.SaveChanges();
                }

                data.message = "course deleted";
                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to remove course; " + ex.Message;
                return Json(data);
            }
        }
        public ActionResult getStep(string callback, int stepID)
        {
            ajaxReturnData data = new ajaxReturnData();


            try
            {
                using (ApplicationDbContext DB = new ApplicationDbContext())
                {

                    TermBreakdownStep step = DB.termSteps.Include("stepContent.contentCollection").Where(t => t.id == stepID).FirstOrDefault();
                    step.loadContent(DB);
                    data.data = step;
                }


                if (string.IsNullOrEmpty(callback))
                {
                    data.statusCode = (int)statusCodes.success;
                }
                else
                {
                    data.statusCode = (int)statusCodes.successRun;
                    data.callback = callback;
                }

                return Json(data);
            }
            catch (Exception ex)
            {
                data.statusCode = (int)statusCodes.fail;
                data.message = "Failed to get term breakdown step; " + ex.Message;
                return Json(data);
            }
        }