|
@@ -77,48 +77,107 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
switch (true)
|
|
|
{
|
|
|
case bool when $"{option}".Equals("insert", StringComparison.OrdinalIgnoreCase) || $"{option}".Equals("update", StringComparison.OrdinalIgnoreCase):
|
|
|
- if (!request.TryGetProperty("course", out JsonElement _course)) {
|
|
|
- return BadRequest();
|
|
|
- }
|
|
|
- CourseBase courseBase = _course.ToObject<CourseBase>();
|
|
|
- courseBase.pk = "CourseBase";
|
|
|
- if (string.IsNullOrWhiteSpace(courseBase.id))
|
|
|
- {
|
|
|
- courseBase.id = Guid.NewGuid().ToString();
|
|
|
- }
|
|
|
- string tbname = "";
|
|
|
- if (courseBase.scope.Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- tbname = Constant.School;
|
|
|
- courseBase.school = school;
|
|
|
- courseBase.creatorId = id;
|
|
|
- courseBase.code = $"CourseBase-{school}";
|
|
|
- }
|
|
|
- else
|
|
|
{
|
|
|
- tbname = Constant.Teacher;
|
|
|
- courseBase.creatorId = id;
|
|
|
- courseBase.code = $"CourseBase-{id}";
|
|
|
+ if (!request.TryGetProperty("course", out JsonElement _course))
|
|
|
+ {
|
|
|
+ return BadRequest();
|
|
|
+ }
|
|
|
+ CourseBase courseBase = _course.ToObject<CourseBase>();
|
|
|
+ courseBase.pk = "CourseBase";
|
|
|
+ if (string.IsNullOrWhiteSpace(courseBase.id))
|
|
|
+ {
|
|
|
+ courseBase.id = Guid.NewGuid().ToString();
|
|
|
+ }
|
|
|
+ string tbname = "";
|
|
|
+ if (courseBase.scope.Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
|
+ {
|
|
|
+ tbname = Constant.School;
|
|
|
+ courseBase.school = school;
|
|
|
+ courseBase.creatorId = id;
|
|
|
+ courseBase.code = $"CourseBase-{school}";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ tbname = Constant.Teacher;
|
|
|
+ courseBase.creatorId = id;
|
|
|
+ courseBase.code = $"CourseBase-{id}";
|
|
|
+ }
|
|
|
+ var response = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemStreamAsync(courseBase.id, new PartitionKey(courseBase.code));
|
|
|
+ if (response.Status == 200)
|
|
|
+ {
|
|
|
+ await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync(courseBase, courseBase.id, new PartitionKey(courseBase.code));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync(courseBase, new PartitionKey(courseBase.code));
|
|
|
+ }
|
|
|
+ return Ok(new { course = courseBase });
|
|
|
}
|
|
|
- var response = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemStreamAsync(courseBase.id, new PartitionKey(courseBase.code));
|
|
|
- if (response.Status == 200)
|
|
|
+ case bool when $"{option}".Equals("import", StringComparison.OrdinalIgnoreCase) && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
|
- await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync(courseBase,courseBase.id, new PartitionKey(courseBase.code));
|
|
|
- }
|
|
|
- else {
|
|
|
- await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync(courseBase, new PartitionKey(courseBase.code));
|
|
|
+ if (!request.TryGetProperty("courseBaseImports", out JsonElement _courseBaseImports)) return BadRequest();
|
|
|
+ List<CourseBaseImport> courseBaseImports = _courseBaseImports.ToObject<List<CourseBaseImport>>();
|
|
|
+ foreach (var courseBaseImport in courseBaseImports)
|
|
|
+ {
|
|
|
+ courseBaseImport.courseBase.pk = "CourseBase";
|
|
|
+ courseBaseImport.courseBase.scope = "school";
|
|
|
+ courseBaseImport.courseBase.school = school;
|
|
|
+ courseBaseImport.courseBase.creatorId = id;
|
|
|
+ courseBaseImport.courseBase.code = $"CourseBase-{school}";
|
|
|
+ StringBuilder sql = new StringBuilder(" select top 1 value c from c ");
|
|
|
+ if (!string.IsNullOrWhiteSpace(courseBaseImport.courseBase.name)
|
|
|
+ && !string.IsNullOrWhiteSpace(courseBaseImport.courseBase?.period?.id)
|
|
|
+ && !string.IsNullOrWhiteSpace(courseBaseImport.courseBase?.subject?.id))
|
|
|
+ {
|
|
|
+ sql.Append($" where c.name ='{courseBaseImport.courseBase.name}' and c.period.id='{courseBaseImport.courseBase.period.id}' and c.subject.id='{courseBaseImport.courseBase.subject.id}' ");
|
|
|
+ if (!string.IsNullOrWhiteSpace(courseBaseImport.courseBase?.major?.id))
|
|
|
+ {
|
|
|
+ sql.Append($" and c.major.id='{courseBaseImport.courseBase.major.id}'");
|
|
|
+ }
|
|
|
+
|
|
|
+ CourseBase courseBaseDb = null;
|
|
|
+ await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School)
|
|
|
+ .GetItemQueryIterator<CourseBase>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey(courseBaseImport.courseBase.code) }))
|
|
|
+ {
|
|
|
+ courseBaseDb = item;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (courseBaseDb != null)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrWhiteSpace(courseBaseImport.courseBase?.desc)) {
|
|
|
+ courseBaseDb.desc=courseBaseImport.courseBase.desc;
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrWhiteSpace(courseBaseImport.courseBase?.color))
|
|
|
+ {
|
|
|
+ courseBaseDb.color = courseBaseImport.courseBase.color;
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrWhiteSpace(courseBaseImport.courseBase?.no))
|
|
|
+ {
|
|
|
+ courseBaseDb.no = courseBaseImport.courseBase.no;
|
|
|
+ }
|
|
|
+ if (courseBaseImport.courseBase?.gradeId != -1) {
|
|
|
+ courseBaseDb.gradeId = courseBaseImport.courseBase.gradeId;
|
|
|
+ }
|
|
|
+ courseBaseDb = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(courseBaseDb, courseBaseDb.id, new PartitionKey(courseBaseDb.code));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ courseBaseImport.courseBase.id= Guid.NewGuid().ToString();
|
|
|
+ courseBaseDb = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(courseBaseImport.courseBase, new PartitionKey(courseBaseImport.courseBase.code));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
- return Ok(new { course = courseBase });
|
|
|
- case bool when $"{option}".Equals("import", StringComparison.OrdinalIgnoreCase) && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase):
|
|
|
- if (!request.TryGetProperty("courses", out JsonElement _courses)) return BadRequest();
|
|
|
- List<CourseBase> courses = _courses.ToObject<List<CourseBase>>();
|
|
|
- break;
|
|
|
+
|
|
|
}
|
|
|
} catch (Exception ex) {
|
|
|
}
|
|
|
return Ok();
|
|
|
}
|
|
|
}
|
|
|
- public class CourseBaseImport {
|
|
|
+ public class CourseBaseImport {
|
|
|
+ public CourseBase courseBase { get; set; } = new CourseBase();
|
|
|
+ public List<CourseTask> courseTasks { get; set; } = new List<CourseTask>();
|
|
|
}
|
|
|
}
|