public ViewItemWeightCategory( DataItemWeightCategory dataItem, Func <BaseDataItemHomeworkExamGrade, BaseViewItemMegaItem> createGradeMethod = null) : base(dataItem) { if (createGradeMethod != null) { AddGradesHelper(createGradeMethod); } }
protected override void PopulateFromDataItemOverride(BaseDataItem dataItem) { base.PopulateFromDataItemOverride(dataItem); DataItemWeightCategory i = dataItem as DataItemWeightCategory; WeightValue = i.WeightValue; NeedsRecalc = true; }
public async void Save() { try { if (!AreWeightsValid()) { await new PortableMessageDialog(PowerPlannerResources.GetString("String_InvalidWeightCategoriesMessageBody"), PowerPlannerResources.GetString("String_InvalidWeightCategoriesMessageHeader")).ShowAsync(); return; } DataChanges changes = new DataChanges(); // Process weight category changes List <EditingWeightCategoryViewModel> newWeights = new List <EditingWeightCategoryViewModel>(WeightCategories); List <BaseViewItemMegaItem> lostGrades = new List <BaseViewItemMegaItem>(); //handle weights that were deleted foreach (ViewItemWeightCategory existing in Class.WeightCategories) { //if that existing weight isn't in the new weights list if (!newWeights.Any(i => i.Identifier == existing.Identifier)) { //mark it for deletion changes.DeleteItem(existing.Identifier); //add all of its grades to the lost grades lostGrades.AddRange(existing.Grades); } } //if there aren't any weights, need to add the default All Grades if (newWeights.Count == 0) { newWeights.Add(new EditingWeightCategoryViewModel() { Name = PowerPlannerResources.GetString("WeightCategory_AllGrades"), Weight = 100 }); } Guid firstCategory = newWeights.First().Identifier; //strip away any existing weight categories that didn't change foreach (EditingWeightCategoryViewModel newWeight in newWeights.ToArray()) { ViewItemWeightCategory existing = Class.WeightCategories.FirstOrDefault(i => i.Identifier == newWeight.Identifier); if (existing != null) { //if the name and/or value didn't change, we'll remove it from the main list if (existing.Name.Equals(newWeight.Name) && existing.WeightValue == newWeight.Weight) { newWeights.Remove(newWeight); } } } //and now process the new/changed weights foreach (EditingWeightCategoryViewModel changed in newWeights) { DataItemWeightCategory w; ViewItemWeightCategory existing = Class.WeightCategories.FirstOrDefault(i => i.Identifier == changed.Identifier); //if existing, serialize if (existing != null) { w = new DataItemWeightCategory() { Identifier = existing.Identifier } } ; else { w = new DataItemWeightCategory() { Identifier = Guid.NewGuid(), UpperIdentifier = Class.Identifier }; //if we didn't have a first category yet if (firstCategory == Guid.Empty) { firstCategory = w.Identifier; } } w.Name = changed.Name; w.WeightValue = changed.Weight; changes.Add(w); } // And then move the lost grades into the first available weight category foreach (var lostGrade in lostGrades.OfType <ViewItemGrade>()) { DataItemGrade g = new DataItemGrade() { Identifier = lostGrade.Identifier }; g.UpperIdentifier = firstCategory; changes.Add(g); } foreach (var lostGrade in lostGrades.OfType <ViewItemTaskOrEvent>()) { DataItemMegaItem g = new DataItemMegaItem() { Identifier = lostGrade.Identifier }; g.WeightCategoryIdentifier = firstCategory; changes.Add(g); } TryStartDataOperationAndThenNavigate(delegate { return(PowerPlannerApp.Current.SaveChanges(changes)); }, delegate { this.RemoveViewModel(); }); } catch (Exception ex) { TelemetryExtension.Current?.TrackException(ex); await new PortableMessageDialog("Error encountered while saving. Your error report has been sent to the developer.", "Error").ShowAsync(); } }
private ViewItemWeightCategory CreateWeightCategory(DataItemWeightCategory w) { return(new ViewItemWeightCategory(w)); }
private static ViewItemWeightCategory CreateWeight(DataItemWeightCategory dataWeight) { return(new ViewItemWeightCategory( dataWeight, createGradeMethod: ViewItemWeightCategory.CreateGradeHelper)); }
private ViewItemWeightCategory CreateWeightForOtherClasses(DataItemWeightCategory dataWeight) { return(new ViewItemWeightCategory(dataWeight)); }
private ViewItemWeightCategory CreateWeight(DataItemWeightCategory dataWeight) { return(new ViewItemWeightCategory( dataWeight, createGradeMethod: _isGradesLoaded ? new Func <BaseDataItemHomeworkExamGrade, BaseViewItemHomeworkExamGrade>(ViewItemWeightCategory.CreateGradeHelper) : null)); }
private bool IsChild(DataItemWeightCategory dataChild) { return(dataChild.UpperIdentifier == Identifier); }