Last active
August 29, 2015 14:21
-
-
Save BrianJVarley/3dd6e164029aeb67263d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using GalaSoft.MvvmLight; | |
using GalaSoft.MvvmLight.Command; | |
using LC_Points.Model; | |
using System; | |
using System.Collections.Generic; | |
using System.Collections.ObjectModel; | |
using System.Windows.Input; | |
using Windows.UI.Xaml.Controls; | |
using System.Linq; | |
using Windows.UI.Popups; | |
namespace LC_Points.ViewModel | |
{ | |
/// <summary> | |
/// This class contains properties that the main View can data bind to. | |
/// <para> | |
/// Use the <strong>mvvminpc</strong> snippet to add bindable properties to this ViewModel. | |
/// </para> | |
/// <para> | |
/// You can also use Blend to data bind with the tool's support. | |
/// </para> | |
/// <para> | |
/// See http://www.galasoft.ch/mvvm | |
/// </para> | |
/// </summary> | |
public class MainViewModel : ViewModelBase | |
{ | |
private ViewSubjectGradeViewModel viewSubjectGradeViewModel = new ViewSubjectGradeViewModel(); | |
/// <summary> | |
/// Initializes a new instance of the MainViewModel class. | |
/// </summary> | |
public MainViewModel() | |
{ | |
//call methods to initilise list data | |
InitSubjectTypes(); | |
InitOrdinaryGradePairs(); | |
InitHigherGradePairs(); | |
AddedSubjectGradePairs = new ObservableCollection<ScoreModel>(); | |
ViewSubjectGradeViewModelProperty = viewSubjectGradeViewModel; | |
} | |
public ObservableCollection<ScoreModel> AddedSubjectGradePairs { get; set; } | |
public List<ScoreModel> Subjects { get; set; } | |
public List<StringKeyValue> HigherGradePointKV { get; set; } | |
public List<StringKeyValue> OrdinaryGradePointKV { get; set; } | |
private ViewSubjectGradeViewModel _viewSubjectGradeViewModel; | |
public ViewSubjectGradeViewModel ViewSubjectGradeViewModelProperty | |
{ | |
get { return _viewSubjectGradeViewModel; } | |
set | |
{ | |
if (value != _viewSubjectGradeViewModel) | |
{ | |
_viewSubjectGradeViewModel = value; | |
} | |
} | |
} | |
private ScoreModel _selectedSubject; | |
public ScoreModel SelectedSubject | |
{ | |
get { return _selectedSubject; } | |
set | |
{ | |
if (value != _selectedSubject) | |
{ | |
_selectedSubject = value; | |
RaisePropertyChanged("SelectedSubject"); | |
ButtonEnabled = true; | |
} | |
} | |
} | |
private StringKeyValue _selectedHigherGrade; | |
public StringKeyValue SelectedHigherGrade | |
{ | |
get { return _selectedHigherGrade; } | |
set | |
{ | |
if (value != _selectedHigherGrade) | |
{ | |
_selectedHigherGrade = value; | |
RaisePropertyChanged("SelectedHigherGrade"); | |
ButtonEnabled = true; | |
} | |
else | |
{ | |
ButtonEnabled = false; | |
} | |
} | |
} | |
private StringKeyValue _selectedOrdinaryGrade; | |
public StringKeyValue SelectedOrdinaryGrade | |
{ | |
get { return _selectedOrdinaryGrade; } | |
set | |
{ | |
if (value != _selectedOrdinaryGrade) | |
{ | |
_selectedOrdinaryGrade = value; | |
RaisePropertyChanged("SelectedOrdinaryGrade"); | |
ButtonEnabled = true; | |
} | |
else | |
{ | |
ButtonEnabled = false; | |
} | |
} | |
} | |
private int _totalPoints; | |
public int TotalPoints | |
{ | |
get { return _totalPoints; } | |
set | |
{ | |
if (value != _totalPoints) | |
{ | |
_totalPoints = value; | |
RaisePropertyChanged("TotalPoints"); | |
} | |
} | |
} | |
//button enabled bool | |
private bool _buttonEnabled; | |
public bool ButtonEnabled | |
{ | |
get | |
{ | |
return _buttonEnabled; | |
} | |
set | |
{ | |
_buttonEnabled = value; | |
RaisePropertyChanged("ButtonEnabled"); | |
} | |
} | |
//ordinary toggle button bool | |
private bool _isOrdinary; | |
public bool IsOrdinary | |
{ | |
get | |
{ | |
return _isOrdinary; | |
} | |
set | |
{ | |
_isOrdinary = value; | |
RaisePropertyChanged("IsOrdinary"); | |
} | |
} | |
//Higher toggle button bool property | |
private bool _isHigher; | |
public bool IsHigher | |
{ | |
get | |
{ | |
return _isHigher; | |
} | |
set | |
{ | |
_isHigher = value; | |
RaisePropertyChanged("IsHigher"); | |
} | |
} | |
//Method to store Subject and Grade from Combo Boxes | |
public void AddSubjectAndGrade() | |
{ | |
string SelectedSubjectName = "null subject"; | |
int SelectedPoints = 0; | |
SelectedSubjectName = SelectedSubject.Subject; | |
SelectedPoints = IsHigher ? SelectedHigherGrade.Value : SelectedOrdinaryGrade.Value; | |
AddedSubjectGradePairs.Add(new ScoreModel() { Subject = SelectedSubjectName, Points = SelectedPoints }); | |
if(AddedSubjectGradePairs.Count <= 6) | |
{ | |
CalculateLeavingCertPoints(); | |
} | |
} | |
//Method to calculate the points result | |
private void CalculateLeavingCertPoints() | |
{ | |
//Logic: | |
//IF 6 subjects and grades | |
//add 6 grade points | |
//output result of addition | |
TotalPoints = AddedSubjectGradePairs.Sum(x => x.Points); | |
} | |
RelayCommand viewGradesCommand; | |
public RelayCommand ViewGradesCommand | |
{ | |
get | |
{ | |
if (viewGradesCommand == null) | |
{ | |
viewGradesCommand = new RelayCommand(() => | |
{ | |
//do something... | |
}); | |
} | |
return viewGradesCommand; | |
} | |
} | |
RelayCommand addGradeCommand; | |
public RelayCommand AddGradeCommand | |
{ | |
get | |
{ | |
if (addGradeCommand == null) | |
{ | |
addGradeCommand = new RelayCommand(() => | |
{ | |
AddSubjectAndGrade(); | |
}); | |
} | |
return addGradeCommand; | |
} | |
} | |
RelayCommand clearGradesCommand; | |
public RelayCommand ClearGradesCommand | |
{ | |
get | |
{ | |
if (clearGradesCommand == null) | |
{ | |
clearGradesCommand = new RelayCommand(() => | |
{ | |
//call to empty collection items | |
AddedSubjectGradePairs.Clear(); | |
TotalPoints = 0; | |
}); | |
} | |
return clearGradesCommand; | |
} | |
} | |
public class StringKeyValue | |
{ | |
public string Key { get; set; } | |
public int Value { get; set; } | |
} | |
public void InitOrdinaryGradePairs() | |
{ | |
List<StringKeyValue> ordinaryGradePointKVTemp = new List<StringKeyValue>(); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "A1", Value = 60 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "A2", Value = 50 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "B1", Value = 45 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "B2", Value = 40 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "B3", Value = 35 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "C1", Value = 30 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "C2", Value = 25 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "C3", Value = 20 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "D1", Value = 15 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "D2", Value = 10 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "D3", Value = 5 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "E,F,NG", Value = 0 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "Pass", Value = 30 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "Merit", Value = 50 }); | |
ordinaryGradePointKVTemp.Add(new StringKeyValue { Key = "Distinction", Value = 70 }); | |
OrdinaryGradePointKV = ordinaryGradePointKVTemp; | |
} | |
public void InitHigherGradePairs() | |
{ | |
List<StringKeyValue> higherGradePointKVTemp = new List<StringKeyValue>(); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "A1", Value = 100 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "A2", Value = 90 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "B1", Value = 85 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "B2", Value = 80 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "B3", Value = 75 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "!!TestHigherGrades!!", Value = 70 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "C2", Value = 65 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "C3", Value = 60 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "D1", Value = 55 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "D2", Value = 50 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "D3", Value = 45 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "E,F,NG", Value = 0 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "Pass", Value = 30 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "Merit", Value = 50 }); | |
higherGradePointKVTemp.Add(new StringKeyValue { Key = "Distinction", Value = 70 }); | |
HigherGradePointKV = higherGradePointKVTemp; | |
} | |
public void InitSubjectTypes() | |
{ | |
List<ScoreModel> subjectList = new List<ScoreModel>(); | |
// Adding Subjects to List | |
subjectList.Add(new ScoreModel { Subject = "Accounting" }); | |
subjectList.Add(new ScoreModel { Subject = "Agricultural Economics" }); | |
subjectList.Add(new ScoreModel { Subject = "Agricultural Science" }); | |
subjectList.Add(new ScoreModel { Subject = "Ancient Greek" }); | |
subjectList.Add(new ScoreModel { Subject = "Applied Math" }); | |
subjectList.Add(new ScoreModel { Subject = "Arabic" }); | |
subjectList.Add(new ScoreModel { Subject = "Art" }); | |
subjectList.Add(new ScoreModel { Subject = "Artistic & Creative Group" }); | |
subjectList.Add(new ScoreModel { Subject = "Biology" }); | |
subjectList.Add(new ScoreModel { Subject = "Business" }); | |
subjectList.Add(new ScoreModel { Subject = "Business Group" }); | |
subjectList.Add(new ScoreModel { Subject = "Chemistry" }); | |
subjectList.Add(new ScoreModel { Subject = "Classical Studies" }); | |
subjectList.Add(new ScoreModel { Subject = "Construction Studies" }); | |
subjectList.Add(new ScoreModel { Subject = "Design & Comm Graphics" }); | |
subjectList.Add(new ScoreModel { Subject = "Economics" }); | |
subjectList.Add(new ScoreModel { Subject = "Engineering" }); | |
subjectList.Add(new ScoreModel { Subject = "English" }); | |
subjectList.Add(new ScoreModel { Subject = "French" }); | |
subjectList.Add(new ScoreModel { Subject = "Geography" }); | |
subjectList.Add(new ScoreModel { Subject = "German" }); | |
subjectList.Add(new ScoreModel { Subject = "Hebrew Studies" }); | |
subjectList.Add(new ScoreModel { Subject = "History" }); | |
subjectList.Add(new ScoreModel { Subject = "Home Economics" }); | |
subjectList.Add(new ScoreModel { Subject = "Irish" }); | |
subjectList.Add(new ScoreModel { Subject = "Italian" }); | |
subjectList.Add(new ScoreModel { Subject = "Japanese" }); | |
subjectList.Add(new ScoreModel { Subject = "Languages & Humanities" }); | |
subjectList.Add(new ScoreModel { Subject = "Latin" }); | |
subjectList.Add(new ScoreModel { Subject = "Link Modules" }); | |
subjectList.Add(new ScoreModel { Subject = "Mathematics" }); | |
subjectList.Add(new ScoreModel { Subject = "Music" }); | |
subjectList.Add(new ScoreModel { Subject = "Other Language" }); | |
subjectList.Add(new ScoreModel { Subject = "Physics" }); | |
subjectList.Add(new ScoreModel { Subject = "Physics & Chemistry" }); | |
subjectList.Add(new ScoreModel { Subject = "Practical Group" }); | |
subjectList.Add(new ScoreModel { Subject = "Religious Education" }); | |
subjectList.Add(new ScoreModel { Subject = "Russian" }); | |
subjectList.Add(new ScoreModel { Subject = "Science Group" }); | |
subjectList.Add(new ScoreModel { Subject = "Social Group" }); | |
subjectList.Add(new ScoreModel { Subject = "Spanish" }); | |
subjectList.Add(new ScoreModel { Subject = "Technology" }); | |
Subjects = subjectList; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment