296 lines
7.0 KiB
C#
296 lines
7.0 KiB
C#
using DryIoc.ImTools;
|
|
using LiveCharts;
|
|
using MySqlX.XDevAPI;
|
|
using StudentManager.Data;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.Json.Serialization;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace StudentManager.Common
|
|
{
|
|
public class DetailQuestionBase
|
|
{
|
|
public QuestionData QuestionData { get; set; } = new QuestionData();
|
|
public bool Status { get; set; } = false;
|
|
}
|
|
|
|
public class DetailHomeWorkInfo : BindableBase
|
|
{
|
|
//public DetailQuestionBase QuestionData { get; set; } = new DetailQuestionBase();
|
|
public QuestionData QuestionData { get; set; } = new QuestionData();
|
|
//public DateTime DateTime { get; set; } = DateTime.Now;
|
|
//public int Lesson { get; set; } = 0;
|
|
public bool Status { get; set; } = false;
|
|
|
|
//public int TotalCount { get; set; } = 0;
|
|
//public int ErrorCount { get; set; } = 0;
|
|
//public int CorrectCount { get; set; } = 0;
|
|
|
|
public int PID { get; set; } = 0;
|
|
}
|
|
|
|
public class HomeWork
|
|
{
|
|
public uint Lesson { get; set; } = 0;
|
|
public bool Status { get; set; } = false;
|
|
public DateTime DateTime { get; set; } = DateTime.Now;
|
|
public List<QuestionBase> Questions { get; set; } = new List<QuestionBase>();
|
|
|
|
|
|
public int TotalCount { get{return Questions.Count;} }
|
|
public int ErrorCount { get; set; } = 0;
|
|
public int CorrectCount { get; set; } = 0;
|
|
|
|
|
|
public ObservableCollection<DetailHomeWorkInfo> GetDetailHomeWorkList()
|
|
{
|
|
ObservableCollection<DetailHomeWorkInfo> list = new ObservableCollection<DetailHomeWorkInfo>();
|
|
foreach (var item in Questions)
|
|
{
|
|
list.Add(new DetailHomeWorkInfo
|
|
{
|
|
//QuestionData = {
|
|
// QuestionData = QuestionLib.Get(item.ID),
|
|
// Status = item.Status },
|
|
QuestionData = QuestionLib.Get(item.ID),
|
|
Status = Status,
|
|
//Lesson = Lesson,
|
|
//DateTime = DateTime,
|
|
//TotalCount = TotalCount,
|
|
//ErrorCount = ErrorCount,
|
|
//CorrectCount = CorrectCount,
|
|
PID = item.ID
|
|
});
|
|
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public void UpdateData(bool FirstAdd = false)
|
|
{
|
|
CorrectCount = 0;
|
|
ErrorCount = 0;
|
|
if(FirstAdd) return;
|
|
foreach (var item in Questions)
|
|
{
|
|
if (item.Status == true) CorrectCount++;
|
|
else ErrorCount++;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void AddHomeWork(QuestionBase workInfo)
|
|
{
|
|
Questions.Add(workInfo);
|
|
UpdateData();
|
|
}
|
|
|
|
public void AddHomeWork(int id)
|
|
{
|
|
Questions.Add(new QuestionBase { ID = id });
|
|
}
|
|
|
|
public void RemoveHomeWork(QuestionBase workInfo)
|
|
{
|
|
Questions.Remove(workInfo);
|
|
UpdateData();
|
|
}
|
|
|
|
public void Append(HomeWork homeWork)
|
|
{
|
|
foreach (var item in homeWork.Questions)
|
|
{
|
|
Questions.Add(item);
|
|
}
|
|
UpdateData();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public class DetailHomeWorkSetInfo
|
|
{
|
|
public uint Lesson { get; set; } = 0;
|
|
public int TotalCount { get; set; } = 0;
|
|
|
|
|
|
public int ErrorCount { get; set; } = 0;
|
|
public int CorrectCount { get; set; } = 0;
|
|
public bool Status { get; set; } = false;
|
|
public DateTime DateTime { get; set; } = DateTime.Now;
|
|
|
|
}
|
|
|
|
public class HomeWorkSet
|
|
{
|
|
[JsonInclude]
|
|
private Dictionary<uint, HomeWork> HomeWorks { get; set; } = new Dictionary<uint, HomeWork>();
|
|
public int TotalSetCount { get; set; } = 0;
|
|
public int TotalQuestionCount { get; set; } = 0;
|
|
public int TotalErrorQuestionCount { get; set; } = 0;
|
|
public int TotalCorrectQuestionCount { get; set; } = 0;
|
|
public int TotalErrorQuestionRate { get; set; } = 0;
|
|
|
|
[JsonIgnore]
|
|
public List<string> Lessons { get; set; } = new List<string>();
|
|
[JsonIgnore]
|
|
public ChartValues<double> ErrorCounts { get; set; } = new ChartValues<double>();
|
|
[JsonIgnore]
|
|
public ChartValues<double> CorrectCounts { get; set; } = new ChartValues<double>();
|
|
|
|
|
|
public void UpdateDataView()
|
|
{
|
|
if(ErrorCounts.Count == 0)
|
|
{
|
|
foreach (var item in HomeWorks)
|
|
{
|
|
Lessons.Add(item.Key.ToString());
|
|
ErrorCounts.Add(item.Value.ErrorCount);
|
|
CorrectCounts.Add(item.Value.CorrectCount);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public void UpdateDate()
|
|
{
|
|
TotalSetCount = HomeWorks.Count;
|
|
TotalQuestionCount = 0;
|
|
TotalErrorQuestionCount = 0;
|
|
TotalCorrectQuestionCount = 0;
|
|
|
|
Lessons.Clear();
|
|
ErrorCounts.Clear();
|
|
CorrectCounts.Clear();
|
|
|
|
foreach (var item in HomeWorks)
|
|
{
|
|
TotalQuestionCount += item.Value.TotalCount;
|
|
TotalErrorQuestionCount += item.Value.ErrorCount;
|
|
TotalCorrectQuestionCount += item.Value.CorrectCount;
|
|
|
|
Lessons.Add(item.Key.ToString());
|
|
ErrorCounts.Add(item.Value.ErrorCount);
|
|
CorrectCounts.Add(item.Value.CorrectCount);
|
|
}
|
|
TotalErrorQuestionRate = TotalQuestionCount == 0 ? 0 : TotalErrorQuestionCount / TotalQuestionCount;
|
|
}
|
|
|
|
public bool Contain(uint id)
|
|
{
|
|
return HomeWorks.ContainsKey(id);
|
|
}
|
|
|
|
public void AddHomeWork(HomeWork homeWork)
|
|
{
|
|
HomeWorks.Add(homeWork.Lesson, homeWork);
|
|
|
|
}
|
|
|
|
public ObservableCollection<DetailHomeWorkInfo> GetDetailHomeWorkList(uint lesson)
|
|
{
|
|
ObservableCollection<DetailHomeWorkInfo> list = new ObservableCollection<DetailHomeWorkInfo>();
|
|
foreach (var item in HomeWorks[lesson].Questions)
|
|
{
|
|
list.Add(new DetailHomeWorkInfo
|
|
{
|
|
QuestionData = QuestionLib.Get(item.ID),
|
|
Status = item.Status,
|
|
PID = item.ID
|
|
});
|
|
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public ObservableCollection<DetailHomeWorkSetInfo> GetDetailHomeWorkSetList()
|
|
{
|
|
ObservableCollection<DetailHomeWorkSetInfo> list = new ObservableCollection<DetailHomeWorkSetInfo>();
|
|
foreach (var item in HomeWorks)
|
|
{
|
|
list.Add(new DetailHomeWorkSetInfo
|
|
{
|
|
|
|
Status = item.Value.Status,
|
|
Lesson = item.Value.Lesson,
|
|
DateTime = item.Value.DateTime,
|
|
TotalCount = item.Value.TotalCount,
|
|
ErrorCount = item.Value.ErrorCount,
|
|
CorrectCount = item.Value.CorrectCount
|
|
});
|
|
|
|
}
|
|
return list;
|
|
}
|
|
|
|
|
|
public void RemoveHomeWork(HomeWork homeWork)
|
|
{
|
|
HomeWorks.Remove(homeWork.Lesson);
|
|
UpdateDate();
|
|
}
|
|
|
|
public HomeWork Get(uint cursonId)
|
|
{
|
|
if (HomeWorks.ContainsKey(cursonId)) return HomeWorks[cursonId];
|
|
return null;
|
|
}
|
|
|
|
public HomeWork GetLast()
|
|
{
|
|
return HomeWorks[(uint)TotalSetCount];
|
|
}
|
|
|
|
public List<HomeWork> GetAll()
|
|
{
|
|
return HomeWorks.Values.ToList();
|
|
}
|
|
|
|
public ObservableCollection<HomeWork> GetAllByColl()
|
|
{
|
|
ObservableCollection<HomeWork> works = new ObservableCollection<HomeWork>();
|
|
|
|
foreach (var item in HomeWorks)
|
|
{
|
|
works.Add(item.Value);
|
|
}
|
|
return works;
|
|
}
|
|
|
|
public void FreshAllHomeWork(long id)
|
|
{
|
|
HomeWorks.Clear();
|
|
|
|
SQLHelper.Instance.Query<CursonQuestionsData>(id).ForEach(x =>
|
|
{
|
|
List<QuestionBase> Questions = new List<QuestionBase>();
|
|
x.ProblemIDS.ForEach(y => Questions.Add(new QuestionBase { ID = y, Status = x.CorrectIDS.Contains(y) }));
|
|
HomeWorks.Add(x.Lesson, new HomeWork
|
|
{
|
|
Lesson = x.Lesson,
|
|
CorrectCount = x.CorrectCount,
|
|
ErrorCount = x.Status == 1 ? x.TotalCount - x.CorrectCount : 0,
|
|
DateTime = x.DateTime,
|
|
Questions = Questions,
|
|
Status = x.Status == 1
|
|
});
|
|
});
|
|
|
|
UpdateDate();
|
|
}
|
|
|
|
internal void DeleteHomework(uint lesson)
|
|
{
|
|
HomeWorks.Remove(lesson);
|
|
UpdateDate();
|
|
}
|
|
}
|
|
|
|
}
|