ClassRoomController.cs 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.Service.Models;
  7. using TEAMModelOS.SDK.Context.Exception;
  8. using TEAMModelOS.SDK;
  9. using TEAMModelOS.SDK.DI;
  10. using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
  11. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  12. using System.Linq;
  13. namespace TEAMModelOS.Controllers
  14. {
  15. [Route("api/[controller]")]
  16. [ApiController]
  17. public class ClassroomController : BaseController
  18. {
  19. public readonly AzureCosmosFactory cosmosrepository;
  20. public ClassroomController(AzureCosmosFactory _cosmosrepository) {
  21. cosmosrepository = _cosmosrepository;
  22. }
  23. [HttpPost("upsert")]
  24. public async ValueTask<BaseResponse> Upsert(JosnRequest<Classroom> request)
  25. {
  26. ResponseBuilder builder = ResponseBuilder.custom();
  27. List<Student> students = null;
  28. if (request.@params.id != null)
  29. {
  30. await cosmosrepository.SaveOrUpdate(request.@params);
  31. students = await cosmosrepository.FindByDict<Student>(new Dictionary<string, object>() { { "classroomCode", request.@params.classroomCode }, { "schoolCode", request.@params.code } });
  32. }
  33. else
  34. {
  35. List<int> sc = await cosmosrepository.FindCountByDict<Classroom>(new Dictionary<string, object> { { "classroomCode", request.@params.classroomCode } });
  36. if (sc.IsNotEmpty() && sc[0]>0) {
  37. return builder.Error(ResponseCode.DATA_EXIST, "班级代码已经存在!").build();
  38. }
  39. request.@params.id = request.@params.classroomCode;
  40. await cosmosrepository.SaveOrUpdate<Classroom>(request.@params);
  41. }
  42. //强制关联原生班级的id
  43. List<ClassStudent> classroomStudents = await cosmosrepository.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", request.@params.classroomCode } });
  44. if (classroomStudents.IsNotEmpty())
  45. {
  46. if (students.IsNotEmpty()) {
  47. List<ClassStudent> newClassStudents = new List<ClassStudent>();
  48. students.ForEach(x=> {
  49. if (!classroomStudents.Select(m=>m.code).Contains(x.studentId)) {
  50. newClassStudents.Add(new ClassStudent { code = x.studentId, id= request.@params.classroomCode });
  51. }
  52. });
  53. await cosmosrepository.SaveOrUpdateAll<ClassStudent>(newClassStudents);
  54. }
  55. }
  56. return builder.Data(request.@params).build();
  57. }
  58. [HttpPost("find")]
  59. public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
  60. {
  61. ResponseBuilder builder = ResponseBuilder.custom();
  62. List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
  63. return builder.Data(sc).build();
  64. }
  65. [HttpPost("delete")]
  66. public async Task<BaseResponse> Delete(JosnRequest<Dictionary<string, object>> request)
  67. {
  68. ResponseBuilder builder = ResponseBuilder.custom();
  69. if (request.@params.TryGetValue("id", out object id))
  70. {
  71. List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
  72. if (sc.IsNotEmpty())
  73. {
  74. await cosmosrepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { { "id", sc.Select(x=>x.classroomCode).ToArray()} });
  75. List<IdPk> idPks = await cosmosrepository.DeleteAll<Classroom>(sc);
  76. builder.Data(idPks);
  77. }
  78. }
  79. else {
  80. return builder.Error(ResponseCode.PARAMS_ERROR, "参数未定义!").build();
  81. }
  82. return builder.build();
  83. }
  84. }
  85. }