/// <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(); }
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(); }
public void AddChangeLog(changelog change) { db.changelogs.InsertOnSubmit(change); }