예제 #1
0
        /// <summary>
        /// Audits Changes to a Specific Entity
        /// </summary>
        /// <typeparam name="T">The Data Entity Type</typeparam>
        /// <param name="dataContext">The Data Context</param>
        /// <param name="modifiedEntity">The Entity To Audit</param>
        /// <param name="target"></param>
        /// <param name="userid"></param>
        public static void LogChanges <T>(ioschoolsDBDataContext dataContext, T modifiedEntity, string target, long userid) where T : class
        {
            if (dataContext == null || modifiedEntity == null)
            {
                return;
            }

            var sb = new StringBuilder();

            sb.AppendFormat("{0}: ", target);
            foreach (ModifiedMemberInfo modifiedProperty in dataContext.GetTable <T>().GetModifiedMembers(modifiedEntity))
            {
                //log changes
                // field[original:new] field[original:new]
                sb.AppendFormat("{0}[{1} -> {2}] ", modifiedProperty.Member.Name, modifiedProperty.OriginalValue,
                                modifiedProperty.CurrentValue);
            }

            var change = new changelog
            {
                changes = sb.ToString(),
                created = DateTime.Now,
                userid  = userid
            };

            dataContext.changelogs.InsertOnSubmit(change);
            dataContext.SubmitChanges();
        }
예제 #2
0
        public void DeleteUser(long id, long executer)
        {
            var usr = db.users.SingleOrDefault(x => x.id == id);

            if (usr == null)
            {
                return;
            }

            // delete blogs
            db.blogs.DeleteAllOnSubmit(usr.blogs);

            if (usr.usergroup == (int)UserGroup.STUDENT)
            {
                db.students_disciplines.DeleteAllOnSubmit(usr.students_disciplines);

                var allocatedclasses = db.classes_students_allocateds.Where(x => x.studentid == usr.id);
                db.classes_students_allocateds.DeleteAllOnSubmit(allocatedclasses);

                // delete guardian link
                db.students_guardians.DeleteAllOnSubmit(usr.students_guardians);
                db.students_guardians.DeleteAllOnSubmit(usr.students_guardians1);

                // delete attendances
                var attendances = db.attendances.Where(x => x.studentid == usr.id);
                db.attendances.DeleteAllOnSubmit(attendances);

                // delete eca
                db.eca_students.DeleteAllOnSubmit(usr.eca_students);

                // delete exam marks
                db.exam_marks.DeleteAllOnSubmit(usr.exam_marks);

                // delete siblings
                db.siblings.DeleteAllOnSubmit(usr.siblings);
                db.siblings.DeleteAllOnSubmit(usr.siblings1);

                // delete registrations
                db.registrations.DeleteAllOnSubmit(usr.registrations);

                // delete user files
                db.user_files.DeleteAllOnSubmit(usr.user_files);

                // delete user remarks
                db.students_remarks.DeleteAllOnSubmit(usr.students_remarks);
            }
            else
            {
                db.students_disciplines.DeleteAllOnSubmit(usr.students_disciplines1);

                // delete parent guardian link
                if (usr.user_parents != null)
                {
                    db.user_parents.DeleteOnSubmit(usr.user_parents);
                }
                db.students_guardians.DeleteAllOnSubmit(usr.students_guardians1);
                db.students_guardians.DeleteAllOnSubmit(usr.students_guardians);

                // staff
                if (usr.user_staffs != null)
                {
                    db.user_staffs.DeleteOnSubmit(usr.user_staffs);
                }

                // changelog
                db.changelogs.DeleteAllOnSubmit(usr.changelogs);

                // registrations
                db.registrations.DeleteAllOnSubmit(usr.registrations1.Union(usr.registrations2)); // the other one is for students only

                // teachers
                var allocated_teachers = db.classes_teachers_allocateds.Where(x => x.teacherid == usr.id);
                db.classes_teachers_allocateds.DeleteAllOnSubmit(allocated_teachers);

                // staff
                if (usr.employments != null)
                {
                    db.employments.DeleteAllOnSubmit(usr.employments);
                }

                // delete homework
                var homeworks        = usr.homeworks;
                var homework_files   = homeworks.SelectMany(x => x.homework_files);
                var homework_classes = homeworks.SelectMany(x => x.homework_classes);

                db.homework_classes.DeleteAllOnSubmit(homework_classes);
                db.homework_files.DeleteAllOnSubmit(homework_files);
                db.homeworks.DeleteAllOnSubmit(usr.homeworks);

                db.exam_classes.DeleteAllOnSubmit(usr.exams.SelectMany(x => x.exam_classes));
                db.exam_subjects.DeleteAllOnSubmit(usr.exams.SelectMany(x => x.exam_subjects));
                db.exam_marks.DeleteAllOnSubmit(usr.exams.SelectMany(x => x.exam_marks));
                db.exams.DeleteAllOnSubmit(usr.exams);
            }


            // log changes
            var change = new changelog
            {
                changes = string.Format("{0} deleted", usr.name),
                created = DateTime.Now,
                userid  = executer
            };

            db.changelogs.InsertOnSubmit(change);
            db.users.DeleteOnSubmit(usr);
            db.SubmitChanges();
        }
예제 #3
0
 public void AddChangeLog(changelog change)
 {
     db.changelogs.InsertOnSubmit(change);
 }