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;
        }
Exemplo n.º 3
0
        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));
 }
Exemplo n.º 5
0
 private static ViewItemWeightCategory CreateWeight(DataItemWeightCategory dataWeight)
 {
     return(new ViewItemWeightCategory(
                dataWeight,
                createGradeMethod: ViewItemWeightCategory.CreateGradeHelper));
 }
Exemplo n.º 6
0
 private ViewItemWeightCategory CreateWeightForOtherClasses(DataItemWeightCategory dataWeight)
 {
     return(new ViewItemWeightCategory(dataWeight));
 }
Exemplo n.º 7
0
 private ViewItemWeightCategory CreateWeight(DataItemWeightCategory dataWeight)
 {
     return(new ViewItemWeightCategory(
                dataWeight,
                createGradeMethod: _isGradesLoaded ? new Func <BaseDataItemHomeworkExamGrade, BaseViewItemHomeworkExamGrade>(ViewItemWeightCategory.CreateGradeHelper) : null));
 }
Exemplo n.º 8
0
 private bool IsChild(DataItemWeightCategory dataChild)
 {
     return(dataChild.UpperIdentifier == Identifier);
 }