using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TEAMModelOS.API.Models.Core; using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest; using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse; using TEAMModelOS.SDK.Helper.Common.CollectionHelper; using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces; namespace TEAMModelOS.API.Controllers.Core { [Route("api/[controller]")] [ApiController] // [Authorize] public class StudentController : BaseController { private readonly IAzureCosmosDBRepository azureCosmosDBRepository; public StudentController(IAzureCosmosDBRepository _azureCosmosDBRepository) { azureCosmosDBRepository = _azureCosmosDBRepository; } [HttpPost("SaveStudent")] public async Task SaveStudentInfo(JosnRPCRequest request) { JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom(); Student data = await azureCosmosDBRepository.Save(request.@params); return builder.Data(data).build(); } [HttpPost("FindStudent")] public async Task FindStudent(JosnRPCRequest> request) { JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom(); if (request.@params.TryGetValue("SchoolCode", out object SchoolCode)) { List data = await azureCosmosDBRepository.FindByParams(request.@params); return builder.Data(data).build(); } else { return builder.Error("SchoolCode is null !").build(); } } [HttpPost("SaveAllStudent")] public async Task SaveAllStudentInfo(JosnRPCRequest> request) { JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom(); Dictionary> dictInfo = new Dictionary>(); foreach (IGrouping group in request.@params.GroupBy(c => c.classroomCode)) { dictInfo.Add(group.Key, group.ToList()); } List studentInfos = new List(); foreach (string key in dictInfo.Keys) { List classroom = await azureCosmosDBRepository.FindByParams(new Dictionary { { "ClassroomCode", key } }); if (classroom.IsNotEmpty()) { dictInfo.TryGetValue(key, out List sts); sts.ForEach(x => { x.gradeCode = classroom[0].gradeCode; x.periodCode = classroom[0].periodCode; x.schoolCode = classroom[0].schoolCode; x.id = x.studentId; }); List data = await azureCosmosDBRepository.SaveAll(sts); studentInfos.AddRange(data); } } return builder.Data(studentInfos).build(); } [HttpPost("UpdateStudent")] public async Task UpdateStudentInfo(JosnRPCRequest request) { JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom(); Student data = await azureCosmosDBRepository.Update(request.@params); return builder.Data(data).build(); } [HttpPost("UpdateAllStudent")] public async Task DeleteALlStudentInfo(JosnRPCRequest>> request) { JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom(); bool find = request.@params.TryGetValue("find", out Dictionary findObj); bool update = request.@params.TryGetValue("update", out Dictionary updateObj); List data = null; if (find && update) { data = await azureCosmosDBRepository.UpdateAll(findObj, updateObj); } return builder.Data(data).build(); } /// /// 根据ID删除 /// /// /// [HttpPost("DeleteStudent")] public async Task DeleteStudentInfo(JosnRPCRequest request) { JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom(); string data = await azureCosmosDBRepository.DeleteAsync(request.@params.id, request.@params.schoolCode); return builder.Data(data).build(); } } }