public ActionResult EditSubject(int ID)
        {
            var Faculties = BUSFaculty.GetFaculties()
                            .Select(s => new
            {
                ID          = s.ID,
                FacultyName = s.VietNameseName + " (" + s.EnglishName + ")"
            }
                                    ).ToList();
            var Accounts = BUSAccount.GetAccounts().OrderBy(x => x.FullName).OrderBy(x => x.Faculty.VietNameseName)
                           .Select(s => new
            {
                ID   = s.ID,
                Name = s.FullName + " (" + s.Faculty.VietNameseName + ")"
            }
                                   ).ToList();

            ViewBag.Faculties = new SelectList(Faculties, "ID", "FacultyName");
            ViewBag.Subjects  = new SelectList(BUSSubject.GetSubjects(), "ID", "Name");
            ViewBag.Accounts  = new SelectList(Accounts, "ID", "Name", "--- Chọn giảng viên ---");

            Subject subj = BUSSubject.GetSubjectByID(ID);

            return(View(subj));
        }
        public ActionResult AddSubject(Subject subject, List <int> AccountIDs, List <int> subjectConditionIDs)
        {
            if (!ModelState.IsValid)
            {
                var Faculties = BUSFaculty.GetFaculties()
                                .Select(s => new
                {
                    ID          = s.ID,
                    FacultyName = s.VietNameseName + " (" + s.EnglishName + ")"
                }
                                        ).ToList();
                var Accounts = BUSAccount.GetAccounts()
                               .Select(s => new
                {
                    ID   = s.ID,
                    Name = s.FullName + " (" + s.Faculty.VietNameseName + ")"
                }
                                       ).ToList();

                ViewBag.Faculties = new SelectList(Faculties, "ID", "FacultyName");
                ViewBag.Subjects  = new SelectList(BUSSubject.GetSubjects(), "ID", "Name");
                ViewBag.Accounts  = new SelectList(Accounts, "ID", "Name", "--- Chọn giảng viên ---");

                return(View(subject));
            }

            BUSSubject.AddSubject(subject, AccountIDs, subjectConditionIDs);

            return(RedirectToAction("SubjectsList"));
        }
        public ActionResult AddAccount(Account acc, List <int> RoleIDs, string IsExist)
        {
            if (!ModelState.IsValid || IsExist == "true" || RoleIDs == null)
            {
                if (IsExist == "true" && RoleIDs == null)
                {
                    ModelState.AddModelError("IsExist", "Tài khoản đã tồn tại");
                    ModelState.AddModelError("RoleIDs", "Vui lòng chọn vai trò cho account");
                }
                else
                {
                    if (IsExist == "true")
                    {
                        ModelState.AddModelError("IsExist", "Tài khoản đã tồn tại");
                    }

                    if (RoleIDs == null)
                    {
                        ModelState.AddModelError("RoleIDs", "Vui lòng chọn vai trò cho account");
                    }
                }

                List <Role> Roles = BUSAccount.GetRoles();
                ViewBag.Roles = new SelectList(Roles, "ID", "Name");

                List <Faculty> Faculties = BUSFaculty.GetFaculties();
                ViewBag.Faculties = new SelectList(Faculties, "ID", "VietNameseName", null);

                return(View(acc));
            }

            BUSAccount.AddAccount(acc, RoleIDs);

            return(RedirectToAction("AccountsList"));
        }
        public ActionResult GetAccountTeachSubjectByFacultyID(int ID)
        {
            List <Account> Accs = BUSAccount.GetAccountsTeachSubjectByFacultyID(ID);

            string HtmlResult = HelperAttribute.ViewUltility.RenderViewToString(this, "~/Views/Partials/LectureList.cshtml", Accs);

            return(Json(new { HtmlResult = HtmlResult }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult IsExistAccount(string username)
        {
            bool IsExist = BUSAccount.IsExistAccount(username);

            string message = IsExist ? "Username đã tồn tại." : "Bạn có thể sử dụng Username này.";

            return(Json(new { IsExist = IsExist, Message = message }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult AccountsList(int?FacultyID, int?page = 1)
        {
            List <Faculty> Faculties = BUSFaculty.GetFaculties();

            ViewBag.Faculties = new SelectList(Faculties, "ID", "VietNameseName", "--- Tất cả ---");

            var Accs = BUSAccount.GetAccountsByFacultyID(FacultyID).OrderByDescending(x => x.CreationTime).ToList();

            int pageSize = 5;

            return(View(Accs.ToPagedList(page.Value, pageSize)));
        }
        public ActionResult AddAccount()
        {
            List <Role> Roles = BUSAccount.GetRoles();

            ViewBag.Roles = new SelectList(Roles, "ID", "Name");

            List <Faculty> Faculties = BUSFaculty.GetFaculties();

            ViewBag.Faculties = new SelectList(Faculties, "ID", "VietNameseName", null);

            return(View());
        }
        public ActionResult GetCurrentAccount()
        {
            int CurrentAccountID = (User as AuthorizePrincipal).ID;

            Account acc = BUSAccount.GetAccountByID(CurrentAccountID);

            return(Json(new {
                Name = acc.FullName, Degree = acc.Degree,
                Address = acc.Faculty.Classroom.Facility.Address + "(" + acc.Faculty.Classroom.Name + ")",
                PhoneNumber = acc.Faculty.PhoneNumber + " hoặc " + acc.PhoneNumber,
                Email = acc.Email
            }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult EditAccount(int ID)
        {
            Account acc = BUSAccount.GetAccountByID(ID);

            List <Role> Roles = BUSAccount.GetRoles();

            ViewBag.Roles = new SelectList(Roles, "ID", "Name");

            List <Faculty> Faculties = BUSFaculty.GetFaculties();

            ViewBag.Faculties = new SelectList(Faculties, "ID", "VietNameseName", acc.Faculty);

            return(View(acc));
        }
        public ActionResult EditAccount(Account acc, List <int> RoleIDs)
        {
            if (!ModelState.IsValid)
            {
                List <Role> Roles = BUSAccount.GetRoles();
                ViewBag.Roles = new SelectList(Roles, "ID", "Name");

                List <Faculty> Faculties = BUSFaculty.GetFaculties();
                ViewBag.Faculties = new SelectList(Faculties, "ID", "VietNameseName", null);

                return(View(acc));
            }

            BUSAccount.EditAccount(acc, RoleIDs);

            return(RedirectToAction("AccountsList"));
        }
        public ActionResult ReviewSyllabus(Syllabus sylla)
        {
            if (!ModelState.IsValid)
            {
                int CurrentAccID = (User as Principal.AuthorizePrincipal).ID;

                var Subjects = BUSSubject.GetSubjectByAccountEditor(CurrentAccID)
                               .Select(s => new
                {
                    ID   = s.ID,
                    Name = s.Name + "(" + s.Faculty.VietNameseName + ")"
                }
                                       ).ToList();

                var Classrooms = BUSClassroom.GetClassroomsExeceptClassOffice()
                                 .Select(s => new
                {
                    ID   = s.ID,
                    Name = s.Name + "  (" + s.Facility.Name + ")" + "  (" + s.Facility.Address + ")"
                }
                                         ).ToList();


                ViewBag.Subjects = new SelectList(Subjects, "ID", "Name");

                ViewBag.Classrooms = new SelectList(Classrooms, "ID", "Name");

                return(View("AddSyllabus", sylla));
            }

            sylla.CreationTime = DateTime.Now;
            sylla.Subject      = BUSSubject.GetSubjectByID(sylla.SubjectID);
            sylla.Classroom    = BUSClassroom.GetClassroomByID(sylla.ClassroomID);

            sylla.Account = BUSAccount.GetAccountByID(sylla.CreatedAccountID);

            return(View("ReviewSyllabus", sylla));
        }
        public ActionResult Login(string UserName, string Password, string returnURL)
        {
            Account acc = BUSAccount.FindAccount(UserName, Password);

            if (acc == null)
            {
                ModelState.AddModelError("", "UserName or Password was wrong");
                return(View(acc));
            }

            List <string> accRoles = new List <string>();

            for (int i = 0; i < acc.Roles.ToList().Count; i++)
            {
                accRoles.Add(acc.Roles.ToList()[i].Name);
            }

            //--------------My Principal--------------------

            CustomPrincipalSerializedModel serializeModel = new CustomPrincipalSerializedModel();

            serializeModel.ID       = acc.ID;
            serializeModel.FullName = acc.FullName;
            serializeModel.Roles    = accRoles.ToArray();

            JavaScriptSerializer selialier = new JavaScriptSerializer();

            string AccountData = selialier.Serialize(serializeModel);

            //----------------------------------

            FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                1,
                acc.ID.ToString(),
                DateTime.Now,
                DateTime.Now.AddMinutes(90),
                false,
                AccountData,
                "/");

            //----------My Principal---------------

            string     encTiket = FormsAuthentication.Encrypt(authTicket);
            HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTiket);

            Response.Cookies.Add(faCookie);

            //Using Principal : int UserID = (User as AuthoriziePrincipal).ID;

            if (accRoles.Contains("Admin"))
            {
                return(Redirect(returnURL ?? Url.Action("AccountsList", "Account")));
            }
            if (accRoles.Contains("Lecturer"))
            {
                return(Redirect(returnURL ?? Url.Action("SyllabusesList", "Syllabus")));
            }
            if (accRoles.Contains("Deanery"))
            {
                return(Redirect(returnURL ?? Url.Action("ProgramsList", "Program")));
            }
            if (accRoles.Contains("Editor"))
            {
                return(Redirect(returnURL ?? Url.Action("FaculitiesList", "Faculty")));
            }

            return(Redirect(returnURL ?? Url.Action("Index", "Home")));
        }
        public ActionResult AccountDetail(int ID)
        {
            Account acc = BUSAccount.AccountDetail(ID);

            return(View(acc));
        }