|
@@ -76,11 +76,11 @@ namespace TEAMModelOS.Controllers.Both
|
|
{
|
|
{
|
|
case bool when $"{grant_type}".Equals("list", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("list", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
- if ( !request.TryGetProperty("scope", out JsonElement _scope) || !request.TryGetProperty("code", out JsonElement _code))
|
|
|
|
|
|
+ if ( !request.TryGetProperty("code", out JsonElement _code))
|
|
{
|
|
{
|
|
return BadRequest();
|
|
return BadRequest();
|
|
}
|
|
}
|
|
- string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase)?Constant.School:Constant.Teacher;
|
|
|
|
|
|
+ string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase)?Constant.School:Constant.Teacher;
|
|
string code = $"CourseBase-{_code}";
|
|
string code = $"CourseBase-{_code}";
|
|
string baseSql = $"select value c from c ";
|
|
string baseSql = $"select value c from c ";
|
|
List<CourseBase> courseBases = new List<CourseBase>();
|
|
List<CourseBase> courseBases = new List<CourseBase>();
|
|
@@ -93,11 +93,11 @@ namespace TEAMModelOS.Controllers.Both
|
|
}
|
|
}
|
|
case bool when $"{grant_type}".Equals("delete", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("delete", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
- if (!request.TryGetProperty("id", out JsonElement _id) || !request.TryGetProperty("scope", out JsonElement _scope) || !request.TryGetProperty("code", out JsonElement _code))
|
|
|
|
|
|
+ if (!request.TryGetProperty("id", out JsonElement _id) || !request.TryGetProperty("code", out JsonElement _code))
|
|
{
|
|
{
|
|
return BadRequest();
|
|
return BadRequest();
|
|
}
|
|
}
|
|
- string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
|
|
|
|
+ string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
Azure.Response response= await client.GetContainer(Constant.TEAMModelOS, tbname).DeleteItemStreamAsync(_id.ToString(), new PartitionKey($"CourseBase-{_code}"));
|
|
Azure.Response response= await client.GetContainer(Constant.TEAMModelOS, tbname).DeleteItemStreamAsync(_id.ToString(), new PartitionKey($"CourseBase-{_code}"));
|
|
//需要联动删除排课
|
|
//需要联动删除排课
|
|
string taskCode = $"CourseTask-{_code}";
|
|
string taskCode = $"CourseTask-{_code}";
|
|
@@ -114,6 +114,63 @@ namespace TEAMModelOS.Controllers.Both
|
|
}
|
|
}
|
|
return Ok(new {code= response .Status});
|
|
return Ok(new {code= response .Status});
|
|
}
|
|
}
|
|
|
|
+ case bool when $"{grant_type}".Equals("import-base", StringComparison.OrdinalIgnoreCase) && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase):
|
|
|
|
+ {
|
|
|
|
+ if (!request.TryGetProperty("courses", out JsonElement _courses))
|
|
|
|
+ {
|
|
|
|
+ return BadRequest();
|
|
|
|
+ }
|
|
|
|
+ if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
|
|
|
|
+ List<CourseBase> courseBases = _courses.ToObject<List<CourseBase>>();
|
|
|
|
+ //1.检查导入的课程名称是否有效
|
|
|
|
+ StringBuilder sqlName = new StringBuilder(" select value c from c ");
|
|
|
|
+ sqlName.Append($" where c.name in {string.Join(",",courseBases.Select(z=>$"'{z.name}'"))} and c.period.id='{_periodId}' ");
|
|
|
|
+ string tbname = Constant.School;
|
|
|
|
+ List<CourseBase> courseBasesDB = new List<CourseBase>();
|
|
|
|
+ await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, tbname)
|
|
|
|
+ .GetItemQueryIterator<CourseBase>(queryText: sqlName.ToString(), requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"CourseBase-{school}") }))
|
|
|
|
+ {
|
|
|
|
+ courseBasesDB.Add(item);
|
|
|
|
+ }
|
|
|
|
+ School schoolBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
|
+ var period = schoolBase.period.Find(x => x.id.Equals($"{_periodId}"));
|
|
|
|
+ if (period != null) {
|
|
|
|
+ foreach (var item in courseBases)
|
|
|
|
+ {
|
|
|
|
+ item.pk = "CourseBase";
|
|
|
|
+ if (string.IsNullOrWhiteSpace(item.id))
|
|
|
|
+ {
|
|
|
|
+ item.id = Guid.NewGuid().ToString();
|
|
|
|
+ }
|
|
|
|
+ item.scope = "school";
|
|
|
|
+ item.school = school;
|
|
|
|
+ item.creatorId = tmdid;
|
|
|
|
+ item.code = $"CourseBase-{school}";
|
|
|
|
+ item.period = new IdName { id = period.id, name = period.name };
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(item.subject?.id))
|
|
|
|
+ {
|
|
|
|
+ var subject = period.subjects.Find(x => x.id.Equals(item.subject.id));
|
|
|
|
+ if (subject != null)
|
|
|
|
+ {
|
|
|
|
+ item.subject.name = subject.name;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ }
|
|
|
|
+ var dbcoursebase = courseBasesDB.Find(x => x.name.Equals(item.name));
|
|
|
|
+ if (dbcoursebase != null)
|
|
|
|
+ {
|
|
|
|
+ item.id = dbcoursebase.id;
|
|
|
|
+ item.major = item.major == null ? dbcoursebase.major : item.major;
|
|
|
|
+ item.desc = string.IsNullOrWhiteSpace(item.desc) ? dbcoursebase.desc : item.desc;
|
|
|
|
+ item.color = string.IsNullOrWhiteSpace(item.color) ? dbcoursebase.color : item.color;
|
|
|
|
+ item.no = string.IsNullOrWhiteSpace(item.no) ? dbcoursebase.no : item.no;
|
|
|
|
+ item.grades = !item.grades.Any() ? dbcoursebase.grades : item.grades;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return Ok(new { course = courseBases });
|
|
|
|
+ }
|
|
case bool when $"{grant_type}".Equals("upsert", StringComparison.OrdinalIgnoreCase) :
|
|
case bool when $"{grant_type}".Equals("upsert", StringComparison.OrdinalIgnoreCase) :
|
|
{
|
|
{
|
|
if (!request.TryGetProperty("course", out JsonElement _course))
|
|
if (!request.TryGetProperty("course", out JsonElement _course))
|
|
@@ -127,30 +184,53 @@ namespace TEAMModelOS.Controllers.Both
|
|
courseBase.id = Guid.NewGuid().ToString();
|
|
courseBase.id = Guid.NewGuid().ToString();
|
|
}
|
|
}
|
|
string tbname = $"{courseBase.scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
string tbname = $"{courseBase.scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
|
|
+ //1.检查导入的课程名称是否有效
|
|
|
|
+ StringBuilder sqlName = new StringBuilder(" select value c from c ");
|
|
|
|
+ sqlName.Append($" where c.name ='{courseBase.name}' ");
|
|
if (courseBase.scope.Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
if (courseBase.scope.Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
{
|
|
courseBase.school = school;
|
|
courseBase.school = school;
|
|
courseBase.creatorId = tmdid;
|
|
courseBase.creatorId = tmdid;
|
|
courseBase.code = $"CourseBase-{school}";
|
|
courseBase.code = $"CourseBase-{school}";
|
|
|
|
+ if (string.IsNullOrWhiteSpace(courseBase.subject?.id) || !courseBase.grades.Any()) {
|
|
|
|
+ return BadRequest();
|
|
|
|
+ }
|
|
|
|
+ if (string.IsNullOrWhiteSpace(courseBase.period?.id))
|
|
|
|
+ {
|
|
|
|
+ return BadRequest();
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ sqlName.Append($" and c.period.id='{courseBase.period.id}' ");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
courseBase.creatorId = tmdid;
|
|
courseBase.creatorId = tmdid;
|
|
courseBase.code = $"CourseBase-{tmdid}";
|
|
courseBase.code = $"CourseBase-{tmdid}";
|
|
}
|
|
}
|
|
|
|
+ List<CourseBase> courseBases = new List<CourseBase>();
|
|
|
|
+ await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, tbname)
|
|
|
|
+ .GetItemQueryIterator<CourseBase>(queryText: sqlName.ToString(), requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey(courseBase.code) }))
|
|
|
|
+ {
|
|
|
|
+ if (courseBase.scope.Equals(item.scope))
|
|
|
|
+ {
|
|
|
|
+ //不是同一条数据,但是名字相同,则判定名字重复。
|
|
|
|
+ if (!item.id.Equals(courseBase.id) && item.name.Equals(courseBase.name))
|
|
|
|
+ {
|
|
|
|
+ return Ok(new { code = 409, course = courseBase });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
await client.GetContainer(Constant.TEAMModelOS, tbname).UpsertItemAsync(courseBase, new PartitionKey(courseBase.code));
|
|
await client.GetContainer(Constant.TEAMModelOS, tbname).UpsertItemAsync(courseBase, new PartitionKey(courseBase.code));
|
|
- return Ok(new { course = courseBase });
|
|
|
|
|
|
+ return Ok(new {code =200, course = courseBase });
|
|
}
|
|
}
|
|
case bool when $"{grant_type}".Equals("read-task", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("read-task", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
- if (!request.TryGetProperty("scope", out JsonElement _scope))
|
|
|
|
- {
|
|
|
|
- return BadRequest();
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
if (!request.TryGetProperty("courseId", out JsonElement _courseId)) return BadRequest();
|
|
if (!request.TryGetProperty("courseId", out JsonElement _courseId)) return BadRequest();
|
|
|
|
|
|
- string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
|
|
- if (_scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
|
+ string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
|
|
+ if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
{
|
|
|
|
|
|
if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
|
|
if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
|
|
@@ -226,13 +306,13 @@ namespace TEAMModelOS.Controllers.Both
|
|
|| $"{grant_type}".Equals("change-scheduleTask", StringComparison.OrdinalIgnoreCase)
|
|
|| $"{grant_type}".Equals("change-scheduleTask", StringComparison.OrdinalIgnoreCase)
|
|
|| $"{grant_type}".Equals("delete-scheduleTask", StringComparison.OrdinalIgnoreCase):
|
|
|| $"{grant_type}".Equals("delete-scheduleTask", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
- if ( !request.TryGetProperty("scope", out JsonElement _scope)|| !request.TryGetProperty("datas", out JsonElement _datas))
|
|
|
|
|
|
+ if ( !request.TryGetProperty("datas", out JsonElement _datas))
|
|
{
|
|
{
|
|
return BadRequest();
|
|
return BadRequest();
|
|
}
|
|
}
|
|
- string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
|
|
|
|
+ string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
List<CourseTaskChanged> datas = _datas.ToObject<List<CourseTaskChanged>>();
|
|
List<CourseTaskChanged> datas = _datas.ToObject<List<CourseTaskChanged>>();
|
|
- if (_scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
|
+ if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
{
|
|
if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
|
|
if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
|
|
//获取相关的名单
|
|
//获取相关的名单
|
|
@@ -487,7 +567,7 @@ namespace TEAMModelOS.Controllers.Both
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//按照模板导入进行数据转换并且进行检查
|
|
//按照模板导入进行数据转换并且进行检查
|
|
- case bool when ($"{grant_type}".Equals("import-check") && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase)):
|
|
|
|
|
|
+ case bool when $"{grant_type}".Equals("import-check") && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
//检查完成,生成一个检查通过的token+检查结果(pass,warn,error), 在正式导入的时候,只需要检查token是否存在则进行数据保存。 以确保每次被导入的数据都是检查通过的。
|
|
//检查完成,生成一个检查通过的token+检查结果(pass,warn,error), 在正式导入的时候,只需要检查token是否存在则进行数据保存。 以确保每次被导入的数据都是检查通过的。
|
|
//并标记相关检查状态对于的具体数值。
|
|
//并标记相关检查状态对于的具体数值。
|