public Class(string name, string instructor, int creditHours, Uri instructorEmail, Uri classWebsite, Syllabus syllabus, int classType, string notes, ObservableCollection <MeetingTime> meetingTimes, GradeScale gradeScale) { this.Name = name; this.Instructor = instructor; this.CreditHours = creditHours; this.InstructorEmail = instructorEmail; this.ClassWebsite = classWebsite; this.Syllabus = syllabus; this.ClassType = classType; this.Notes = notes; this.MeetingTimes = meetingTimes; this.NotificationTime = NotificationTime; this.GradeScale = gradeScale; JsonSerializerOptions options = new JsonSerializerOptions() { IncludeFields = true, }; }
private void SaveClick(object sender, RoutedEventArgs e) { String name = tbName.Text; Globals.clList.classes.Remove(clas); if (clas != null) // this block runs only when editing an existing class { // Change class name (Cl) of classwork from old to new name foreach (var cw in Globals.cwList.classwork) { if (cw.Cl != null && cw.Cl.Equals(clas.Name)) { cw.Cl = name; } } // Change ClassName of grades from old to new name foreach (var g in Globals.gradebook.grades) { if (g.ClassName.Equals(clas.Name)) { g.ClassName = name; } } } // Ensure name is unique foreach (Class c in Globals.clList.classes) { if (c.Name.Equals(name)) { Error nameErr = new Error(); nameErr.tb_ErrorText.Text = "Class with that name already exists!"; nameErr.ShowDialog(); return; // Stop saving so user can change name. } } String instructor = tbInstructor.Text; int CreditHours; try { CreditHours = int.Parse(tbCreditHours.Text); } catch (System.FormatException) { Error nameErr = new Error(); nameErr.tb_ErrorText.Text = "Please enter a valid number of credit hours."; nameErr.ShowDialog(); return; // Stop saving so user can change credit hours. } catch (System.OverflowException) { Error nameErr = new Error(); nameErr.tb_ErrorText.Text = "Too many credit hours, enter a valid number"; nameErr.ShowDialog(); return; // Stop saving so user can change credit hours. } foreach (var g in Globals.gradebook.grades) { if (g.ClassName.Equals(name)) { g.Hours = CreditHours; } } Uri ClassWebsite; Uri InstEmail; if (tbWebsite.Text == "") { ClassWebsite = null; } else { try { ClassWebsite = new Uri("http://" + tbWebsite.Text + "/"); } catch (UriFormatException) { Error error = new Error(); error.tb_ErrorText.Text = "Please enter a vaild web address."; error.ShowDialog(); return; // Stop saving so user can fix input } if (ClassWebsite.Scheme != Uri.UriSchemeHttp) { Error error = new Error(); error.tb_ErrorText.Text = "Please enter a vaild web address."; error.ShowDialog(); return; // Stop saving so user can fix input } } if (tbInstEmail.Text == "") { InstEmail = null; } else { try { InstEmail = new Uri("mailto:" + tbInstEmail.Text); } catch (UriFormatException) { Error error = new Error(); error.tb_ErrorText.Text = "Please enter a vaild email adress."; error.ShowDialog(); return; // Stop saving so user can fix input } if (InstEmail.Scheme != Uri.UriSchemeMailto) { Error error = new Error(); error.tb_ErrorText.Text = "Please enter a vaild email adress."; error.ShowDialog(); return; // Stop saving so user can fix input } } int scaleIdxSelected; GradeScale gradeScale; try { scaleIdxSelected = cmbGradeScale.SelectedIndex; } catch (NullReferenceException) // shouldn't happen as combobox defaults to 10 point { Error noScaleErr = new Error(); noScaleErr.tb_ErrorText.Text = "Select a grade scale."; noScaleErr.Show(); return; // Quit saving so user can select a grade scale. } if (scaleIdxSelected == 0) { gradeScale = new GradeScale(10, 0); // what is rounding type zero? } else { gradeScale = new GradeScale(7, 0); } // Custom gradescales not supported (yet?). Syllabus syllabus = tempSyllabus; int classType = cmbClassType.SelectedIndex; String notes = tbNotes.Text; ObservableCollection <MeetingTime> meetingTimes; //Two cases Case 1: class is null (no meeting time object) Case 2: try { meetingTimes = clas.MeetingTimes; } catch (NullReferenceException) { meetingTimes = new ObservableCollection <MeetingTime>(); // empty collection } Globals.clList.AddClass(new Class(name, instructor, CreditHours, InstEmail, ClassWebsite, syllabus, classType, notes, meetingTimes, gradeScale)); this.Close(); }