+175
-106
@@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using System.IO;
|
||||
using System.Security.Claims;
|
||||
|
||||
namespace _2021_backend.Pages.Sessions
|
||||
{
|
||||
@@ -124,159 +125,227 @@ namespace _2021_backend.Pages.Sessions
|
||||
|
||||
public async Task<IActionResult> OnPostArrangeAsync()
|
||||
{
|
||||
if (Utils.Arranger.Arrange(Context)) return Construct("");
|
||||
else return Construct("排班失败,无法满足条件");
|
||||
if (HttpContext.User.HasClaim((c) =>
|
||||
{
|
||||
return c.Type == ClaimTypes.Role&& (
|
||||
c.Value == "admin" || c.Value == "manager");
|
||||
})){
|
||||
if (Utils.Arranger.Arrange(Context)) return Construct("");
|
||||
else return Construct("排班失败,无法满足条件");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Construct("您无权进行此操作");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostClearAllAsync()
|
||||
{
|
||||
foreach(var s in Context.Students)
|
||||
|
||||
if (HttpContext.User.HasClaim((c) =>
|
||||
{
|
||||
s.InterviewTime = 0;
|
||||
s.Status = status.需调整时间;
|
||||
s.Timelist.Clear();
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach(var s in Context.Sessions)
|
||||
return c.Type == ClaimTypes.Role && (
|
||||
c.Value == "admin" || c.Value == "manager");
|
||||
}))
|
||||
{
|
||||
Context.Sessions.Remove(s);
|
||||
foreach (var s in Context.Students)
|
||||
{
|
||||
s.InterviewTime = 0;
|
||||
s.Status = status.需调整时间;
|
||||
s.Timelist.Clear();
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach (var s in Context.Sessions)
|
||||
{
|
||||
Context.Sessions.Remove(s);
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Construct("您无权进行此操作");
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostResetAllAsync()
|
||||
{
|
||||
var stus = Context.Students.ToList();
|
||||
foreach (var s in stus)
|
||||
if (HttpContext.User.HasClaim((c) =>
|
||||
{
|
||||
if(s.Status == status.已选时间)
|
||||
return c.Type == ClaimTypes.Role && (
|
||||
c.Value == "admin" || c.Value == "manager");
|
||||
}))
|
||||
{
|
||||
|
||||
|
||||
var stus = Context.Students.ToList();
|
||||
foreach (var s in stus)
|
||||
{
|
||||
s.InterviewTime = 0;
|
||||
s.Timelist.RemoveAll(it => !Context.Sessions.Any(k => k.Id == it));
|
||||
s.Timelist.Sort((int a, int b) =>
|
||||
if (s.Status == status.已选时间)
|
||||
{
|
||||
var x = Context.Sessions.Find(a);
|
||||
var y = Context.Sessions.Find(b);
|
||||
var k1 = x.Day.CompareTo(y.Day);
|
||||
var k2 = x.BeginTime.CompareTo(y.BeginTime);
|
||||
return k1 != 0 ? k1 : k2;
|
||||
});
|
||||
s.InterviewTime = 0;
|
||||
s.Timelist.RemoveAll(it => !Context.Sessions.Any(k => k.Id == it));
|
||||
s.Timelist.Sort((int a, int b) =>
|
||||
{
|
||||
var x = Context.Sessions.Find(a);
|
||||
var y = Context.Sessions.Find(b);
|
||||
var k1 = x.Day.CompareTo(y.Day);
|
||||
var k2 = x.BeginTime.CompareTo(y.BeginTime);
|
||||
return k1 != 0 ? k1 : k2;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Context.SaveChanges();
|
||||
foreach (var s in Context.Sessions)
|
||||
{
|
||||
s.Students.Clear();
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach (var s in Context.Sessions)
|
||||
else
|
||||
{
|
||||
s.Students.Clear();
|
||||
return Construct("您无权进行此操作");
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostSaveAsync()
|
||||
{
|
||||
var lst = Context.Sessions.ToList();
|
||||
var str = JsonSerializer.Serialize(lst);
|
||||
Console.WriteLine("Saving arrangement: " + str);
|
||||
if(!Directory.Exists("./saves")) Directory.CreateDirectory("./saves/");
|
||||
System.IO.File.WriteAllText($"./saves/{DateTime.Now.ToString("MM-dd-hh-mm-ss")}.txt", str);
|
||||
return Construct("");
|
||||
if (HttpContext.User.HasClaim((c) =>
|
||||
{
|
||||
return c.Type == ClaimTypes.Role && (
|
||||
c.Value == "admin" || c.Value == "manager");
|
||||
}))
|
||||
{
|
||||
var lst = Context.Sessions.ToList();
|
||||
var str = JsonSerializer.Serialize(lst);
|
||||
Console.WriteLine("Saving arrangement: " + str);
|
||||
if (!Directory.Exists("./saves")) Directory.CreateDirectory("./saves/");
|
||||
System.IO.File.WriteAllText($"./saves/{DateTime.Now.ToString("MM-dd-hh-mm-ss")}.txt", str);
|
||||
return Construct("");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Construct("您无权进行此操作");
|
||||
}
|
||||
}
|
||||
public async Task<IActionResult> OnPostTidyAsync()
|
||||
{
|
||||
var stus = Context.Students.ToList();
|
||||
var sess = Context.Sessions.ToList();
|
||||
foreach(var i in stus)
|
||||
if (HttpContext.User.HasClaim((c) =>
|
||||
{
|
||||
var tm = i.Timelist;
|
||||
var ntm = new List<Session>();
|
||||
foreach(var j in tm)
|
||||
return c.Type == ClaimTypes.Role && (
|
||||
c.Value == "admin" || c.Value == "manager");
|
||||
}))
|
||||
{
|
||||
var stus = Context.Students.ToList();
|
||||
var sess = Context.Sessions.ToList();
|
||||
foreach (var i in stus)
|
||||
{
|
||||
var k = sess.Find(it => it.Id == j);
|
||||
ntm.Add(k);
|
||||
}
|
||||
ntm.Sort((Session a,Session b) =>
|
||||
{
|
||||
var x = a.Day.CompareTo(b.Day);
|
||||
var y = a.BeginTime.CompareTo(b.BeginTime);
|
||||
return x != 0 ? x : y;
|
||||
});
|
||||
List<int> nl = new List<int>();
|
||||
foreach(var j in ntm)
|
||||
{
|
||||
if(i.Status != status.不通过 && i.Status != status.通过 && i.Status != status.已确认时间)
|
||||
var tm = i.Timelist;
|
||||
var ntm = new List<Session>();
|
||||
foreach (var j in tm)
|
||||
{
|
||||
if (j.Day.Date.Add(j.BeginTime.TimeOfDay).CompareTo(DateTime.Now) < 0 || (j.Students.Count >= j.Capacity && !j.Students.Any(k => k ==i.Id) )) continue;
|
||||
nl.Add(j.Id);
|
||||
var k = sess.Find(it => it.Id == j);
|
||||
ntm.Add(k);
|
||||
}
|
||||
else
|
||||
ntm.Sort((Session a, Session b) =>
|
||||
{
|
||||
nl.Add(j.Id);
|
||||
var x = a.Day.CompareTo(b.Day);
|
||||
var y = a.BeginTime.CompareTo(b.BeginTime);
|
||||
return x != 0 ? x : y;
|
||||
});
|
||||
List<int> nl = new List<int>();
|
||||
foreach (var j in ntm)
|
||||
{
|
||||
if (i.Status != status.不通过 && i.Status != status.通过 && i.Status != status.已确认时间)
|
||||
{
|
||||
if (j.Day.Date.Add(j.BeginTime.TimeOfDay).CompareTo(DateTime.Now) < 0 || (j.Students.Count >= j.Capacity && !j.Students.Any(k => k == i.Id))) continue;
|
||||
nl.Add(j.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
nl.Add(j.Id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
i.Timelist = nl;
|
||||
}
|
||||
i.Timelist = nl;
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Construct("您无权进行此操作");
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
|
||||
|
||||
public async Task<IActionResult> OnPostLoadAsync()
|
||||
{
|
||||
var str = "";
|
||||
if (HttpContext.User.HasClaim((c) =>
|
||||
{
|
||||
return c.Type == ClaimTypes.Role && (
|
||||
c.Value == "admin" || c.Value == "manager");
|
||||
}))
|
||||
{
|
||||
var str = "";
|
||||
|
||||
List<Session> loads = new List<Session>();
|
||||
if (!string.IsNullOrEmpty(savename)) str = System.IO.File.ReadAllText(savename);
|
||||
loads = JsonSerializer.Deserialize<List<Session>>(str);
|
||||
List<Session> loads = new List<Session>();
|
||||
if (!string.IsNullOrEmpty(savename)) str = System.IO.File.ReadAllText(savename);
|
||||
loads = JsonSerializer.Deserialize<List<Session>>(str);
|
||||
|
||||
var stus = Context.Students.ToList();
|
||||
foreach (var s in stus)
|
||||
{
|
||||
if (s.Status == status.已选时间)
|
||||
var stus = Context.Students.ToList();
|
||||
foreach (var s in stus)
|
||||
{
|
||||
s.InterviewTime = 0;
|
||||
s.Timelist.RemoveAll(it => !Context.Sessions.Any(k => k.Id == it));
|
||||
s.Timelist.Sort((int a, int b) =>
|
||||
if (s.Status == status.已选时间)
|
||||
{
|
||||
var x = Context.Sessions.Find(a);
|
||||
var y = Context.Sessions.Find(b);
|
||||
var k1 = x.Day.CompareTo(y.Day);
|
||||
var k2 = x.BeginTime.CompareTo(y.BeginTime);
|
||||
return k1 != 0 ? k1 : k2;
|
||||
});
|
||||
}
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach (var s in Context.Sessions)
|
||||
{
|
||||
s.Students.Clear();
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach(var item in loads)
|
||||
{
|
||||
Session s = Context.Sessions.Find(item.Id);
|
||||
if(s != null)
|
||||
{
|
||||
s.BeginTime = item.BeginTime;
|
||||
s.Day = item.Day;
|
||||
s.Capacity = item.Capacity;
|
||||
s.SendSMS = item.SendSMS;
|
||||
s.Chiefs = item.Chiefs;
|
||||
s.Students = new List<int>();
|
||||
foreach(var s2 in item.Students)
|
||||
{
|
||||
if (Context.Students.Any(k => k.Id == s2))
|
||||
s.InterviewTime = 0;
|
||||
s.Timelist.RemoveAll(it => !Context.Sessions.Any(k => k.Id == it));
|
||||
s.Timelist.Sort((int a, int b) =>
|
||||
{
|
||||
Context.Students.Find(s2).InterviewTime = item.Id;
|
||||
s.Students.Add(s2);
|
||||
var x = Context.Sessions.Find(a);
|
||||
var y = Context.Sessions.Find(b);
|
||||
var k1 = x.Day.CompareTo(y.Day);
|
||||
var k2 = x.BeginTime.CompareTo(y.BeginTime);
|
||||
return k1 != 0 ? k1 : k2;
|
||||
});
|
||||
}
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach (var s in Context.Sessions)
|
||||
{
|
||||
s.Students.Clear();
|
||||
}
|
||||
Context.SaveChanges();
|
||||
foreach (var item in loads)
|
||||
{
|
||||
Session s = Context.Sessions.Find(item.Id);
|
||||
if (s != null)
|
||||
{
|
||||
s.BeginTime = item.BeginTime;
|
||||
s.Day = item.Day;
|
||||
s.Capacity = item.Capacity;
|
||||
s.SendSMS = item.SendSMS;
|
||||
s.Chiefs = item.Chiefs;
|
||||
s.Students = new List<int>();
|
||||
foreach (var s2 in item.Students)
|
||||
{
|
||||
if (Context.Students.Any(k => k.Id == s2))
|
||||
{
|
||||
Context.Students.Find(s2).InterviewTime = item.Id;
|
||||
s.Students.Add(s2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Construct("您无权进行此操作");
|
||||
}
|
||||
Context.SaveChanges();
|
||||
return Construct("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user