using Google.Protobuf; using Grpc.Core; using Grpc.Extension.Abstract; using Microsoft.AspNetCore.Authorization; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using TEAMModelGrpc.Models; using TEAMModelOS.SDK.Helper.Common.JsonHelper; using TEAMModelOS.SDK.Module.AzureCosmosDBV3; using TEAMModelOS.Service.Models.Syllabus; using TEAMModelOS.Service.Services.Syllabus.Interface; namespace TEAMModelGrpc.Services { /// /// /// public class KnowledgeService : IGrpcService { private IAzureCosmosDBV3Repository cosmosDBV3Repository; private IKnowledgeService knowledgeService; public KnowledgeService(IAzureCosmosDBV3Repository cosmosDBV3Repository, IKnowledgeService knowledgeService) { this.cosmosDBV3Repository = cosmosDBV3Repository; this.knowledgeService = knowledgeService; } [Authorize] public async Task FinKnowledge(Dict request, IServerStreamWriter responseStream, ServerCallContext context) { Dictionary keyValuePairs = new Dictionary(); keyValuePairs = request.ToDict(); List knowledges = await cosmosDBV3Repository.FindByDict(keyValuePairs); knowledges.ForEach(x => { responseStream.WriteAsync(x); }); } [Authorize] public async Task SaveKnowledge(IAsyncStreamReader requestStream, IServerStreamWriter responseStream, ServerCallContext context) { //Dictionary keyValuePairs = new Dictionary(); //keyValuePairs = request.ToDict(); List knowledges = new List(); await foreach (var message in requestStream.ReadAllAsync()) { knowledges.Add(message); } await knowledgeService.SaveOrUpdateKnowledge(knowledges); knowledges.ForEach(x => { responseStream.WriteAsync(x); }); } public async Task DeleteKnowledge(ListPid listPid, ServerCallContext context) { List idPks = await cosmosDBV3Repository.DeleteAll(listPid.ids); listPid.idPks = idPks; return listPid; } } }