12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using Microsoft.AspNetCore.Http;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using TEAMModelOS.Model.Core.Models;
- using TEAMModelOS.Model.Syllabus.Dtos;
- using TEAMModelOS.Model.Syllabus.Models;
- using TEAMModelOS.SDK.Context.Exception;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- using TEAMModelOS.SDK.Helper.Common.JsonHelper;
- using TEAMModelOS.SDK.Module.AzureTable.Interfaces;
- using TEAMModelOS.Service.Core.Implements;
- using TEAMModelOS.Service.Syllabus.Interfaces;
- namespace TEAMModelOS.Service.Syllabus.Implements
- {
- public class SyllabusService : BaseService, ISyllabusService
- {
- //private readonly IAzureTableDBRepository _azureTableDBRepository;
- //public SyllabusService(IAzureTableDBRepository azureTableDBRepository) {
- // _azureTableDBRepository = azureTableDBRepository;
- //}
- public async Task<List<SyllabusTree>> SaveOrUpdateAll(List<SyllabusTree> trees ,string lang )
- {
- List<SyllabusTree> nodes = new List<SyllabusTree>();
- TreeToList(trees, nodes);
- List<SyllabusNode> nods = MessagePackHelper.JsonToObject<List<SyllabusNode>>(MessagePackHelper.ObjectToJson(nodes));
- nods.ForEach(m => { m.PartitionKey = lang; });
- await SaveOrUpdateAll<SyllabusNode>(nods);
- List<SyllabusTree> treess = ListToTree(nods);
- return treess;
- // return Task.Factory.StartNew(() => { return treess; });
- }
- public List<SyllabusTree> TreeToList(List<SyllabusTree> trees, List<SyllabusTree> nodes)
- {
- nodes.AddRange(MessagePackHelper.JsonToObject<List<SyllabusTree>>(MessagePackHelper.ObjectToJson(trees)));
- foreach (SyllabusTree tree in trees)
- {
- if (null != tree.Children && tree.Children.Count > 0)
- {
- TreeToList(tree.Children, nodes);
- }
- }
- return nodes;
- }
- public async Task<List<SyllabusTree>> FindSyllabusTreeByDict(Dictionary<string, object> dict)
- {
- List<SyllabusNode> syllabusNodes = await FindListByDict<SyllabusNode>(dict);
- return ListToTree(syllabusNodes);
- }
- private List<SyllabusTree> ListToTree(List<SyllabusNode> noes)
- {
- List<SyllabusTree> list = MessagePackHelper.JsonToObject<List<SyllabusTree>>(MessagePackHelper.ObjectToJson(noes));
- var lookup = list.ToDictionary(n => n.RowKey, n => n);
- return GetChild(list, lookup);
- }
- public List<SyllabusTree> GetChild(List<SyllabusTree> list, Dictionary<string, SyllabusTree> dict)
- {
- list = list.OrderBy(m => m.Order).ToList();
- List<SyllabusTree> trees = new List<SyllabusTree>();
- 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;
- }
- }
- }
|