|
@@ -15,13 +15,14 @@ using TEAMModelOS.SDK.Models;
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
using TEAMModelOS.SDK.Models.Cosmos.Common;
|
|
|
using Azure.Cosmos;
|
|
|
+using TEAMModelOS.Services.Common;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
|
//[Authorize(Roles = "IES5")]
|
|
|
- [Route("syllabus")]
|
|
|
+ [Route("common/syllabus")]
|
|
|
[ApiController]
|
|
|
//[Authorize]
|
|
|
public class SyllabusController : ControllerBase
|
|
@@ -224,14 +225,14 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
List<Tnode> nodes = new List<Tnode>();
|
|
|
Syllabus syllabus = new Syllabus();
|
|
|
- TreeToList(request.trees, nodes);
|
|
|
+ SyllabusService.TreeToList(request.trees, nodes);
|
|
|
syllabus.children = nodes;
|
|
|
syllabus.id = !string.IsNullOrEmpty(request.id) ? request.id : Guid.NewGuid().ToString() ;
|
|
|
syllabus.code =$"Syllabus-{request.code}" ;
|
|
|
syllabus.pk = "Syllabus";
|
|
|
syllabus.ttl = -1;
|
|
|
await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "School").UpsertItemAsync<Syllabus>(syllabus,new Azure.Cosmos.PartitionKey(syllabus.code));
|
|
|
- List<SyllabusTree> trees = ListToTree(nodes);
|
|
|
+ List<SyllabusTree> trees = SyllabusService. ListToTree(nodes);
|
|
|
request.trees = trees;
|
|
|
return request;
|
|
|
}
|
|
@@ -249,59 +250,7 @@ namespace TEAMModelOS.Controllers
|
|
|
return nodes;
|
|
|
}
|
|
|
|
|
|
- private List<Tnode> TreeToList(List<SyllabusTree> trees, List<Tnode> nodes)
|
|
|
- {
|
|
|
- int index = 0;
|
|
|
- foreach (SyllabusTree tr in trees)
|
|
|
- {
|
|
|
- tr.order = index;
|
|
|
- index++;
|
|
|
- }
|
|
|
- trees = trees.OrderBy(x => x.order).ToList();
|
|
|
- nodes.AddRange(trees.ToJsonString().ToObject<List<Tnode>>());
|
|
|
-
|
|
|
- foreach (SyllabusTree tree in trees)
|
|
|
- {
|
|
|
- if (null != tree.children && tree.children.Count > 0)
|
|
|
- {
|
|
|
- TreeToList(tree.children, nodes);
|
|
|
- }
|
|
|
- }
|
|
|
- return nodes;
|
|
|
- }
|
|
|
- private List<SyllabusTree> ListToTree(List<Tnode> noes)
|
|
|
- {
|
|
|
- List<SyllabusTree> list = noes.ToJsonString().ToObject<List<SyllabusTree>>();
|
|
|
- //var lookup = list.ToDictionary(n => n.RowKey, n => n);
|
|
|
-
|
|
|
- var res = from r in list group r by r.id into g select g;
|
|
|
- Dictionary<string, SyllabusTree> blockDict = new Dictionary<string, SyllabusTree>();
|
|
|
- foreach (var s in res)
|
|
|
- {
|
|
|
- blockDict.TryAdd(s.First().id, s.First());
|
|
|
- }
|
|
|
- return GetChild(list, blockDict);
|
|
|
- }
|
|
|
-
|
|
|
- private List<SyllabusTree> GetChild(List<SyllabusTree> list, Dictionary<string, SyllabusTree> dict)
|
|
|
- {
|
|
|
- // list = list.OrderBy(m => m.Order).ToList();
|
|
|
- List<SyllabusTree> trees = new List<SyllabusTree>();
|
|
|
- trees = trees.OrderBy(x => x.order).ToList();
|
|
|
- foreach (SyllabusTree node in list)
|
|
|
- {
|
|
|
- bool flag = dict.TryGetValue(node.pid, out SyllabusTree syllabus);
|
|
|
- if (flag && syllabus != null)
|
|
|
- {
|
|
|
- syllabus.children.Add(node);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- trees.Add(node);
|
|
|
- }
|
|
|
- }
|
|
|
- return trees;
|
|
|
- }
|
|
|
+
|
|
|
//private async Task<List<Syllabus>> SaveOrUpdateToNodes(List<Tnode> syllabusNodes)
|
|
|
//{
|
|
|
// List<Syllabus> syllabuses;
|