public ActionResult NewSubjectsForTeacher(string ClassID1, string teachers)
        {
            int?classId = Convert.ToInt32(ClassID1);
            List <AspNetTeacherSubject> AllTeacherSubjectOfCurrentClass = db.AspNetTeacherSubjects.Where(x => x.AspNetSubject.ClassID == classId).ToList();

            int?teacherId = Convert.ToInt32(teachers);

            var SubjectsToRemoveOfCurrentTeacher = AllTeacherSubjectOfCurrentClass.Where(x => x.TeacherID == teacherId);

            db.AspNetTeacherSubjects.RemoveRange(SubjectsToRemoveOfCurrentTeacher);

            db.SaveChanges();


            var TeacherGenericSubjectsToRemove = db.Teacher_GenericSubjects.Where(x => x.TeacherId == teacherId).ToList();;

            db.Teacher_GenericSubjects.RemoveRange(TeacherGenericSubjectsToRemove);

            db.SaveChanges();


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

            if (Request.Form["MandatorySubjects"] != null)
            {
                selectedsubjects.AddRange(Request.Form["MandatorySubjects"].Split(',').ToList());
            }

            if (Request.Form["OptionalSubjects"] != null)
            {
                selectedsubjects.AddRange(Request.Form["OptionalSubjects"].Split(',').ToList());
            }

            List <string> listofIDs = selectedsubjects.ToList();
            List <int>    myIntegersSubjectsList = listofIDs.Select(s => int.Parse(s)).ToList();


            if (selectedsubjects != null)
            {
                foreach (var item in selectedsubjects)
                {
                    AspNetTeacherSubject teacherSubject = new AspNetTeacherSubject();

                    teacherSubject.TeacherID = teacherId;
                    teacherSubject.SubjectID = Convert.ToInt32(item);

                    db.AspNetTeacherSubjects.Add(teacherSubject);

                    db.SaveChanges();
                }
            }

            SEA_DatabaseEntities db1 = new SEA_DatabaseEntities();



            if (selectedsubjects != null)
            {
                var AllSubjectsOfTeacher = from subject in db.AspNetSubjects
                                           where myIntegersSubjectsList.Contains(subject.Id)
                                           select subject;


                foreach (var sub in AllSubjectsOfTeacher)
                {
                    foreach (var sub1 in db.GenericSubjects.ToList())
                    {
                        if (sub.SubjectName == sub1.SubjectName && sub.CourseType == sub1.SubjectType)
                        {
                            Teacher_GenericSubjects genericSubject = new Teacher_GenericSubjects();

                            genericSubject.SubjectId = sub1.Id;
                            genericSubject.TeacherId = teacherId;

                            db1.Teacher_GenericSubjects.Add(genericSubject);
                            db1.SaveChanges();
                        }
                    }
                }
            }



            int?SessionId = db.AspNetClasses.Where(x => x.Id == classId).FirstOrDefault().SessionID;

            var EmployeeExist = db.Aspnet_Employee_Session.Where(x => x.Emp_Id == teacherId && x.Session_Id == SessionId).FirstOrDefault();

            if (EmployeeExist == null)
            {
                Aspnet_Employee_Session ES = new Aspnet_Employee_Session();
                ES.Emp_Id     = teacherId;
                ES.Session_Id = SessionId;
                db.Aspnet_Employee_Session.Add(ES);
                db.SaveChanges();
            }

            var UserId = db.AspNetEmployees.Where(x => x.Id == teacherId).FirstOrDefault().UserId;

            var EmployeeExist1 = db.AspNetUsers_Session.Where(x => x.UserID == UserId && x.SessionID == SessionId).FirstOrDefault();

            if (EmployeeExist1 == null)
            {
                AspNetUsers_Session US = new AspNetUsers_Session();
                US.UserID    = UserId;
                US.SessionID = SessionId;
                db.AspNetUsers_Session.Add(US);
                db.SaveChanges();
            }


            return(RedirectToAction("ClassIndex"));
        }
        public ActionResult Create([Bind(Include = "Id,SessionName,SessionStartDate,SessionEndDate,Status,Total_Fee")] AspNetSession aspNetSession)
        {
            var TransactionObj = db.Database.BeginTransaction();

            if (ModelState.IsValid)
            {
                aspNetSession.SessionEndDate   = Convert.ToDateTime(Request.Form["SessionEndDate"]);
                aspNetSession.SessionStartDate = Convert.ToDateTime(Request.Form["SessionStartDate"]);
                aspNetSession.Total_Fee        = aspNetSession.Total_Fee;
                db.AspNetSessions.Add(aspNetSession);
                db.SaveChanges();
            }


            TransactionObj.Commit();
            ////////////////////////////////////////////////////////Term Add/////////////////////////////////////////////////////////////////
            //int length = 3;
            //for (int i = 0; i < length; i++)
            //{
            //    AspNetTerm aspnetTerm = new AspNetTerm();
            //    aspnetTerm.SessionID = aspNetSession.Id;
            //    aspnetTerm.TermName = "Term " + (i + 1);
            //    aspnetTerm.TermStartDate = DateTime.Now;
            //    aspnetTerm.TermEndDate = DateTime.Now;
            //    aspnetTerm.Status = "InActive";
            //    db.AspNetTerms.Add(aspnetTerm);
            //    db.SaveChanges();
            //}

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            var        UserNameLog = User.Identity.Name;
            AspNetUser a           = db.AspNetUsers.First(x => x.UserName == UserNameLog);
            string     UserIDLog   = a.Id;
            var        logMessage  = "New Session Added, SessionName: " + aspNetSession.SessionName + ", SessionStartDate: " + aspNetSession.SessionStartDate + ", SessionEndDate: " + aspNetSession.SessionEndDate + ", Status: " + aspNetSession.Status;

            var LogControllerObj = new AspNetLogsController();

            LogControllerObj.CreateLogSave(logMessage, UserIDLog);
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            AspNetClass Class = new AspNetClass();

            var CurrentSession = db.AspNetSessions.OrderByDescending(x => x.Id).FirstOrDefault();

            Class.ClassName = CurrentSession.SessionName;

            Class.Class     = CurrentSession.SessionName;
            Class.SessionID = CurrentSession.Id;
            db.AspNetClasses.Add(Class);
            db.SaveChanges();

            //Create Subjects to New Session

            var AllSubjectsofTestSession = db.AspNetSubjects.Where(x => x.ClassID == 1).ToList();

            List <subjects_mapping> list = new List <subjects_mapping>();

            foreach (AspNetSubject Subject in AllSubjectsofTestSession)
            {
                subjects_mapping sub = new subjects_mapping();
                sub.oldId = Subject.Id;
                sub.name  = Subject.SubjectName;

                AspNetSubject NewSubjectForSession = new AspNetSubject();

                NewSubjectForSession = Subject;

                NewSubjectForSession.ClassID   = Class.Id;
                NewSubjectForSession.TeacherID = null;

                db.AspNetSubjects.Add(NewSubjectForSession);
                db.SaveChanges();

                sub.newId = NewSubjectForSession.Id;

                list.Add(sub);
            }


            var AllTeacherSubjects = db.AspNetTeacherSubjects.Where(x => x.AspNetSubject.ClassID == 1).ToList();

            foreach (var item in AllTeacherSubjects)
            {
                foreach (var item1 in list)
                {
                    if (item1.oldId == item.SubjectID)
                    {
                        AspNetTeacherSubject TS = new AspNetTeacherSubject();
                        TS.SubjectID = item1.newId;
                        TS.TeacherID = item.TeacherID;
                        db.AspNetTeacherSubjects.Add(TS);
                        break;
                    }
                }
            }

            db.SaveChanges();


            var UserIDs = (from teacher in db.AspNetUsers.Where(x => x.Status != "False")
                           join t2 in db.AspNetUsers_Session
                           on teacher.Id equals t2.UserID
                           join t3 in db.AspNetEmployees
                           on teacher.Id equals t3.UserId
                           where teacher.AspNetRoles.Select(y => y.Name).Contains("Teacher") && t2.AspNetSession.AspNetClasses.Any(x => x.Id == 1) /*&& db.AspNetChapters.Any(x=>x.Id==id)*/
                           select new
            {
                TeacherId = teacher.Id,
                EmployeeId = t3.Id,
            }).ToList();

            foreach (var Id in UserIDs)
            {
                string IdString = Id.TeacherId.ToString();

                AspNetUsers_Session UserSession = new AspNetUsers_Session();

                UserSession.SessionID = aspNetSession.Id;
                UserSession.UserID    = IdString;

                db.AspNetUsers_Session.Add(UserSession);
                db.SaveChanges();
            }


            foreach (var Id in UserIDs)
            {
                Aspnet_Employee_Session EmployeeSession = new Aspnet_Employee_Session();


                EmployeeSession.Emp_Id     = Id.EmployeeId;
                EmployeeSession.Session_Id = aspNetSession.Id;

                db.Aspnet_Employee_Session.Add(EmployeeSession);
                db.SaveChanges();
            }

            return(RedirectToAction("Indexs"));
        }