using Grpc.Core; using Grpc.Extension.Abstract; using Microsoft.AspNetCore.Authorization; using System.Collections.Generic; using System.Threading.Tasks; using TEAMModelGrpc.Models; using TEAMModelOS.Models.SchoolInfo; using TEAMModelOS.Models.StudentInfo; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Helper.Common.CollectionHelper; namespace TEAMModelGrpc.Services { public class ClassroomService : IGrpcService { public readonly AzureCosmosFactory _azureCosmos; public ClassroomService(AzureCosmosFactory azureCosmos) { _azureCosmos = azureCosmos; } /// /// 保存教室 /// /// /// /// /// [Authorize] public async Task SaveOrUpdateVolume(IAsyncStreamReader requestStream, IServerStreamWriter responseStream, ServerCallContext context) { List classrooms = new List(); await foreach (Classroom classroom in requestStream.ReadAllAsync()) { if (classroom.id != null) { classrooms.Add( await _azureCosmos.SaveOrUpdate(classroom)); } else { ClassStudent students = new ClassStudent(); students.code = classroom.code; students.id = classroom.classroomCode; await _azureCosmos.SaveOrUpdate(students); classrooms.Add(await _azureCosmos.SaveOrUpdate(classroom)); } } classrooms.ForEach(x => { responseStream.WriteAsync(x); }); } /// /// 查询教室 /// /// /// /// /// [Authorize] public async Task FindVolume(Dict request, IServerStreamWriter responseStream, ServerCallContext context) { Dictionary dict = request.ToDict(); List syllabusVolumes = await _azureCosmos.FindByDict(dict); syllabusVolumes.ForEach(x => { responseStream.WriteAsync(x); }); } /// /// 删除教室 /// /// /// /// [Authorize] public async Task Delete(ListPid listPid, ServerCallContext context) { await _azureCosmos.DeleteAll(listPid.idPks); if (listPid.idPks.IsNotEmpty()) { List students = new List(); foreach (IdPk classroom in listPid.idPks) { List ClassStudents = await _azureCosmos.FindByDict(new Dictionary { { "id", classroom.id }, { "code", classroom.pk } }); students.AddRange(ClassStudents); } if (students.Count > 0) { await _azureCosmos.DeleteAll(students); } listPid.idPks = await _azureCosmos.DeleteAll(listPid.idPks); } return listPid; } } }