StudentManager/StudentManager/Model/Students.cs

241 lines
6.8 KiB
C#

using Mysqlx.Crud;
using StudentManager.Common;
using StudentManager.Data;
using StudentManager.Extensions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StudentManager.Model
{
class MenuBar : BindableBase
{
private string icon;
/// <summary>
/// Icon
/// </summary>
public string Icon
{
get { return icon; }
set { icon = value; }
}
private string title;
public string Title
{
get { return title; }
set { title = value; }
}
private string nameSpace;
public string NameSpace
{
get { return nameSpace; }
set { nameSpace = value; }
}
}
class Students : BindableBase
{
private ObservableCollection<StudentInfo> studentDatas = new ObservableCollection<StudentInfo>();
public ReadOnlyObservableCollection<StudentInfo> StudentDatas { get; private set; }
private ObservableCollection<QuestionData> questionDatas = new ObservableCollection<QuestionData>();
public ReadOnlyObservableCollection<QuestionData> QuestionDatas { get; private set; }
private ObservableCollection<DetailErrorInfo> errorSetDatas = new ObservableCollection<DetailErrorInfo>();
public ReadOnlyObservableCollection<DetailErrorInfo> ErrorSetDatas { get; private set; }
private ObservableCollection<CursonQuestionsData> cQDatas = new ObservableCollection<CursonQuestionsData>();
public ReadOnlyObservableCollection<CursonQuestionsData> CQDatas { get; private set; }
private ObservableCollection<DetailHomeWorkSetInfo> homeWorkSet = new ObservableCollection<DetailHomeWorkSetInfo>();
public ObservableCollection<DetailHomeWorkSetInfo> HomeWorkSet { get { return homeWorkSet; } private set { homeWorkSet = value; RaisePropertyChanged(); } }
private ObservableCollection<DetailHomeWorkInfo> homeWork = new ObservableCollection<DetailHomeWorkInfo>();
public ObservableCollection<DetailHomeWorkInfo> HomeWork { get { return homeWork; } private set { homeWork = value; RaisePropertyChanged(); } }
private ObservableCollection<MenuBar> menuBars = new ObservableCollection<MenuBar>();
public ReadOnlyObservableCollection<MenuBar> MenuBars { get; private set; }
private int totalQuestions;
public int TotalQuestions
{
get { return totalQuestions; }
set { totalQuestions = value; }
}
private StudentInfo selectedStudent;
public StudentInfo SelectedStudent
{
get { return selectedStudent; }
set { selectedStudent = value; RaisePropertyChanged(); }
}
private DetailHomeWorkSetInfo selectedHomeWorkSet;
public DetailHomeWorkSetInfo SelectedHomeWorkSet
{
get { return selectedHomeWorkSet; }
set { selectedHomeWorkSet = value; RaisePropertyChanged(); }
}
private DetailHomeWorkInfo selectedHomeWork;
public DetailHomeWorkInfo SelectedHomeWork
{
get { return selectedHomeWork; }
set { selectedHomeWork = value; RaisePropertyChanged(); }
}
private StudentInfo studentInfo;
public StudentInfo StudentInfo
{
get { return studentInfo; }
set { studentInfo = value; RaisePropertyChanged(); }
}
private DetailErrorSetInfo errorSet;
public DetailErrorSetInfo ErrorSet
{
get { return errorSet; }
set { errorSet = value; RaisePropertyChanged(); }
}
private readonly IRegionManager regionManager;
public DelegateCommand<string> RegionTo { get; set; }
public DelegateCommand<StudentInfo> SelectedCommand { get; set; }
public DelegateCommand<DetailHomeWorkInfo> HomeWorkSelectedCommand { get; set; }
public DelegateCommand<DetailHomeWorkSetInfo> HomeWorkSetSelectedCommand { get; set; }
public DelegateCommand RegionToDetailCommand { get; set; }
public DelegateCommand SubmitHomeWorkCommand { get; set; }
Students(IRegionManager regionManager)
{
CreateMenuBar();
RegionTo = new DelegateCommand<string>((x) => {
regionManager.Regions[PrismManager.MainRegionName].RequestNavigate(x.ToString());
if(x == "DetailCheckView")
{
RegionToDetailCheckView();
}
if (x == "DetailView")
{
RegionToDetailView();
}
RegionToStudents();
});
SubmitHomeWorkCommand = new DelegateCommand(() => SubmitHomeWork());
SelectedCommand = new DelegateCommand<StudentInfo>((x) =>
{
if (x == null) return;
SelectedStudent = x;
RegionToDetailView();
});
HomeWorkSetSelectedCommand = new DelegateCommand<DetailHomeWorkSetInfo>((x) =>
{
if (x == null) return;
selectedHomeWorkSet = x;
HomeWork = SelectedStudent.HomeWorkSet.GetDetailHomeWorkList(SelectedHomeWorkSet.Lesson);
});
HomeWorkSelectedCommand = new DelegateCommand<DetailHomeWorkInfo>((e) =>
{
if(e == null) return;
//HomeWork =
});
Load();
StudentDatas = new ReadOnlyObservableCollection<StudentInfo>(studentDatas);
QuestionDatas = new ReadOnlyObservableCollection<QuestionData>(questionDatas);
ErrorSetDatas = new ReadOnlyObservableCollection<DetailErrorInfo>(errorSetDatas);
MenuBars = new ReadOnlyObservableCollection<MenuBar>(menuBars);
//CQDatas = new ReadOnlyObservableCollection<CursonQuestionsData>(cQDatas);
HomeWorkSet = new ObservableCollection<DetailHomeWorkSetInfo>(homeWorkSet);
this.regionManager = regionManager;
SaveAll();
}
private void SubmitHomeWork()
{
SelectedStudent.HomeWorkSet.Get(SelectedHomeWorkSet.Lesson).Questions.ForEach(x =>
{
x.Status = HomeWork.FirstOrDefault(hw => hw.PID == x.ID).Status;
});
}
private void RegionToDetailView()
{
if(selectedStudent == null) return;
ErrorSet = selectedStudent.ErrorSet.GetDetailErrorSetInfo();
HomeWorkSet = selectedStudent.HomeWorkSet.GetDetailHomeWorkSetList();
}
private void RegionToDetailCheckView()
{
if (selectedHomeWorkSet == null) return;
HomeWork = SelectedStudent.HomeWorkSet.GetDetailHomeWorkList(SelectedHomeWorkSet.Lesson);
}
private void RegionToStudents()
{
}
void CreateMenuBar()
{
menuBars.Add(new MenuBar() { Icon = "ForumPlusOutline", Title = "学生", NameSpace = "StudentsView" });
menuBars.Add(new MenuBar() { Icon = "CodeGreaterThanOrEqual", Title = "详情", NameSpace = "DetailView" });
menuBars.Add(new MenuBar() { Icon = "CodeGreaterThanOrEqual", Title = "题库", NameSpace = "QuestionsView" });
menuBars.Add(new MenuBar() { Icon = "CodeGreaterThanOrEqual", Title = "审批", NameSpace = "CheckView" });
//menuBars.Add(new MenuBar() { Icon = "CodeGreaterThanOrEqual", Title = "出题", NameSpace = "QuestionsView" });
menuBars.Add(new MenuBar() { Icon = "CodeGreaterThanOrEqual", Title = "出题", NameSpace = "DetailCheckView" });
}
private void Load()
{
StudentLib.Load();
QuestionLib.Load();
studentDatas = StudentLib.GetAllStudents();
questionDatas = QuestionLib.GetAllQuestion();
}
private void SaveAll()
{
StudentLib.Save();
QuestionLib.Save();
}
}
}