Ejemplo n.º 1
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            //get user
            User user = HttpContext.Current.Session["User"] as User;

            //if user not exists
            if (user == null)
            {
                filterContext.Result = new RedirectResult("/home");
                return;
            }

            //get token
            var token = HttpContext.Current.Request.RequestContext.RouteData.DataTokens;
            //get routeValues
            var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;
            //get action
            string action = routeValues.ContainsKey("action") ? (string)routeValues["action"] : string.Empty;
            //get controller
            string controller = routeValues.ContainsKey("controller") ? (string)routeValues["controller"] : string.Empty;
            //get area
            string area             = token.ContainsKey("area") ? (string)token["area"] : string.Empty;
            ClassSurveyDbContext db = new ClassSurveyDbContext();
            //check to authorize user
            bool check = db.UserRoles.Any(s => s.Position == user.Position && s.Area == area && s.Controller == controller && s.Action == action);

            if (!check)
            {
                //if not match the roles, cant get in the page -> redirect to Not Authorize
                filterContext.Result = new RedirectResult("/notauthorized");
                return;
            }
        }
        //get data to above function
        public bool ImportData(out int count, ExcelPackage package)
        {
            count = 0;
            var result = false;

            try
            {
                //data start at column 1 and row 2
                int            startColumn = 1;
                int            startRow    = 2;
                ExcelWorksheet worksheet   = package.Workbook.Worksheets[1];
                object         data        = null;
                //get DB
                ClassSurveyDbContext db = new ClassSurveyDbContext();

                do
                {
                    data = worksheet.Cells[startRow, startColumn].Value;
                    //get Username
                    object Username = worksheet.Cells[startRow, startColumn + 1].Value;
                    //get password
                    object Password = worksheet.Cells[startRow, startColumn + 2].Value;
                    //get Fullname
                    object Fullname = worksheet.Cells[startRow, startColumn + 3].Value;
                    //get Email
                    object Email = worksheet.Cells[startRow, startColumn + 4].Value;
                    //get ClassByGrade
                    object ClassByGrade = worksheet.Cells[startRow, startColumn + 5].Value;

                    if (data != null)
                    {
                        var isImported = SaveStudent(Username.ToString(), Password.ToString(), Fullname.ToString()
                                                     , Email.ToString(), ClassByGrade.ToString(), db);
                        if (isImported)
                        {
                            count++;
                            result = true;
                        }
                    }

                    startRow++;
                } while (data != null);
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }
Ejemplo n.º 3
0
        //get data for above function
        public bool ImportData(out int count, ExcelPackage package)
        {
            var result = false;

            count = 0;
            try
            {
                //teacher info start at column 1 and row 2 in file excel
                int                  startColumn = 1;
                int                  startRow    = 2;
                ExcelWorksheet       worksheet   = package.Workbook.Worksheets[1];
                object               data        = null;
                ClassSurveyDbContext db          = new ClassSurveyDbContext();

                do
                {
                    data = worksheet.Cells[startRow, startColumn].Value;
                    //get username
                    object Username = worksheet.Cells[startRow, startColumn + 1].Value;
                    //get password
                    object Password = worksheet.Cells[startRow, startColumn + 2].Value;
                    //get teacher name
                    object Name = worksheet.Cells[startRow, startColumn + 3].Value;
                    //get email
                    object Email = worksheet.Cells[startRow, startColumn + 4].Value;

                    //if exists data
                    if (data != null)
                    {
                        var isImported = SaveTeacher(Username.ToString(), Password.ToString(),
                                                     Name.ToString(), Email.ToString(), db);
                        if (isImported)
                        {
                            count++;
                            result = true;
                        }
                    }
                    startRow++;
                } while (data != null);
            }
            catch (Exception)
            {
                throw;
            }

            return(result);
        }
Ejemplo n.º 4
0
        //check if we can save new teachers
        public bool SaveTeacher(string username, string password, string name, string email, ClassSurveyDbContext db)
        {
            var result = false;

            try
            {
                //if teacher not exists in system before
                //just add new teachers when they dont exist in system
                if (db.Teachers.Where(x => x.Username.Equals(username)).Count() == 0)
                {
                    var teacher = new Teacher();
                    teacher.Username = username;
                    //hash password before adding
                    teacher.Password    = HashPassword.ComputeSha256Hash(password);
                    teacher.TeacherName = name;
                    teacher.Email       = email;

                    db.Teachers.Add(teacher);
                    db.SaveChanges();

                    int id = db.Teachers.Max(x => x.Id);
                    //add new user
                    User user = new User()
                    {
                        Username  = username,
                        Password  = HashPassword.ComputeSha256Hash(password),
                        Position  = "Teacher",
                        TeacherId = id
                    };
                    db.Users.Add(user);
                    db.SaveChanges();
                    result = true;
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(result);
        }
Ejemplo n.º 5
0
        //get data to above function
        public bool ImportData(out int count, out int successNumber, ExcelPackage excel)
        {
            count         = 0;
            successNumber = 0;
            var result = false;

            try
            {
                //add student, student info in the file starts at column 1 and row 12
                int                  startColumn = 1;
                int                  startRow    = 12;
                ExcelWorksheet       worksheet   = excel.Workbook.Worksheets[1];
                ClassSurveyDbContext db          = new ClassSurveyDbContext();
                object               data        = null;
                //C7: teacherName
                object teacherName = worksheet.Cells[7, 3].Value;
                //C10: ClassName
                object className = worksheet.Cells[10, 3].Value;
                //C9: ClassCode
                object classCode = worksheet.Cells[9, 3].Value;
                //F9: Number of degrees
                object numberOfDegrees = worksheet.Cells[9, 6].Value;

                //add data
                if (!db.Classes.Any(x => x.ClassCode.ToLower().Equals(classCode.ToString().ToLower())))
                {
                    //new class
                    Class @class = new Class();
                    @class.ClassName       = className.ToString();
                    @class.ClassCode       = classCode.ToString();
                    @class.Semester        = 1;
                    @class.NumberOfDegrees = int.Parse(numberOfDegrees.ToString());
                    db.Classes.Add(@class);
                    db.SaveChanges();

                    //class Id
                    int classId = db.Classes.Max(c => c.Id);
                    //teacher Id
                    int teacherId = db.Teachers.FirstOrDefault(t => t.TeacherName.ToLower()
                                                               .Equals(teacherName.ToString().ToLower())).Id;

                    do
                    {
                        data = worksheet.Cells[startRow, startColumn].Value;
                        //get student name
                        object studentName = worksheet.Cells[startRow, startColumn + 2].Value;
                        //get student code
                        object studentCode = worksheet.Cells[startRow, startColumn + 1].Value;
                        //get class by grade
                        object classByGrade = worksheet.Cells[startRow, startColumn + 4].Value;
                        //get username
                        string username = worksheet.Cells[startRow, startColumn + 1].Value.ToString();
                        startRow++;
                        //if data exists
                        if (data != null)
                        {
                            //get students in that class
                            count++;
                            Student student = db.Students.FirstOrDefault(s => s.Username.Trim()
                                                                         .Equals(username.Trim()));
                            if (student == null)
                            {
                                continue;
                            }
                            if (student.StudentCode == null)
                            {
                                student.StudentCode = username;
                            }

                            StudentClass studentClass = new StudentClass();
                            studentClass.StudentId = student.Id;
                            studentClass.TeacherId = teacherId;
                            studentClass.ClassId   = classId;
                            db.StudentClasses.Add(studentClass);
                            db.SaveChanges();
                            successNumber++;
                            result = true;
                        }
                    } while (data != null);
                }
            }
            catch (Exception)
            {
            }

            return(result);
        }
        //check ability to save new student from excel
        public bool SaveStudent(string username, string password, string fullname, string email, string classbygrade, ClassSurveyDbContext db)
        {
            var result = false;

            try
            {
                //save student
                //if students exist before, then not import again
                //just import new student not exists in system
                if (db.Students.Where(x => x.Username.Equals(username)).Count() == 0)
                {
                    var student = new Student();
                    student.Username = username;
                    //hash password before adding
                    student.Password     = HashPassword.ComputeSha256Hash(password);
                    student.StudentCode  = username;
                    student.StudentName  = fullname;
                    student.Email        = email;
                    student.ClassByGrade = classbygrade;
                    db.Students.Add(student);
                    db.SaveChanges();

                    int id = db.Students.Max(x => x.Id);
                    //add new user
                    User user = new User()
                    {
                        Username  = username,
                        Password  = HashPassword.ComputeSha256Hash(password),
                        Position  = "Student",
                        StudentId = id
                    };
                    db.Users.Add(user);
                    db.SaveChanges();
                    result = true;
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }