You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

605 lines
25 KiB

  1. using Learun.Util;
  2. using System.Data;
  3. using Learun.Application.TwoDevelopment.PersonnelManagement;
  4. using System.Web.Mvc;
  5. using System.Collections.Generic;
  6. using Learun.Application.TwoDevelopment.EducationalAdministration;
  7. using System;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using Newtonsoft.Json;
  11. namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers
  12. {
  13. /// <summary>
  14. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  15. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  16. /// 创 建:超级管理员
  17. /// 日 期:2019-03-25 11:16
  18. /// 描 述:课程表
  19. /// </summary>
  20. public class TimeTableController : MvcControllerBase
  21. {
  22. private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL();
  23. private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL();
  24. private ArrangeLessonTermOfElectiveIBLL arrangeLessonTermOfElectiveIBLL = new ArrangeLessonTermOfElectiveBLL();
  25. private StuAttendanceLeaveIBLL stuAttendanceLeaveIBLL = new StuAttendanceLeaveBLL();
  26. private StuSelectLessonListOfElectiveIBLL stuSelectLessonList = new StuSelectLessonListOfElectiveBLL();
  27. private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
  28. private LessonInfoIBLL lessonInfoIBLL = new LessonInfoBLL();
  29. private Edu_ChangeTeacherLessonIBLL edu_ChangeTeacherLessonIBLL = new Edu_ChangeTeacherLessonBLL();
  30. #region 视图功能
  31. /// <summary>
  32. /// 主页面
  33. /// <summary>
  34. /// <returns></returns>
  35. [HttpGet]
  36. public ActionResult Index()
  37. {
  38. return View();
  39. }
  40. /// <summary>
  41. /// 考勤
  42. /// <summary>
  43. /// <returns></returns>
  44. [HttpGet]
  45. public ActionResult Attendance()
  46. {
  47. return View();
  48. }
  49. [HttpGet]
  50. public ActionResult AttendanceDetail()
  51. {
  52. return View();
  53. }
  54. [HttpGet]
  55. public ActionResult AttendanceStatistic()
  56. {
  57. return View();
  58. }
  59. [HttpGet]
  60. public ActionResult AttendanceList()
  61. {
  62. return View();
  63. }
  64. [HttpGet]
  65. public ActionResult Leave()
  66. {
  67. return View();
  68. }
  69. /// <summary>
  70. /// 课程表【教务】
  71. /// <summary>
  72. /// <returns></returns>
  73. [HttpGet]
  74. public ActionResult IndexInEducation()
  75. {
  76. return View();
  77. }
  78. /// <summary>
  79. /// 班级课程表【教务】
  80. /// <summary>
  81. /// <returns></returns>
  82. [HttpGet]
  83. public ActionResult ClassIndexInEducation()
  84. {
  85. return View();
  86. }
  87. /// <summary>
  88. /// 课程表【教学调度】
  89. /// <summary>
  90. /// <returns></returns>
  91. [HttpGet]
  92. public ActionResult IndexInEducationSelect()
  93. {
  94. return View();
  95. }
  96. /// <summary>
  97. /// 课程表--修改教师所带的课程【教务】
  98. /// <summary>
  99. /// <returns></returns>
  100. [HttpGet]
  101. public ActionResult IndexInEducationModify()
  102. {
  103. return View();
  104. }
  105. /// <summary>
  106. /// 表单--修改教师所带的课程【教务】
  107. /// <summary>
  108. /// <returns></returns>
  109. [HttpGet]
  110. public ActionResult ModifyLessonForm()
  111. {
  112. return View();
  113. }
  114. /// <summary>
  115. /// 表单--修改教师所带的课程【教务】
  116. /// <summary>
  117. /// <returns></returns>
  118. [HttpGet]
  119. public ActionResult SchoolLesson()
  120. {
  121. return View();
  122. }
  123. /// <summary>
  124. /// 表单--修改教师所带的课程【教务】
  125. /// <summary>
  126. /// <returns></returns>
  127. [HttpGet]
  128. public ActionResult PrintSchedule()
  129. {
  130. return View();
  131. }
  132. /// <summary>
  133. /// 获取表单数据
  134. /// <summary>
  135. /// <returns></returns>
  136. [HttpGet]
  137. [AjaxOnly]
  138. public ActionResult GetFormData()
  139. {
  140. var userInfo = LoginUserInfo.Get();
  141. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(userInfo.account);
  142. StuAttendanceLeaveEntity entity = new StuAttendanceLeaveEntity();
  143. entity.ClassNo = stuInfo.ClassNo;
  144. entity.DeptNo = stuInfo.DeptNo;
  145. entity.Grade = stuInfo.Grade;
  146. entity.MajorNo = stuInfo.MajorNo;
  147. entity.StuNo = userInfo.account;
  148. entity.StuName = userInfo.realName;
  149. var jsonData = new
  150. {
  151. StuAttendanceLeave = entity,
  152. };
  153. return Success(jsonData);
  154. }
  155. /// <summary>
  156. /// 获取相关课程考勤的学生信息
  157. /// </summary>
  158. /// <returns></returns>
  159. [HttpGet]
  160. [AjaxOnly]
  161. public ActionResult AttendanceStudents(string pagination, string queryJson, string lessonSortNo)
  162. {
  163. Pagination paginationobj = pagination.ToObject<Pagination>();
  164. var data = new List<StuSelectLessonListEntity>();
  165. if (lessonSortNo == "1")//必修课
  166. {
  167. data = arrangeLessonTermIBLL.AttendanceStudents(paginationobj, queryJson).ToList();
  168. }
  169. else if (lessonSortNo == "2")//选修课
  170. {
  171. data = arrangeLessonTermOfElectiveIBLL.AttendanceStudents(paginationobj, queryJson).ToList();
  172. }
  173. var jsonData = new
  174. {
  175. rows = data,
  176. total = paginationobj.total,
  177. page = paginationobj.page,
  178. records = paginationobj.records
  179. };
  180. return Success(jsonData);
  181. }
  182. /// <summary>
  183. /// 提交课程考勤
  184. /// </summary>
  185. /// <returns></returns>
  186. [HttpPost]
  187. [AjaxOnly]
  188. public async Task<ActionResult> AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  189. {
  190. var data = await stuAttendanceIBLL.AttendanceApply(kqType, lessonTime, lessonDate, classRoomNo, dataJson, attenScore, attenCondition);
  191. return Success(data);
  192. }
  193. /// <summary>
  194. /// 教师/学生课程表
  195. /// </summary>
  196. /// <returns></returns>
  197. [HttpGet]
  198. [AjaxOnly]
  199. public ActionResult GetData(string startTime, string endTime)
  200. {
  201. var userInfo = LoginUserInfo.Get();
  202. //var startDate = startTime ?? Common.CalculateFirstDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
  203. //var endDate = endTime ?? Common.CalculateLastDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
  204. //开始时间
  205. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  206. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  207. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  208. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  209. var strAcademicYear = semesterAndYear.AcademicYearLong;
  210. var strSemester = semesterAndYear.Semester;
  211. var timeTableList = new List<TimeTable>();
  212. //课程表
  213. var data = arrangeLessonTermIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate);
  214. timeTableList.AddRange(data);
  215. //选修课课程表
  216. var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate);
  217. timeTableList.AddRange(dataOfElective);
  218. //var timeTables = data.ToList();
  219. var timeTables = timeTableList.ToList();
  220. var noDataResult = new
  221. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "", teacherName = userInfo.realName };
  222. if (!timeTables.Any())
  223. {
  224. return JsonResult(noDataResult);
  225. }
  226. var formatDataa = from d in timeTables
  227. let tt = d.LessonTime.Substring(1)
  228. group d by tt into g
  229. orderby g.Key
  230. select new
  231. {
  232. time = g.Key,
  233. list = from e in timeTables
  234. let ee = e.LessonTime.Substring(1)
  235. where ee == g.Key
  236. select new
  237. {
  238. day = e.LessonTime.ToCharArray()[0],
  239. curriculum = string.IsNullOrEmpty(e.EnName) ? (e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName) : (e.LessonSortNo == "2" ? e.EnName + "[选修]" : e.EnName),
  240. lessonName = e.LessonName,
  241. teacher = e.EmpName,
  242. classRoom = e.ClassroomName.Trim(),
  243. academicyear = semesterAndYear.AcademicYearShort,
  244. semester = strSemester,
  245. lessonNo = e?.LessonNo,
  246. teachClassNo = e?.TeachClassNo,
  247. empno = e?.EmpNo,
  248. lessonTime = e.LessonTime,
  249. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  250. classRoomNo = e?.ClassRoomNo.Trim(),
  251. lessonSortNo = e.LessonSortNo,
  252. e.OLPEId,
  253. className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName
  254. }
  255. }
  256. ;
  257. var leaveList = stuAttendanceLeaveIBLL.GetList();
  258. var formatData = timeTables.OrderBy(a => a.LessonTime.Substring(1))
  259. .Select(a => new
  260. {
  261. time = a.LessonTime.Substring(1),
  262. list = timeTables.Where(b => b.LessonTime.Substring(1) == a.LessonTime.Substring(1))
  263. .Select(b => new
  264. {
  265. day = b.LessonTime.ToCharArray()[0],
  266. curriculum = string.IsNullOrEmpty(b.EnName) ? (b.LessonSortNo == "2" ? b.LessonName + "[选修]" : b.LessonName) : (b.LessonSortNo == "2" ? b.EnName + "[选修]" : b.EnName),
  267. lessonName = b.LessonName,
  268. teacher = b.EmpName,
  269. classRoom = b.ClassroomName.Trim(),
  270. academicyear = semesterAndYear.AcademicYearShort,
  271. semester = strSemester,
  272. lessonNo = b?.LessonNo,
  273. teachClassNo = b?.TeachClassNo,
  274. empno = b?.EmpNo,
  275. lessonTime = b.LessonTime,
  276. lessonDate = b.LessonDate.ToString("yyyy-MM-dd"),
  277. classRoomNo = b?.ClassRoomNo.Trim(),
  278. lessonSortNo = b.LessonSortNo,
  279. b.OLPEId,
  280. className = string.IsNullOrEmpty(b.ClassName) ? "" : b.ClassName,
  281. leaveType = leaveList.Any(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime) ? 1 : 0,
  282. checkType = leaveList.FirstOrDefault(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime)?.IsCheck,
  283. })
  284. });
  285. //foreach (var item in formatData.list)
  286. //{
  287. // if(leaveList.Any(a=>a.LessonNo==item.))
  288. //}
  289. var result = new
  290. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", teacherName = userInfo.realName, weekList = formatData };
  291. return JsonResult(result);
  292. }
  293. /// <summary>
  294. /// 课程表【教务】
  295. /// </summary>
  296. /// <returns></returns>
  297. [HttpGet]
  298. [AjaxOnly]
  299. public ActionResult GetDataInEducation(string startTime, string endTime, string classNo, string empNo, string schoolId)
  300. {
  301. var userInfo = LoginUserInfo.Get();
  302. //开始时间
  303. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  304. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  305. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  306. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  307. var strAcademicYear = semesterAndYear.AcademicYearLong;
  308. var strSemester = semesterAndYear.Semester;
  309. var timeTableList = new List<TimeTable>();
  310. //课程表
  311. var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
  312. timeTableList.AddRange(data);
  313. //选修课课程表
  314. //20220718因 更改教务课表显示格式为班级作为列头,选修课无班级所以不能显示在课表内
  315. //var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
  316. //timeTableList.AddRange(dataOfElective);
  317. var timeTables = timeTableList.ToList();
  318. var noDataResult = new
  319. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" };
  320. if (!timeTables.Any())
  321. {
  322. return JsonResult(noDataResult);
  323. }
  324. //最大节次
  325. int maxlessontime = timeTables.Max(m =>Convert.ToInt32(m.LessonTime.Substring(1)));
  326. //班级列表
  327. var classinfolist = timeTables.Select(m => new { m.TeachClassNo, m.ClassName}).OrderBy(m => m.TeachClassNo).GroupBy(m=>new {m.TeachClassNo,m.ClassName});
  328. var formatData = from d in timeTables
  329. let tt = d.LessonTime.Substring(1)
  330. group d by tt into g
  331. orderby g.Key
  332. select new
  333. {
  334. time = g.Key,
  335. list = from e in timeTables
  336. let ee = e.LessonTime.Substring(1)
  337. where ee == g.Key
  338. select new
  339. {
  340. day = e.LessonTime.ToCharArray()[0],
  341. curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName,
  342. teacher = e?.EmpName,
  343. classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(),
  344. academicyear = semesterAndYear.AcademicYearShort,
  345. semester = strSemester,
  346. lessonNo = e?.LessonNo,
  347. teachClassNo = e?.TeachClassNo,
  348. empno = e?.EmpNo,
  349. lessonTime = e.LessonTime,
  350. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  351. classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(),
  352. lessonSortNo = e.LessonSortNo,
  353. e?.OLPEId,
  354. className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName
  355. }
  356. }
  357. ;
  358. var result = new
  359. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", maxlessontime, classinfolist, weekList = formatData };
  360. return JsonResult(result);
  361. }
  362. /// <summary>
  363. /// 课程表【教务】
  364. /// </summary>
  365. /// <returns></returns>
  366. [HttpGet]
  367. [AjaxOnly]
  368. public ActionResult GetDataInEducationSelect(string startTime, string endTime, string classNo, string empNo, string schoolId)
  369. {
  370. var userInfo = LoginUserInfo.Get();
  371. //开始时间
  372. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  373. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  374. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  375. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  376. var strAcademicYear = semesterAndYear.AcademicYearLong;
  377. var strSemester = semesterAndYear.Semester;
  378. var timeTableList = new List<TimeTable>();
  379. //课程表
  380. var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
  381. timeTableList.AddRange(data);
  382. //选修课课程表
  383. //var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
  384. //timeTableList.AddRange(dataOfElective);
  385. var timeTables = timeTableList.ToList();
  386. var noDataResult = new
  387. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" };
  388. if (!timeTables.Any())
  389. {
  390. return JsonResult(noDataResult);
  391. }
  392. var formatData = from d in timeTables
  393. let tt = d.LessonTime.Substring(1)
  394. group d by tt into g
  395. orderby g.Key
  396. select new
  397. {
  398. time = g.Key,
  399. list = from e in timeTables
  400. let ee = e.LessonTime.Substring(1)
  401. where ee == g.Key
  402. select new
  403. {
  404. day = e.LessonTime.ToCharArray()[0],
  405. lessonTime = e.LessonTime,
  406. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  407. schooldId = e?.F_SchoolId,
  408. academicyear = semesterAndYear.AcademicYearShort,
  409. semester = strSemester,
  410. deptNo = e?.DeptNo,
  411. majorNo = e?.MajorNo,
  412. lessonNo = e?.LessonNo,
  413. curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName,
  414. teachClassNo = e?.TeachClassNo,
  415. className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName,
  416. empno = e?.EmpNo,
  417. teacher = e?.EmpName,
  418. classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(),
  419. classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(),
  420. lessonSortNo = e.LessonSortNo
  421. }
  422. }
  423. ;
  424. var result = new
  425. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData };
  426. return JsonResult(result);
  427. }
  428. /// <summary>
  429. /// 课程表【教务】--班级下拉框信息
  430. /// </summary>
  431. /// <returns></returns>
  432. [HttpGet]
  433. [AjaxOnly]
  434. public ActionResult GetClassData(string schoolId = "")
  435. {
  436. var data = arrangeLessonTermIBLL.GetClassData(schoolId);
  437. return Success(data);
  438. }
  439. /// <summary>
  440. /// 课程表【教务】--教师下拉框信息
  441. /// </summary>
  442. /// <returns></returns>
  443. [HttpGet]
  444. [AjaxOnly]
  445. public ActionResult GetTeacherData(string schoolId = "")
  446. {
  447. var data = arrangeLessonTermIBLL.GetTeacherData(schoolId);
  448. return Success(data);
  449. }
  450. /// <summary>
  451. /// 表单--修改教师所带的课程【教务】--课程下拉框信息
  452. /// </summary>
  453. /// <returns></returns>
  454. [HttpGet]
  455. [AjaxOnly]
  456. public ActionResult GetLessonData()
  457. {
  458. var lessonList = lessonInfoIBLL.GetAllLesson().OrderBy(x => x.LessonNo);
  459. var data = lessonList.Select(x => new { value = x.LessonId, text = x.LessonName + "(" + x.LessonNo + ")" });
  460. return Success(data);
  461. }
  462. #endregion
  463. #region 保存数据
  464. [HttpPost]
  465. [ValidateAntiForgeryToken]
  466. [AjaxOnly]
  467. public ActionResult SaveForm(string keyValue, string strEntity)
  468. {
  469. StuAttendanceLeaveEntity entity = strEntity.ToObject<StuAttendanceLeaveEntity>();
  470. entity.TeachClassNo = entity.ClassNo;
  471. stuAttendanceLeaveIBLL.SaveEntity(keyValue, entity);
  472. return Success("保存成功!");
  473. }
  474. /// <summary>
  475. /// 修改教师课程--保存
  476. /// </summary>
  477. /// <param name="keyValue"></param>
  478. /// <param name="strEntity"></param>
  479. /// <returns></returns>
  480. [HttpPost]
  481. [ValidateAntiForgeryToken]
  482. [AjaxOnly]
  483. public ActionResult SaveChangeTeacherLesson(string strEntity)
  484. {
  485. Edu_ChangeTeacherLessonEntity entity = strEntity.ToObject<Edu_ChangeTeacherLessonEntity>();
  486. entity.CToTeacherId = entity.CFromTeacherId;
  487. entity.CToTeacherName = entity.CFromTeacherName;
  488. //获取目标课程
  489. var lessonInfoEntity = lessonInfoIBLL.GetLessonInfoEntity(entity.CToLessonId);
  490. if (lessonInfoEntity == null)
  491. {
  492. return Fail("目标课程不存在!");
  493. }
  494. entity.CToLessonId = lessonInfoEntity.LessonNo;
  495. entity.CToLessonName = lessonInfoEntity.LessonName;
  496. entity.CreateTime = DateTime.Now;
  497. if (entity.CFromLessonId == entity.CToLessonId)
  498. {
  499. return Fail("目标课程与原目标一致!");
  500. }
  501. //修改排课、成绩录入相关表
  502. edu_ChangeTeacherLessonIBLL.ModifyTableAboutTeacherLesson(entity);
  503. //新增Edu_ChangeTeacherLesson记录
  504. edu_ChangeTeacherLessonIBLL.SaveEntity("", entity);
  505. return Success("保存成功!");
  506. }
  507. /// <summary>
  508. /// 考勤统计
  509. /// <summary>
  510. /// <param name="pagination">分页参数</param>
  511. /// <param name="queryJson">查询参数</param>
  512. /// <returns></returns>
  513. [HttpGet]
  514. [AjaxOnly]
  515. public ActionResult GetAttendanceStatisticPageList(string pagination, string queryJson)
  516. {
  517. Pagination paginationobj = pagination.ToObject<Pagination>();
  518. var data = stuAttendanceIBLL.GetAttendanceStatisticPageList(paginationobj, queryJson);
  519. var jsonData = new
  520. {
  521. rows = data,
  522. total = paginationobj.total,
  523. page = paginationobj.page,
  524. records = paginationobj.records
  525. };
  526. return Success(jsonData);
  527. }
  528. /// <summary>
  529. /// 全校学生课程考勤
  530. /// <summary>
  531. /// <param name="pagination">分页参数</param>
  532. /// <param name="queryJson">查询参数</param>
  533. /// <returns></returns>
  534. [HttpGet]
  535. [AjaxOnly]
  536. public ActionResult GetAttendancePageList(string pagination, string queryJson)
  537. {
  538. Pagination paginationobj = pagination.ToObject<Pagination>();
  539. var data = stuAttendanceIBLL.GetAttendancePageList(paginationobj, queryJson);
  540. var jsonData = new
  541. {
  542. rows = data,
  543. total = paginationobj.total,
  544. page = paginationobj.page,
  545. records = paginationobj.records
  546. };
  547. return Success(jsonData);
  548. }
  549. #endregion
  550. }
  551. }