public ExamStudentViewModel(ioschools.DB.user student, IQueryable <exam_mark> examMarks, int year) { studentid = student.id; int finalYear = DateTime.Now.Year; if (student.FinalYear.HasValue) { finalYear = student.FinalYear.Value; if (year > finalYear) { year = finalYear; } } this.year = year; years = examMarks .Select(x => x.exam.year).Union(new[] { finalYear }) .Distinct() .Where(x => x <= finalYear) .Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString(), Selected = x == year }) .ToList(); }
public SchoolFeeStudentViewModel(ioschools.DB.user student, Permission perm, int year) : this() { studentid = student.id; canEdit = perm.HasFlag(Permission.FEES_ADMIN); if (student.classes_students_allocateds.Any()) { int finalYear = DateTime.Now.Year; // now see if the student has left if (student.FinalYear.HasValue) { finalYear = student.FinalYear.Value; if (year > finalYear) { year = finalYear; } } yearList = student.classes_students_allocateds.Select(x => x.year) .Distinct() .Where(x => x <= finalYear) // don't show stuff after student has left .OrderByDescending(x => x) .Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString(), Selected = x == year }); fees = student.fees.Where(x => x.duedate.Year == year).ToModel(perm); } }
public StatementViewModel(ioschools.DB.user parent, int year, Permission perms) { childs = new List <StatementChildren>(); this.year = year.ToString(); var childFees = parent.students_guardians1 .SelectMany(x => x.user.fees) .Where(y => y.duedate.Year == year); if (childFees.Count() != 0) { discountDate = childFees.Min(x => x.duedate); showDiscountRow = DateTime.Now <= discountDate || ((Permission.FEES_ADMIN | Permission.FEES_UPDATE_STATUS) & perms) != 0; foreach (var entry in childFees.GroupBy(y => y.user)) { var statement = new StatementChildren(); statement.childname = entry.Key.ToName(); statement.fees = entry.Select(x => x).ToModel(perms); childs.Add(statement); } var payable = (float)childs.SelectMany(x => x.fees) .Where(y => y.status != FeePaymentStatus.PAID.ToDescriptionString()) .Sum(y => y.amount); if (payable > 0) { totalPayable = payable.ToString("n2"); totalPayableDiscounted = (payable * 0.97).ToString("n2"); } } }
public AdmissionStatus Process(Gender child_sex, int enrol_year, int school, int year, string child_name, string child_race, string child_dialect, string child_address, int child_dob_day, int child_dob_month, int child_dob_year, string child_pob, string child_citizenship, string child_birthcertno, string child_passportnric, bool child_bumi, string child_religion, HttpPostedFileBase child_photo, string child_previous_school, HttpPostedFileBase child_report, string child_previous_class, string child_leaving_reason, bool?child_handicap, bool?child_learning_problems, string child_disability_details, // parents fields string parent1_designation, string parent1_name, string parent1_passportnric, string parent1_occupation, string parent1_employer, string parent1_race, string parent1_dialect, bool?parent1_bumi, string parent1_marital, string parent1_citizenship, string parent1_religion, string parent1_officephone, string parent1_homephone, string parent1_handphone, string parent1_email, string parent1_address, string parent2_designation, string parent2_name, string parent2_passportnric, string parent2_occupation, string parent2_employer, string parent2_race, string parent2_dialect, bool?parent2_bumi, string parent2_marital, string parent2_citizenship, string parent2_religion, string parent2_officephone, string parent2_homephone, string parent2_handphone, string parent2_email, string parent2_address, // guardian fields string guardian_designation, string guardian_name, Gender?guardian_sex, string guardian_passportnric, string guardian_occupation, string guardian_employer, string guardian_race, string guardian_dialect, bool?guardian_bumi, string guardian_marital, string guardian_citizenship, string guardian_religion, string guardian_officephone, string guardian_homephone, string guardian_handphone, string guardian_email, string guardian_address, // other siblings string[] sibling_name, string[] sibling_nric, GuardianType?applicant_relationship, bool internalsubmission) { var noemail = true; // to ensure at least parent/guardian has email var emails = new List <string>(); // sanitize inputs parent1_email = (parent1_email ?? "").Trim().ToLower(); parent2_email = (parent2_email ?? "").Trim().ToLower(); guardian_email = (guardian_email ?? "").Trim().ToLower(); if (!string.IsNullOrEmpty(child_passportnric)) { child_passportnric = child_passportnric.Trim().Replace("-", ""); } if (!string.IsNullOrEmpty(parent1_passportnric)) { parent1_passportnric = parent1_passportnric.Trim().Replace("-", ""); } if (!string.IsNullOrEmpty(parent2_passportnric)) { parent2_passportnric = parent2_passportnric.Trim().Replace("-", ""); } if (!string.IsNullOrEmpty(guardian_passportnric)) { guardian_passportnric = guardian_passportnric.Trim().Replace("-", ""); } // check that student does not already exist if (!string.IsNullOrEmpty(child_passportnric)) { student = repository.GetUserByNewNRIC(child_passportnric); // only match student usergroup to prevent accidently matching with parents or teachers if (student != null && student.usergroup != (int)UserGroup.STUDENT) { Syslog.Write(ErrorLevel.WARNING, "NRIC incorrect match: " + child_passportnric); return(AdmissionStatus.INCORRECT_NRIC_PASSPORT); } } if (student == null && !string.IsNullOrEmpty(child_passportnric)) { student = repository.GetUsers().SingleOrDefault(x => string.Compare(x.passportno, child_passportnric, true) == 0); // only match student usergroup to prevent accidently matching with parents or teachers if (student != null && student.usergroup != (int)UserGroup.STUDENT) { Syslog.Write(ErrorLevel.WARNING, "NRIC incorrect match: " + child_passportnric); return(AdmissionStatus.INCORRECT_NRIC_PASSPORT); } } if (student == null) { // student student = new ioschools.DB.user(); student.usergroup = (int)UserGroup.STUDENT; student.settings = (int)UserSettings.INACTIVE; student.email = ""; student.name = child_name; student.gender = child_sex.ToString(); student.race = child_race; student.dialect = child_dialect; student.dob = new DateTime(child_dob_year, child_dob_month, child_dob_day); student.pob = child_pob; student.citizenship = child_citizenship; student.birthcertno = child_birthcertno; student.religion = child_religion; student.isbumi = child_bumi; student.address = child_address; var childidtype = GetIDType(child_passportnric); switch (childidtype) { case IdType.NEWIC: student.nric_new = child_passportnric; break; case IdType.PASSPORT: student.passportno = child_passportnric; break; default: throw new NotImplementedException(); } repository.AddUser(student); } // father password_father = tradelr.Crypto.Utility.GetRandomString(uppercase: true); if (!string.IsNullOrEmpty(parent1_name)) { // see if we can find this parent if (!string.IsNullOrEmpty(parent1_passportnric)) { father = repository.GetUserByNewNRIC(parent1_passportnric); } if (father == null && !string.IsNullOrEmpty(parent1_passportnric)) { father = repository.GetUsers().SingleOrDefault(x => string.Compare(x.passportno, parent1_passportnric, true) == 0); } if (father == null) { father = new ioschools.DB.user(); father.usergroup = (int)UserGroup.GUARDIAN; father.settings = (int)UserSettings.NONE; father.designation = parent1_designation; father.name = parent1_name; father.gender = Gender.MALE.ToString(); father.race = parent1_race; father.dialect = parent1_dialect; father.citizenship = parent1_citizenship; father.address = parent1_address; father.religion = parent1_religion; father.isbumi = parent1_bumi; var fatheridtype = GetIDType(parent1_passportnric); switch (fatheridtype) { case IdType.PASSPORT: father.passportno = parent1_passportnric; break; case IdType.NEWIC: father.nric_new = parent1_passportnric; father.dob = parent1_passportnric.ToDOB(); break; default: throw new NotImplementedException(); } if (!string.IsNullOrEmpty(parent1_email)) { // checks that email address is not in use if (repository.GetUsers().SingleOrDefault(x => string.Compare(x.email, parent1_email, true) == 0) != null) { Syslog.Write(ErrorLevel.WARNING, "Enrolment using existing email " + parent1_email); return(AdmissionStatus.DUPLICATEEMAIL); } emails.Add(parent1_email); father.email = parent1_email; father.passwordhash = Utility.GeneratePasswordHash(parent1_email, password_father); noemail = false; } father.phone_home = parent1_homephone; father.phone_cell = parent1_handphone; father.user_parents = new user_parent(); father.marital_status = parent1_marital; father.user_parents.phone_office = parent1_officephone; father.user_parents.occupation = parent1_occupation; father.user_parents.employer = string.IsNullOrEmpty(parent1_employer)?"":parent1_employer.Trim(); repository.AddUser(father); } else { if (string.IsNullOrEmpty(father.email)) { // let's see if we can update email information if (!string.IsNullOrEmpty(parent1_email)) { // checks that email address is not in use if (repository.GetUsers().SingleOrDefault(x => string.Compare(x.email, parent1_email, true) == 0) != null) { Syslog.Write(ErrorLevel.WARNING, "Enrolment using existing email " + parent1_email); return(AdmissionStatus.DUPLICATEEMAIL); } emails.Add(parent1_email); father.email = parent1_email; father.passwordhash = Utility.GeneratePasswordHash(parent1_email, password_father); noemail = false; } } else { noemail = false; } } } password_mother = tradelr.Crypto.Utility.GetRandomString(uppercase: true); if (!string.IsNullOrEmpty(parent2_name)) { // see if we can find this parent if (!string.IsNullOrEmpty(parent2_passportnric)) { mother = repository.GetUserByNewNRIC(parent2_passportnric); } if (mother == null && !string.IsNullOrEmpty(parent2_passportnric)) { mother = repository.GetUsers().SingleOrDefault(x => string.Compare(x.passportno, parent2_passportnric, true) == 0); } if (mother == null) { mother = new ioschools.DB.user(); mother.usergroup = (int)UserGroup.GUARDIAN; mother.settings = (int)UserSettings.NONE; mother.designation = parent2_designation; mother.name = parent2_name; mother.gender = Gender.FEMALE.ToString(); mother.race = parent2_race; mother.dialect = parent2_dialect; mother.citizenship = parent2_citizenship; mother.address = parent2_address; mother.religion = parent2_religion; mother.isbumi = parent2_bumi; var motheridtype = GetIDType(parent2_passportnric); switch (motheridtype) { case IdType.PASSPORT: mother.passportno = parent2_passportnric; break; case IdType.NEWIC: mother.nric_new = parent2_passportnric; mother.dob = parent2_passportnric.ToDOB(); break; default: throw new NotImplementedException(); } if (!string.IsNullOrEmpty(parent2_email)) { // checks that email address is not in use if (repository.GetUsers().SingleOrDefault(x => string.Compare(x.email, parent2_email, true) == 0) != null) { Syslog.Write(ErrorLevel.WARNING, "Enrolment using existing email " + parent2_email); return(AdmissionStatus.DUPLICATEEMAIL); } if (!emails.Contains(parent2_email)) { emails.Add(parent2_email); mother.email = parent2_email; mother.passwordhash = Utility.GeneratePasswordHash(parent2_email, password_mother); noemail = false; } } mother.phone_home = parent2_homephone; mother.phone_cell = parent2_handphone; mother.user_parents = new user_parent(); mother.marital_status = parent2_marital; mother.user_parents.phone_office = parent2_officephone; mother.user_parents.occupation = parent2_occupation; mother.user_parents.employer = string.IsNullOrEmpty(parent2_employer) ? "" : parent2_employer.Trim(); repository.AddUser(mother); } else { if (string.IsNullOrEmpty(mother.email)) { // let's see if we can update email information if (!string.IsNullOrEmpty(parent2_email)) { // checks that email address is not in use if (repository.GetUsers().SingleOrDefault(x => string.Compare(x.email, parent2_email, true) == 0) != null) { Syslog.Write(ErrorLevel.WARNING, "Enrolment using existing email " + parent2_email); return(AdmissionStatus.DUPLICATEEMAIL); } emails.Add(parent2_email); mother.email = parent2_email; mother.passwordhash = Utility.GeneratePasswordHash(parent2_email, password_mother); noemail = false; } } else { noemail = false; } } } password_guardian = tradelr.Crypto.Utility.GetRandomString(uppercase: true); if (!string.IsNullOrEmpty(guardian_name)) { // see if we can find this parent if (!string.IsNullOrEmpty(guardian_passportnric)) { guardian = repository.GetUserByNewNRIC(guardian_passportnric); } if (guardian == null && !string.IsNullOrEmpty(guardian_passportnric)) { guardian = repository.GetUsers().SingleOrDefault(x => string.Compare(x.passportno, guardian_passportnric) == 0); } if (guardian == null) { guardian = new ioschools.DB.user(); guardian.usergroup = (int)UserGroup.GUARDIAN; guardian.settings = (int)UserSettings.NONE; guardian.designation = guardian_designation; guardian.name = guardian_name; guardian.gender = guardian_sex.ToString(); guardian.race = guardian_race; guardian.dialect = guardian_dialect; guardian.citizenship = guardian_citizenship; guardian.address = guardian_address; guardian.religion = guardian_religion; guardian.isbumi = guardian_bumi; var guardianidtype = GetIDType(guardian_passportnric); switch (guardianidtype) { case IdType.NEWIC: guardian.nric_new = guardian_passportnric; guardian.dob = guardian_passportnric.ToDOB(); break; case IdType.PASSPORT: guardian.passportno = guardian_passportnric; break; default: throw new NotImplementedException(); } if (!string.IsNullOrEmpty(guardian_email)) { // checks that email address is not in use if (repository.GetUsers().SingleOrDefault(x => string.Compare(x.email, guardian_email) == 0) != null) { Syslog.Write(ErrorLevel.WARNING, "Enrolment using existing email " + guardian_email); return(AdmissionStatus.DUPLICATEEMAIL); } if (!emails.Contains(guardian_email)) { guardian.email = guardian_email; guardian.passwordhash = Utility.GeneratePasswordHash(guardian_email, password_guardian); noemail = false; } } guardian.phone_home = guardian_homephone; guardian.phone_cell = guardian_handphone; guardian.user_parents = new user_parent(); guardian.marital_status = guardian_marital; guardian.user_parents.phone_office = guardian_officephone; guardian.user_parents.occupation = guardian_occupation; guardian.user_parents.employer = string.IsNullOrEmpty(guardian_employer) ? "" : guardian_employer.Trim(); repository.AddUser(guardian); } else { if (string.IsNullOrEmpty(guardian.email)) { // let's see if we can update email information if (!string.IsNullOrEmpty(guardian_email)) { // checks that email address is not in use if (repository.GetUsers().SingleOrDefault(x => string.Compare(x.email, guardian_email, true) == 0) != null) { Syslog.Write(ErrorLevel.WARNING, "Enrolment using existing email " + guardian_email); return(AdmissionStatus.DUPLICATEEMAIL); } emails.Add(guardian_email); guardian.email = guardian_email; guardian.passwordhash = Utility.GeneratePasswordHash(guardian_email, password_guardian); noemail = false; } } else { noemail = false; } } } // check that there's an email if (noemail && !internalsubmission) { Syslog.Write(ErrorLevel.WARNING, string.Format("No email specified: 1:{0} 2:{1} 3:{2}", parent1_email, parent2_email, guardian_email)); return(AdmissionStatus.NOEMAIL); } // check that student is not already enrol for the same year // should we? possiblity that student may leave and come back in the same year /////////////////////// SAVE //////////////////// repository.Save(); // save photo if (child_photo != null) { var photouploader = new FileHandler(child_photo.FileName, UploaderType.PHOTO, null); photouploader.Save(child_photo.InputStream); var image = new user_image(); image.url = photouploader.url; student.user_image = image; } // save child report if (child_report != null) { var reportuploader = new FileHandler(child_report.FileName, UploaderType.REGISTRATION, student.id); reportuploader.Save(child_report.InputStream); var file = new user_file(); file.filename = child_report.FileName; file.url = reportuploader.url; student.user_files.Add(file); } // siblings for (int i = 0; i < sibling_name.Length; i++) { var name = sibling_name[i]; var nric = sibling_nric[i]; if (!string.IsNullOrEmpty(nric)) { nric = nric.Trim().Replace("-", ""); // try to find user var sibling = repository.GetUserByNewNRIC(nric); if ((sibling != null && sibling.usergroup != (int)UserGroup.STUDENT) || sibling == null) { // try pasport sibling = repository.GetUsers().SingleOrDefault(x => string.Compare(x.passportno, nric, true) == 0); } if (sibling != null) { var s = new sibling(); s.otherid = student.id; sibling.siblings1.Add(s); } } } // relationship // parent if (father != null) { var f = new students_guardian(); f.parentid = father.id; f.type = (byte)GuardianType.FATHER; if (!student.students_guardians.Any(x => x.parentid == f.parentid && x.type == f.type)) { student.students_guardians.Add(f); } } if (mother != null) { var m = new students_guardian(); m.parentid = mother.id; m.type = (byte)GuardianType.MOTHER; if (!student.students_guardians.Any(x => x.parentid == m.parentid && x.type == m.type)) { student.students_guardians.Add(m); } } if (guardian != null) { var g = new students_guardian(); g.parentid = guardian.id; g.type = (byte)GuardianType.GUARDIAN; if (!student.students_guardians.Any(x => x.parentid == g.parentid && x.type == g.type)) { student.students_guardians.Add(g); } } // registration var r = new registration(); r.enrollingYear = enrol_year; r.created = DateTime.Now; r.schoolid = school; r.schoolyearid = year; r.studentid = student.id; r.status = RegistrationStatus.PENDING.ToString(); r.schoolid = school; r.schoolyearid = year; r.previous_school = child_previous_school; r.leaving_reason = child_leaving_reason; r.disability_details = child_disability_details; r.hasLearningProblem = child_learning_problems; r.isHandicap = child_handicap; r.previous_class = child_previous_class; if (applicant_relationship.HasValue) { switch (applicant_relationship) { case GuardianType.FATHER: r.applicantid = father.id; break; case GuardianType.MOTHER: r.applicantid = mother.id; break; case GuardianType.GUARDIAN: r.applicantid = guardian.id; break; } } repository.AddRegistration(r); // success try { repository.Save(); } catch (Exception ex) { Syslog.Write(ex); return(AdmissionStatus.UNKNOWN); } return(AdmissionStatus.SUCCESS); }