private void AssignClass(DataItemMegaItem data, ViewItemExam view) { if (data.MegaItemType == PowerPlannerSending.MegaItemType.Event) { view.Class = _semester.NoClassClass; } else { view.Class = _semester.Classes.First(i => i.Identifier == data.UpperIdentifier); } }
/// <summary> /// Returns null if none of the expected types /// </summary> /// <param name="semester"></param> /// <returns></returns> public BaseViewItemHomeworkExam CreateViewItemTaskOrEvent(IEnumerable <ViewItemClass> classes, ViewItemClass noClassClass) { BaseViewItemHomeworkExam view; switch (MegaItemType) { case MegaItemType.Homework: case MegaItemType.Task: view = new ViewItemHomework(this); break; case MegaItemType.Exam: case MegaItemType.Event: view = new ViewItemExam(this); break; default: return(null); } if (view is ViewItemHomework) { var h = view as ViewItemHomework; if (this.MegaItemType == MegaItemType.Task) { h.Class = noClassClass; } else { h.Class = classes.First(i => i.Identifier == this.UpperIdentifier); } } else if (view is ViewItemExam) { var e = view as ViewItemExam; if (this.MegaItemType == MegaItemType.Event) { e.Class = noClassClass; } else { e.Class = classes.First(i => i.Identifier == this.UpperIdentifier); } } return(view); }
protected override void OnDataChangedEvent(DataChangedEvent e) { base.OnDataChangedEvent(e); if (_semester != null) { // Look through edited items if (Class.HomeworkAndExams != null) { foreach (var edited in e.EditedItems.OfType <DataItemMegaItem>()) { var matched = Class.HomeworkAndExams.FirstOrDefault(i => i.Identifier == edited.Identifier); // If found matching if (matched != null) { // If no longer under this class, we need to re-assign the class if (matched is ViewItemHomework) { var h = matched as ViewItemHomework; if (h.Class.Identifier != edited.UpperIdentifier) { if (edited.UpperIdentifier == _semester.NoClassClass.Identifier) { h.Class = _semester.NoClassClass; } else { h.Class = _semester.Classes.FirstOrDefault(i => i.Identifier == edited.UpperIdentifier); } } } else if (matched is ViewItemExam) { var exam = matched as ViewItemExam; if (exam.Class.Identifier != edited.UpperIdentifier) { if (edited.UpperIdentifier == _semester.NoClassClass.Identifier) { exam.Class = _semester.NoClassClass; } else { exam.Class = _semester.Classes.FirstOrDefault(i => i.Identifier == edited.UpperIdentifier); } } } } } } // Re-assigning classes needs to be done before, otherwise we'll no longer have a reference to the object _semester.HandleDataChangedEvent(e); // Only calculates if needed if (IsGradesLoaded) { Class.CalculateEverything(); } // If we previously didn't have old items, see whether we do now if (!HasPastCompletedHomework) { bool hasPastCompleted = e.EditedItems.Concat(e.NewItems).OfType <DataItemMegaItem>().Any( h => IsPastCompletedHomeworkFunction(_classId, TodayAsUtc).Invoke(h)); if (hasPastCompleted) { HasPastCompletedHomework = true; } } if (!HasPastCompletedExams) { bool hasPastCompleted = e.EditedItems.Concat(e.NewItems).OfType <DataItemMegaItem>().Any( exam => IsPastCompletedExamFunction(_classId, TodayAsUtc).Invoke(exam)); if (hasPastCompleted) { HasPastCompletedExams = true; } } if (UnassignedItems != null) { // Remove any deleted if (e.DeletedItems.Any()) { UnassignedItems.RemoveWhere(i => e.DeletedItems.Contains(i.Identifier)); } List <DataItemMegaItem> potentialNew = new List <DataItemMegaItem>(e.NewItems.OfType <DataItemMegaItem>()); // Look through edited foreach (var edited in e.EditedItems.OfType <DataItemMegaItem>()) { var matching = UnassignedItems.FirstOrDefault(i => i.Identifier == edited.Identifier); if (matching != null) { // If it should be removed if (!IsUnassignedChild(edited)) { UnassignedItems.Remove(matching); } // Otherwise it needs to be updated and then re-sorted else { matching.PopulateFromDataItem(edited); UnassignedItems.Remove(matching); UnassignedItems.InsertSorted(matching); } } // New else { potentialNew.Add(edited); } } foreach (var newItem in potentialNew) { if (IsUnassignedChild(newItem)) { BaseViewItemHomeworkExam newViewItem; if (newItem.MegaItemType == PowerPlannerSending.MegaItemType.Homework) { newViewItem = new ViewItemHomework(newItem) { Class = this.Class, WeightCategory = ViewItemWeightCategory.UNASSIGNED }; } else if (newItem.MegaItemType == PowerPlannerSending.MegaItemType.Exam) { newViewItem = new ViewItemExam(newItem) { Class = this.Class, WeightCategory = ViewItemWeightCategory.UNASSIGNED }; } else { continue; } UnassignedItems.InsertSorted(newViewItem); } } HasUnassignedItems = UnassignedItems.Count > 0; } } }
private void AssignClass(DataItemMegaItem data, ViewItemExam view) { view.Class = Semester.Classes.FirstOrDefault(i => i.Identifier == data.UpperIdentifier); }