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;
}
}
}