1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading.Tasks;
- using TEAMModelOS.Service.Models;
- using TEAMModelOS.SDK.Context.Exception;
- using TEAMModelOS.SDK;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- using System.Linq;
- namespace TEAMModelOS.Controllers
- {
- [Route("api/[controller]")]
- [ApiController]
- public class ClassroomController : BaseController
- {
- public readonly AzureCosmosFactory cosmosrepository;
- public ClassroomController(AzureCosmosFactory _cosmosrepository) {
- cosmosrepository = _cosmosrepository;
- }
- [HttpPost("upsert")]
- public async ValueTask<BaseResponse> Upsert(JosnRequest<Classroom> request)
- {
- ResponseBuilder builder = ResponseBuilder.custom();
- List<Student> students = null;
- if (request.@params.id != null)
- {
- await cosmosrepository.SaveOrUpdate(request.@params);
- students = await cosmosrepository.FindByDict<Student>(new Dictionary<string, object>() { { "classroomCode", request.@params.classroomCode }, { "schoolCode", request.@params.code } });
- }
- else
- {
- List<int> sc = await cosmosrepository.FindCountByDict<Classroom>(new Dictionary<string, object> { { "classroomCode", request.@params.classroomCode } });
- if (sc.IsNotEmpty() && sc[0]>0) {
- return builder.Error(ResponseCode.DATA_EXIST, "班级代码已经存在!").build();
- }
- request.@params.id = request.@params.classroomCode;
- await cosmosrepository.SaveOrUpdate<Classroom>(request.@params);
-
- }
- //强制关联原生班级的id
- List<ClassStudent> classroomStudents = await cosmosrepository.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", request.@params.classroomCode } });
- if (classroomStudents.IsNotEmpty())
- {
- if (students.IsNotEmpty()) {
- List<ClassStudent> newClassStudents = new List<ClassStudent>();
- students.ForEach(x=> {
- if (!classroomStudents.Select(m=>m.code).Contains(x.studentId)) {
- newClassStudents.Add(new ClassStudent { code = x.studentId, id= request.@params.classroomCode });
- }
- });
- await cosmosrepository.SaveOrUpdateAll<ClassStudent>(newClassStudents);
- }
- }
- return builder.Data(request.@params).build();
- }
- [HttpPost("find")]
- public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
- {
- ResponseBuilder builder = ResponseBuilder.custom();
- List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
- return builder.Data(sc).build();
- }
- [HttpPost("delete")]
- public async Task<BaseResponse> Delete(JosnRequest<Dictionary<string, object>> request)
- {
- ResponseBuilder builder = ResponseBuilder.custom();
- if (request.@params.TryGetValue("id", out object id))
- {
- List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
- if (sc.IsNotEmpty())
- {
- await cosmosrepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { { "id", sc.Select(x=>x.classroomCode).ToArray()} });
- List<IdPk> idPks = await cosmosrepository.DeleteAll<Classroom>(sc);
- builder.Data(idPks);
- }
- }
- else {
- return builder.Error(ResponseCode.PARAMS_ERROR, "参数未定义!").build();
- }
- return builder.build();
- }
- }
- }
|