ResourceController.cs 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228
  1. using OASystem.API.OAMethodLib;
  2. using OASystem.Domain.Dtos.Resource;
  3. using System.Collections.Generic;
  4. namespace OASystem.API.Controllers
  5. {
  6. /// <summary>
  7. /// 资料相关
  8. /// </summary>
  9. //[Authorize]
  10. [Route("api/[controller]/[action]")]
  11. public class ResourceController : ControllerBase
  12. {
  13. private readonly IMapper _mapper;
  14. private readonly IConfiguration _config;
  15. private readonly CarDataRepository _carDataRep;
  16. private readonly LocalGuideDataRepository _localGuideDataRep;
  17. private readonly ThreeCodeRepository _ThreeCodeRep;
  18. private readonly HotelDataRepository _hotelDataRep;
  19. private readonly ResItemInfoRepository _resItemInfoRep;
  20. private readonly SetDataRepository _setDataRepository;
  21. private readonly CountryFeeRepository _countryFeeRep;
  22. private readonly SetDataTypeRepository _setDataTypeRep;
  23. public ResourceController(IMapper mapper, IConfiguration config, CarDataRepository carDataRep,
  24. LocalGuideDataRepository localGuideDataRep, ThreeCodeRepository threeCodeRep,
  25. HotelDataRepository hotelDataRep, ResItemInfoRepository resItemInfoRep, SetDataRepository setDataRepository,
  26. CountryFeeRepository countryFeeRep, SetDataTypeRepository setDataTypeRep)
  27. {
  28. _mapper = mapper;
  29. _config = config;
  30. _carDataRep = carDataRep;
  31. _localGuideDataRep = localGuideDataRep;
  32. _ThreeCodeRep = threeCodeRep;
  33. _hotelDataRep = hotelDataRep;
  34. _resItemInfoRep = resItemInfoRep;
  35. _setDataRepository = setDataRepository;
  36. _countryFeeRep = countryFeeRep;
  37. _setDataTypeRep = setDataTypeRep;
  38. }
  39. #region 车公司资料板块
  40. /// <summary>
  41. /// 车公司信息查询
  42. /// </summary>
  43. /// <returns></returns>
  44. [HttpPost]
  45. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  46. public async Task<IActionResult> QueryCarData(QueryCarDataDto dto)
  47. {
  48. try
  49. {
  50. Result LocalGuide = await _carDataRep.QueryCarData(dto);
  51. if (LocalGuide.Code == 0)
  52. {
  53. return Ok(JsonView(true, "查询成功", LocalGuide.Data));
  54. }
  55. else
  56. {
  57. return Ok(JsonView(false, LocalGuide.Msg));
  58. }
  59. }
  60. catch (Exception)
  61. {
  62. return Ok(JsonView(false, "程序错误!"));
  63. throw;
  64. }
  65. }
  66. /// <summary>
  67. /// 车公司资料下拉框数据
  68. /// </summary>
  69. /// <returns></returns>
  70. [HttpPost]
  71. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  72. public async Task<IActionResult> QueryCarSelect()
  73. {
  74. try
  75. {
  76. var CarData = _carDataRep.QueryDto<Res_CarData, CarDataSelectView>().ToList();
  77. if (CarData.Count == 0)
  78. {
  79. return Ok(JsonView(false, "暂无数据!"));
  80. }
  81. CarData.Add(new CarDataSelectView { Id = 0, UnitArea = "全部" });
  82. CarData = CarData.Where((x, i) => CarData.FindIndex(z => z.UnitArea == x.UnitArea) == i).ToList();
  83. CarData = CarData.OrderBy(x => x.Id).ToList();
  84. List<CarDataSelectView> data = new List<CarDataSelectView>();
  85. foreach (CarDataSelectView car in CarData)
  86. {
  87. if (!string.IsNullOrWhiteSpace(car.UnitArea))
  88. {
  89. data.Add(car);
  90. }
  91. }
  92. return Ok(JsonView(true, "查询成功", data));
  93. }
  94. catch (Exception)
  95. {
  96. return Ok(JsonView(false, "程序错误!"));
  97. throw;
  98. }
  99. }
  100. /// <summary>
  101. /// 车公司信息添加
  102. /// </summary>
  103. /// <returns></returns>
  104. [HttpPost]
  105. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  106. public async Task<IActionResult> AddCarData(AddCarDataDto dto)
  107. {
  108. try
  109. {
  110. if (dto.UnitArea == "")
  111. {
  112. return Ok(JsonView(false, "请检查单位区域是否填写!"));
  113. }
  114. if (dto.UnitName == "")
  115. {
  116. return Ok(JsonView(false, "请检查单位名称是否填写!"));
  117. }
  118. if (dto.Contact == "")
  119. {
  120. return Ok(JsonView(false, "请检查单位联系人是否填写!"));
  121. }
  122. if (dto.ContactTel == "")
  123. {
  124. return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
  125. }
  126. var carDada = _carDataRep.QueryDto<Res_CarData, CarDataView>(a => a.UnitArea == dto.UnitArea && a.UnitName == dto.UnitName && a.Contact == dto.Contact && a.ContactTel == dto.ContactTel).ToList();
  127. if (carDada.Count != 0)
  128. {
  129. return Ok(JsonView(false, "该信息已存在,请勿重复添加!"));
  130. }
  131. Res_CarData _CarData = _mapper.Map<Res_CarData>(dto);
  132. int id = await _carDataRep.AddAsyncReturnId(_CarData);
  133. if (id == 0)
  134. {
  135. return Ok(JsonView(false, "添加失败!"));
  136. }
  137. return Ok(JsonView(true, "添加成功", new { Id = id }));
  138. }
  139. catch (Exception ex)
  140. {
  141. return Ok(JsonView(false, "程序错误!"));
  142. throw;
  143. }
  144. }
  145. /// <summary>
  146. /// 车公司信息修改
  147. /// </summary>
  148. /// <returns></returns>
  149. [HttpPost]
  150. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  151. public async Task<IActionResult> UpCarData(UpCarDataDto dto)
  152. {
  153. try
  154. {
  155. if (dto.UnitArea == "")
  156. {
  157. return Ok(JsonView(false, "请检查单位区域是否填写!"));
  158. }
  159. if (dto.UnitName == "")
  160. {
  161. return Ok(JsonView(false, "请检查单位名称是否填写!"));
  162. }
  163. if (dto.Contact == "")
  164. {
  165. return Ok(JsonView(false, "请检查单位联系人是否填写!"));
  166. }
  167. if (dto.ContactTel == "")
  168. {
  169. return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
  170. }
  171. bool res = await _carDataRep.UpdateAsync(a => a.Id == dto.Id, a => new Res_CarData
  172. {
  173. UnitArea = dto.UnitArea,
  174. UnitName = dto.UnitName,
  175. Address = dto.Address,
  176. Contact = dto.Contact,
  177. ContactTel = dto.ContactTel,
  178. ContactEmail = dto.ContactEmail,
  179. ContactFax = dto.ContactFax,
  180. CarDes = dto.CarDes,
  181. CarPicPaths = dto.CarPicPaths,
  182. OtherInfo = dto.OtherInfo,
  183. Score = dto.Score,
  184. QualificationScore = dto.QualificationScore,
  185. CarAgeScore = dto.CarAgeScore,
  186. CleanImgScore = dto.CleanImgScore,
  187. SmellScore = dto.SmellScore,
  188. WaterPaperScore = dto.WaterPaperScore,
  189. HardwareScore = dto.HardwareScore,
  190. TimeScore = dto.TimeScore,
  191. SafetyScore = dto.SafetyScore,
  192. DrivingAgeScore = dto.DrivingAgeScore,
  193. Remark = dto.Remark,
  194. });
  195. if (!res) { return Ok(JsonView(false, "修改失败!")); }
  196. return Ok(JsonView(true, "修改成功"));
  197. }
  198. catch (Exception ex)
  199. {
  200. return Ok(JsonView(false, "程序错误!"));
  201. throw;
  202. }
  203. }
  204. /// <summary>
  205. /// 车公司信息删除
  206. /// </summary>
  207. /// <returns></returns>
  208. [HttpPost]
  209. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  210. public async Task<IActionResult> DelCarData(DelCarDataDto dto)
  211. {
  212. try
  213. {
  214. bool res = await _carDataRep.SoftDeleteByIdAsync<Res_CarData>(dto.Id.ToString(), dto.DeleteUserId);
  215. if (!res) { return Ok(JsonView(false, "删除失败!")); }
  216. return Ok(JsonView(true, "删除成功"));
  217. }
  218. catch (Exception ex)
  219. {
  220. return Ok(JsonView(false, "程序错误!"));
  221. throw;
  222. }
  223. }
  224. #endregion
  225. #region 导游地接资料板块
  226. /// <summary>
  227. /// 导游地接资料查询
  228. /// </summary>
  229. /// <param name="dto"></param>
  230. /// <returns></returns>
  231. [HttpPost]
  232. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  233. public async Task<IActionResult> QueryLocalGuide(QueryLocalGuide dto)
  234. {
  235. try
  236. {
  237. Result LocalGuide = await _localGuideDataRep.QueryLocalGuide(dto);
  238. if (LocalGuide.Code == 0)
  239. {
  240. return Ok(JsonView(true, "查询成功", LocalGuide.Data));
  241. }
  242. else
  243. {
  244. return Ok(JsonView(false, LocalGuide.Msg));
  245. }
  246. }
  247. catch (Exception ex)
  248. {
  249. return Ok(JsonView(false, "程序错误!"));
  250. throw;
  251. }
  252. }
  253. /// <summary>
  254. /// 导游地接资料下拉框数据
  255. /// </summary>
  256. /// <returns></returns>
  257. [HttpPost]
  258. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  259. public async Task<IActionResult> QueryLocalGuideSelect()
  260. {
  261. try
  262. {
  263. var LocalGuide = _carDataRep.QueryDto<Res_LocalGuideData, QueryLocalGuideSelectView>().ToList();
  264. if (LocalGuide.Count == 0)
  265. {
  266. return Ok(JsonView(false, "暂无数据!"));
  267. }
  268. LocalGuide.Add(new QueryLocalGuideSelectView { Id = 0, UnitArea = "全部" });
  269. LocalGuide = LocalGuide.Where((x, i) => LocalGuide.FindIndex(z => z.UnitArea == x.UnitArea && z.UnitArea != "") == i).ToList();
  270. LocalGuide = LocalGuide.OrderBy(x => x.Id).ToList();
  271. List<QueryLocalGuideSelectView> data = new List<QueryLocalGuideSelectView>();
  272. foreach (QueryLocalGuideSelectView Local in LocalGuide)
  273. {
  274. if (!string.IsNullOrWhiteSpace(Local.UnitArea))
  275. {
  276. data.Add(Local);
  277. }
  278. }
  279. return Ok(JsonView(true, "查询成功", data));
  280. }
  281. catch (Exception)
  282. {
  283. return Ok(JsonView(false, "程序错误!"));
  284. throw;
  285. }
  286. }
  287. /// <summary>
  288. /// 导游地接信息操作(Status:1.新增,2.修改)
  289. /// </summary>
  290. /// <returns></returns>
  291. [HttpPost]
  292. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  293. public async Task<IActionResult> OperationLocalGuide(LocalGuideOperationDto dto)
  294. {
  295. try
  296. {
  297. if (dto.UnitArea == "")
  298. {
  299. return Ok(JsonView(false, "请检查单位区域是否填写!"));
  300. }
  301. if (dto.UnitName == "")
  302. {
  303. return Ok(JsonView(false, "请检查单位名称是否填写!"));
  304. }
  305. if (dto.Contact == "")
  306. {
  307. return Ok(JsonView(false, "请检查单位联系人是否填写!"));
  308. }
  309. if (dto.ContactTel == "")
  310. {
  311. return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
  312. }
  313. Result result = await _localGuideDataRep.LocalGuideOperation(dto);
  314. if (result.Code != 0)
  315. {
  316. return Ok(JsonView(false, result.Msg));
  317. }
  318. return Ok(JsonView(true, result.Msg));
  319. }
  320. catch (Exception ex)
  321. {
  322. return Ok(JsonView(false, "程序错误!"));
  323. throw;
  324. }
  325. }
  326. /// <summary>
  327. /// 导游地接信息操作(删除)
  328. /// </summary>
  329. /// <returns></returns>
  330. [HttpPost]
  331. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  332. public async Task<IActionResult> DelLocalGuide(LocalGuideDelDto dto)
  333. {
  334. try
  335. {
  336. var res = await _localGuideDataRep.SoftDeleteByIdAsync<Res_LocalGuideData>(dto.Id.ToString(), dto.DeleteUserId);
  337. if (!res)
  338. {
  339. return Ok(JsonView(false, "删除失败"));
  340. }
  341. return Ok(JsonView(true, "删除成功!"));
  342. }
  343. catch (Exception ex)
  344. {
  345. return Ok(JsonView(false, "程序错误!"));
  346. throw;
  347. }
  348. }
  349. #endregion
  350. #region 机场三字码信息
  351. /// <summary>
  352. /// 机场三字码查询
  353. /// </summary>
  354. /// <param name="dto"></param>
  355. /// <returns></returns>
  356. [HttpPost]
  357. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  358. public async Task<IActionResult> QueryThreeCode(QueryThreeCodeDto dto)
  359. {
  360. try
  361. {
  362. Result LocalGuide = await _ThreeCodeRep.QueryThreeCode(dto);
  363. if (LocalGuide.Code == 0)
  364. {
  365. return Ok(JsonView(true, "查询成功", LocalGuide.Data));
  366. }
  367. else
  368. {
  369. return Ok(JsonView(false, LocalGuide.Msg));
  370. }
  371. }
  372. catch (Exception ex)
  373. {
  374. return Ok(JsonView(false, "程序错误!"));
  375. throw;
  376. }
  377. }
  378. /// <summary>
  379. /// 机场三字码数据城市下拉框数据
  380. /// </summary>
  381. /// <returns></returns>
  382. [HttpPost]
  383. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  384. public async Task<IActionResult> QueryThreeCodeSelect()
  385. {
  386. try
  387. {
  388. var ThreeCode = _carDataRep.QueryDto<Res_ThreeCode, ThreeCodeSelectView>().ToList();
  389. if (ThreeCode.Count == 0)
  390. {
  391. return Ok(JsonView(false, "暂无数据!"));
  392. }
  393. ThreeCode.Add(new ThreeCodeSelectView { Id = 0, City = "全部" });
  394. ThreeCode = ThreeCode.Where((x, i) => ThreeCode.FindIndex(z => z.City == x.City && z.City != "") == i).ToList();
  395. ThreeCode = ThreeCode.OrderBy(x => x.Id).ToList();
  396. List<ThreeCodeSelectView> data = new List<ThreeCodeSelectView>();
  397. foreach (ThreeCodeSelectView _ThreeCode in ThreeCode)
  398. {
  399. if (!string.IsNullOrWhiteSpace(_ThreeCode.City))
  400. {
  401. data.Add(_ThreeCode);
  402. }
  403. }
  404. return Ok(JsonView(true, "查询成功", data));
  405. }
  406. catch (Exception)
  407. {
  408. return Ok(JsonView(false, "程序错误!"));
  409. throw;
  410. }
  411. }
  412. /// <summary>
  413. /// 机场三字码资料操作(Status:1.新增,2.修改)
  414. /// </summary>
  415. /// <param name="dto"></param>
  416. /// <returns></returns>
  417. [HttpPost]
  418. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  419. public async Task<IActionResult> OperationThreeCode(ThreeCodeOperationDto dto)
  420. {
  421. try
  422. {
  423. if (dto.Three == "")
  424. {
  425. return Ok(JsonView(false, "请检查三字码是否填写!"));
  426. }
  427. if (dto.Country == "")
  428. {
  429. return Ok(JsonView(false, "请检查国家是否填写!"));
  430. }
  431. if (dto.City == "")
  432. {
  433. return Ok(JsonView(false, "请检查城市是否填写正确!"));
  434. }
  435. if (dto.AirPort == "")
  436. {
  437. return Ok(JsonView(false, "请检查机场是否填写正确!"));
  438. }
  439. Result result = await _ThreeCodeRep.ThreeCodeOperation(dto);
  440. if (result.Code != 0)
  441. {
  442. return Ok(JsonView(false, result.Msg));
  443. }
  444. return Ok(JsonView(true, result.Msg));
  445. }
  446. catch (Exception ex)
  447. {
  448. return Ok(JsonView(false, "程序错误!"));
  449. throw;
  450. }
  451. }
  452. /// <summary>
  453. /// 机场三字码资料操作(删除)
  454. /// </summary>
  455. /// <returns></returns>
  456. [HttpPost]
  457. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  458. public async Task<IActionResult> DelThreeCode(ThreeCodeDelDto dto)
  459. {
  460. try
  461. {
  462. var res = await _ThreeCodeRep.SoftDeleteByIdAsync<Res_ThreeCode>(dto.Id.ToString(), dto.DeleteUserId);
  463. if (!res)
  464. {
  465. return Ok(JsonView(false, "删除失败"));
  466. }
  467. return Ok(JsonView(true, "删除成功!"));
  468. }
  469. catch (Exception ex)
  470. {
  471. return Ok(JsonView(false, "程序错误!"));
  472. throw;
  473. }
  474. }
  475. #endregion
  476. #region 酒店资料数据
  477. /// <summary>
  478. /// 酒店信息查询
  479. /// </summary>
  480. /// <param name="dto"></param>
  481. /// <returns></returns>
  482. [HttpPost]
  483. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  484. public async Task<IActionResult> QueryHotelData(QueryHotelDataDto dto)
  485. {
  486. try
  487. {
  488. Result hotelData = await _hotelDataRep.QueryHotelData(dto);
  489. if (hotelData.Code == 0)
  490. {
  491. return Ok(JsonView(true, "查询成功", hotelData.Data));
  492. }
  493. else
  494. {
  495. return Ok(JsonView(false, hotelData.Msg));
  496. }
  497. }
  498. catch (Exception ex)
  499. {
  500. return Ok(JsonView(false, "程序错误!"));
  501. throw;
  502. }
  503. }
  504. /// <summary>
  505. /// 酒店资料下拉框数据
  506. /// </summary>
  507. /// <returns></returns>
  508. [HttpPost]
  509. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  510. public async Task<IActionResult> QueryHotelDataSelect()
  511. {
  512. try
  513. {
  514. var HotelData = _carDataRep.QueryDto<Res_HotelData, QueryHotelDataSelect>().ToList();
  515. if (HotelData.Count == 0)
  516. {
  517. return Ok(JsonView(false, "暂无数据!"));
  518. }
  519. HotelData.Add(new QueryHotelDataSelect { Id = 0, City = "全部" });
  520. HotelData = HotelData.Where((x, i) => HotelData.FindIndex(z => z.City == x.City && z.City != "") == i).ToList();
  521. HotelData = HotelData.OrderBy(x => x.Id).ToList();
  522. List<QueryHotelDataSelect> data = new List<QueryHotelDataSelect>();
  523. foreach (QueryHotelDataSelect Hotel in HotelData)
  524. {
  525. if (!string.IsNullOrWhiteSpace(Hotel.City))
  526. {
  527. data.Add(Hotel);
  528. }
  529. }
  530. return Ok(JsonView(true, "查询成功", data));
  531. }
  532. catch (Exception)
  533. {
  534. return Ok(JsonView(false, "程序错误!"));
  535. throw;
  536. }
  537. }
  538. /// <summary>
  539. /// 酒店资料操作(Status:1.新增,2.修改)
  540. /// </summary>
  541. /// <param name="dto"></param>
  542. /// <returns></returns>
  543. [HttpPost]
  544. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  545. public async Task<IActionResult> OperationHotelData(OperationHotelDto dto)
  546. {
  547. try
  548. {
  549. if (dto.City == "")
  550. {
  551. return Ok(JsonView(false, "请检查酒店所在城市是否填写!"));
  552. }
  553. if (dto.Name == "")
  554. {
  555. return Ok(JsonView(false, "请检查酒店名称是否填写!"));
  556. }
  557. if (dto.Address == "")
  558. {
  559. return Ok(JsonView(false, "请检查酒店地址是否填写正确!"));
  560. }
  561. if (dto.Tel == "")
  562. {
  563. return Ok(JsonView(false, "请检查酒店联系方式是否填写正确!"));
  564. }
  565. Result result = await _hotelDataRep.OperationHotelData(dto);
  566. if (result.Code != 0)
  567. {
  568. return Ok(JsonView(false, result.Msg));
  569. }
  570. return Ok(JsonView(true, result.Msg));
  571. }
  572. catch (Exception ex)
  573. {
  574. return Ok(JsonView(false, "程序错误!"));
  575. throw;
  576. }
  577. }
  578. /// <summary>
  579. /// 酒店资料操作(删除)
  580. /// </summary>
  581. /// <returns></returns>
  582. [HttpPost]
  583. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  584. public async Task<IActionResult> DelHotelData(DelHotelDataDto dto)
  585. {
  586. try
  587. {
  588. var res = await _hotelDataRep.SoftDeleteByIdAsync<Res_HotelData>(dto.Id.ToString(), dto.DeleteUserId);
  589. if (!res)
  590. {
  591. return Ok(JsonView(false, "删除失败"));
  592. }
  593. return Ok(JsonView(true, "删除成功!"));
  594. }
  595. catch (Exception ex)
  596. {
  597. return Ok(JsonView(false, "程序错误!"));
  598. throw;
  599. }
  600. }
  601. #endregion
  602. #region 签证费用资料
  603. /// <summary>
  604. /// 签证费用资料查询
  605. /// </summary>
  606. /// <param name="dto"></param>
  607. /// <returns></returns>
  608. [HttpPost]
  609. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  610. public async Task<IActionResult> QueryCountryFeeCost(DtoBase dto)
  611. {
  612. try
  613. {
  614. if (dto.PortType == 1)
  615. {
  616. var CountryFee = _countryFeeRep.QueryDto<Res_CountryFeeCost, CountryFeeCostView>().ToList();
  617. if (CountryFee.Count == 0)
  618. {
  619. return Ok(JsonView(false, "暂无数据!"));
  620. }
  621. CountryFee = CountryFee.OrderByDescending(s => s.CreateTime).ToList();
  622. return Ok(JsonView(true, "查询成功", CountryFee));
  623. }
  624. else if (dto.PortType == 2)
  625. {
  626. var CountryFee = _countryFeeRep.QueryDto<Res_CountryFeeCost, CountryFeeCostView>().ToList();
  627. if (CountryFee.Count == 0)
  628. {
  629. return Ok(JsonView(false, "暂无数据!"));
  630. }
  631. CountryFee = CountryFee.OrderByDescending(s => s.CreateTime).ToList();
  632. return Ok(JsonView(true, "查询成功", CountryFee));
  633. }
  634. else
  635. {
  636. return Ok(JsonView(false, "请传入PortType参数!1:Web,2:Android,3:IOS"));
  637. }
  638. }
  639. catch (Exception ex)
  640. {
  641. return Ok(JsonView(false, "程序错误!"));
  642. throw;
  643. }
  644. }
  645. /// <summary>
  646. /// 签证费用资料操作(Status:1.新增,2.修改)
  647. /// </summary>
  648. /// <param name="dto"></param>
  649. /// <returns></returns>
  650. [HttpPost]
  651. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  652. public async Task<IActionResult> OperationCountryFeeCost(OperationCountryFeeCostDto dto)
  653. {
  654. try
  655. {
  656. if (dto.VisaContinent == "")
  657. {
  658. return Ok(JsonView(false, "请检查州名是否填写!"));
  659. }
  660. if (dto.VisaCountry == "")
  661. {
  662. return Ok(JsonView(false, "请检查国家名是否填写!"));
  663. }
  664. if (dto.VisaTime == "1")
  665. {
  666. return Ok(JsonView(false, "请检一般签证时间是否填写正确!"));
  667. }
  668. if (dto.UrgentTime == "1")
  669. {
  670. return Ok(JsonView(false, "请检加急时间是否填写正确!"));
  671. }
  672. if (dto.VisaPrice == 0)
  673. {
  674. return Ok(JsonView(false, "请检查签证费用是否填写正确,小数点后可1到2位!"));
  675. }
  676. if (dto.VisaPrice == 1)
  677. {
  678. return Ok(JsonView(false, "请检查签证加急费用是否填写正确,小数点后可1到2位!"));
  679. }
  680. Result result = await _countryFeeRep.OperationCountryFeeCost(dto);
  681. if (result.Code != 0)
  682. {
  683. return Ok(JsonView(false, result.Msg));
  684. }
  685. return Ok(JsonView(true, result.Msg));
  686. }
  687. catch (Exception ex)
  688. {
  689. return Ok(JsonView(false, "程序错误!"));
  690. throw;
  691. }
  692. }
  693. /// <summary>
  694. /// 签证费用资料操作(删除)
  695. /// </summary>
  696. /// <returns></returns>
  697. [HttpPost]
  698. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  699. public async Task<IActionResult> DelCountryFeeCost(DelCountryFeeCostDto dto)
  700. {
  701. try
  702. {
  703. var res = await _countryFeeRep.SoftDeleteByIdAsync<Res_CountryFeeCost>(dto.Id.ToString(), dto.DeleteUserId);
  704. if (!res)
  705. {
  706. return Ok(JsonView(false, "删除失败"));
  707. }
  708. return Ok(JsonView(true, "删除成功!"));
  709. }
  710. catch (Exception ex)
  711. {
  712. return Ok(JsonView(false, "程序错误!"));
  713. throw;
  714. }
  715. }
  716. #endregion
  717. #region 物料信息、供应商维护
  718. #region 供应商
  719. /// <summary>
  720. /// 物料供应商查询
  721. /// </summary>
  722. /// <param name="paras">Json序列化</param>
  723. /// <returns></returns>
  724. [HttpPost]
  725. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  726. public async Task<IActionResult> PostSearchItemVendor(JsonDtoBase _jsonDto)
  727. {
  728. if (string.IsNullOrEmpty(_jsonDto.Paras))
  729. {
  730. return Ok(JsonView(false, "参数为空"));
  731. }
  732. Search_ResItemVendorDto _ItemVendorDto = System.Text.Json.JsonSerializer.Deserialize<Search_ResItemVendorDto>(_jsonDto.Paras);
  733. if (_ItemVendorDto != null)
  734. {
  735. if (_ItemVendorDto.SearchType == 2) //获取列表
  736. {
  737. Res_ItemVendorListView rstList = _resItemInfoRep.GetVendorList(_ItemVendorDto);
  738. return Ok(rstList);
  739. }
  740. else
  741. {
  742. Res_ItemVendorView rstInfo = _resItemInfoRep.getVendorInfo(_ItemVendorDto);
  743. return Ok(rstInfo);
  744. }
  745. }
  746. else
  747. {
  748. return Ok(JsonView(false, "参数反序列化失败"));
  749. }
  750. return Ok(JsonView(false));
  751. }
  752. /// <summary>
  753. /// 创建/编辑/删除供应商信息
  754. /// </summary>
  755. /// <param name="_dto"></param>
  756. /// <returns></returns>
  757. [HttpPost]
  758. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  759. public async Task<IActionResult> PostEditItemVendor(Edit_ResItemVendorDto _dto)
  760. {
  761. bool rst = false;
  762. if (_dto.EditType >= 0)
  763. {
  764. if (string.IsNullOrEmpty(_dto.VendorFullName))
  765. {
  766. return Ok(JsonView(false, "全称未填写"));
  767. }
  768. if (string.IsNullOrEmpty(_dto.VendorLinker))
  769. {
  770. return Ok(JsonView(false, "联系人未填写"));
  771. }
  772. if (string.IsNullOrEmpty(_dto.VendorMobile))
  773. {
  774. return Ok(JsonView(false, "联系人手机号未填写"));
  775. }
  776. if (string.IsNullOrEmpty(_dto.BusRange))
  777. {
  778. return Ok(JsonView(false, "经营范围未选择"));
  779. }
  780. if (_dto.EditType == 0)
  781. {
  782. var checkEmpty = _resItemInfoRep.Query<Res_ItemVendor>(s => s.FullName == _dto.VendorFullName).First();
  783. if (checkEmpty != null)
  784. {
  785. return Ok(JsonView(false, "已存在同名供应商"));
  786. }
  787. rst = await _resItemInfoRep.addVendorInfo(_dto);
  788. }
  789. else if (_dto.EditType == 1)
  790. {
  791. if (_dto.VendorId > 0)
  792. {
  793. Res_ItemVendor _entity = _mapper.Map<Res_ItemVendor>(_dto);
  794. rst = await _resItemInfoRep.updVendorInfo(_entity);
  795. }
  796. else
  797. {
  798. return Ok(JsonView(false, "供应商不存在"));
  799. }
  800. }
  801. }
  802. else
  803. {
  804. if (_dto.VendorId < 1 || _dto.SysUserId < 1)
  805. {
  806. return Ok(JsonView(false, "用户Id或供应商Id不存在"));
  807. }
  808. Res_ItemVendor _entity = _mapper.Map<Res_ItemVendor>(_dto);
  809. rst = await _resItemInfoRep.delVendorInfo(_entity);
  810. }
  811. return Ok(JsonView(rst));
  812. }
  813. #endregion
  814. #region 物料信息
  815. /// <summary>
  816. /// 物料信息查询
  817. /// </summary>
  818. /// <param name="paras">Json序列化</param>
  819. /// <returns></returns>
  820. [HttpPost]
  821. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  822. public async Task<IActionResult> PostSearchItemInfo(string paras)
  823. {
  824. if (string.IsNullOrEmpty(paras))
  825. {
  826. return Ok(JsonView(false, "参数为空"));
  827. }
  828. Search_ItemInfoDto _ItemInfoDto = System.Text.Json.JsonSerializer.Deserialize<Search_ItemInfoDto>(paras);
  829. if (_ItemInfoDto != null)
  830. {
  831. if (_ItemInfoDto.SearchType == 2) //获取列表
  832. {
  833. Res_ItemInfoListView rstList = _resItemInfoRep.GetItemList(_ItemInfoDto);
  834. return Ok(rstList);
  835. }
  836. else
  837. {
  838. Res_ItemInfoView rstInfo = _resItemInfoRep.getItemInfo(_ItemInfoDto);
  839. return Ok(rstInfo);
  840. }
  841. }
  842. else
  843. {
  844. return Ok(JsonView(false, "参数反序列化失败"));
  845. }
  846. return Ok(JsonView(false));
  847. }
  848. /// <summary>
  849. /// 创建/编辑/删除物料信息
  850. /// </summary>
  851. ///
  852. /// <returns></returns>
  853. [HttpPost]
  854. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  855. public async Task<IActionResult> PostEditItemInfo(Edit_ResItemInfoDto _dto)
  856. {
  857. bool rst = false;
  858. if (_dto.EditType >= 0)
  859. {
  860. if (_dto.VendorId < 1)
  861. {
  862. return Ok(JsonView(false, "未选择供应商"));
  863. }
  864. if (string.IsNullOrEmpty(_dto.ItemName))
  865. {
  866. return Ok(JsonView(false, "物料名称为空"));
  867. }
  868. if (_dto.ItemTypeId < 1)
  869. {
  870. return Ok(JsonView(false, "未选择物料类型"));
  871. }
  872. if (_dto.SysUserId < 1)
  873. {
  874. return Ok(JsonView(false, "当前操作用户Id为空"));
  875. }
  876. if (_dto.CurrRate <= 0)
  877. {
  878. return Ok(JsonView(false, "物料录入价格不能小于等于0"));
  879. }
  880. if (_dto.EditType == 0)
  881. {
  882. //判断物料名称、类型、供应商全部重复
  883. var checkEmpty = _resItemInfoRep.Query<Res_ItemDetailInfo>(s => s.ItemName == _dto.ItemName && s.ItemTypeId == _dto.ItemTypeId && s.VendorId == _dto.VendorId).First();
  884. if (checkEmpty != null)
  885. {
  886. return Ok(JsonView(false, "已存在重复物料信息"));
  887. }
  888. Res_ItemDetailInfo _entity = _mapper.Map<Res_ItemDetailInfo>(_dto);
  889. DateTime dtNow = DateTime.Now;
  890. _entity.CreateUserId = _dto.SysUserId;
  891. _entity.IsDel = 0;
  892. _entity.MaxRate = _dto.CurrRate;
  893. _entity.MaxDt = dtNow;
  894. _entity.CurrRate = _dto.CurrRate;
  895. _entity.CurrDt = dtNow;
  896. _entity.MinRate = _dto.CurrRate;
  897. _entity.MinDt = dtNow;
  898. rst = await _resItemInfoRep.AddAsync<Res_ItemDetailInfo>(_entity) > 0;
  899. }
  900. else if (_dto.EditType == 1)
  901. {
  902. if (_dto.ItemId > 0)
  903. {
  904. Res_ItemDetailInfo _entity = _mapper.Map<Res_ItemDetailInfo>(_dto);
  905. _entity.Id = _dto.ItemId;
  906. rst = await _resItemInfoRep.updItemInfo(_entity);
  907. }
  908. else
  909. {
  910. return Ok(JsonView(false, "供应商不存在"));
  911. }
  912. }
  913. }
  914. else
  915. {
  916. if (_dto.ItemId < 1 || _dto.SysUserId < 1)
  917. {
  918. return Ok(JsonView(false, "用户Id或物料信息Id不存在"));
  919. }
  920. Res_ItemDetailInfo _entity = _mapper.Map<Res_ItemDetailInfo>(_dto);
  921. rst = await _resItemInfoRep.delItemInfo(_entity);
  922. }
  923. return Ok(JsonView(rst));
  924. }
  925. #endregion
  926. #region 物料类型获取
  927. #endregion
  928. #endregion
  929. #region 备忘录
  930. /// <summary>
  931. /// 备忘录查询
  932. /// </summary>
  933. /// <param name="paras">Json序列化</param>
  934. /// <returns></returns>
  935. [HttpPost]
  936. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  937. public async Task<IActionResult> PostSearchMemo(JsonDtoBase _jsonDto)
  938. {
  939. if (string.IsNullOrEmpty(_jsonDto.Paras))
  940. {
  941. return Ok(JsonView(false, "参数为空"));
  942. }
  943. Search_ResMemoDto _memoDto = JsonConvert.DeserializeObject<Search_ResMemoDto>(_jsonDto.Paras);
  944. if (_memoDto != null)
  945. {
  946. if (_memoDto.SearchType == 2)
  947. {
  948. //获取列表
  949. string sqlWhere = string.Format(" Where IsDel=0 ");
  950. #region SqlWhere
  951. if (!string.IsNullOrEmpty(_memoDto.Abstracts))
  952. {
  953. sqlWhere += string.Format(@" And m.Abstracts Like '%{0}%' ", _memoDto.Abstracts);
  954. }
  955. if (!string.IsNullOrEmpty(_memoDto.Title))
  956. {
  957. sqlWhere += string.Format(@" And m.Title Like '%{0}%' ", _memoDto.Title);
  958. }
  959. if (_memoDto.ReadLevel > 0)
  960. {
  961. sqlWhere += string.Format(@" And m.ReadLevel = {0} ", _memoDto.ReadLevel);
  962. }
  963. #endregion
  964. int currPIndex = (((_memoDto.PageIndex > 0) ? (_memoDto.PageIndex - 1) : 0) * _memoDto.PageSize) + 1;
  965. int currPSize = (((_memoDto.PageIndex > 0) ? (_memoDto.PageIndex - 1) : 0) + 1) * _memoDto.PageSize;
  966. string sql = string.Format(@" Select * From(Select ROW_NUMBER() Over(order By m.Id desc) as RowNumber,
  967. m.Id as MemoId,d.DepName as DepartmentName,m.ReadLevel,m.Title,m.Abstracts,
  968. m.LastedEditDt,m.LastedEditorId
  969. From Res_Memo as m With(Nolock) Inner Join Sys_Users as u With(Nolock) On m.CreateUserId=u.Id
  970. Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id {2}
  971. ) as tb Where tb.RowNumber Between {0} And {1} ", currPIndex, currPSize, sqlWhere);
  972. Res_MemoListView rst = new Res_MemoListView();
  973. rst.CurrPageIndex = currPIndex;
  974. rst.CurrPageSize = currPSize;
  975. List<Res_MemoView> dataSource = _carDataRep._sqlSugar.SqlQueryable<Res_MemoView>(sql).ToList();
  976. Dictionary<int, string> userDic = new Dictionary<int, string>();
  977. foreach (var item in dataSource)
  978. {
  979. if (userDic.ContainsKey(item.LastedEditorId))
  980. {
  981. item.LastedEditor = userDic[item.LastedEditorId];
  982. }
  983. else
  984. {
  985. Sys_Users _sysUser = _carDataRep.Query<Sys_Users>(s => s.Id == item.LastedEditorId).First();
  986. userDic[item.LastedEditorId] = _sysUser.CnName;
  987. item.LastedEditor = _sysUser.CnName;
  988. }
  989. }
  990. rst.DataList = new List<Res_MemoView>(dataSource);
  991. if (rst.DataList.Count > 0)
  992. {
  993. string sqlCount = string.Format(@" Select Id From Res_Memo as m With(Nolock) {0} ", sqlWhere);
  994. int dataCount = _carDataRep._sqlSugar.SqlQueryable<Res_MemoInfo>(sqlCount).Count();
  995. rst.DataCount = dataCount;
  996. }
  997. return Ok(JsonView(rst));
  998. }
  999. else
  1000. {
  1001. //获取对象
  1002. string sqlSingle = string.Format(@" Select
  1003. m.Id as MemoId,d.DepName as DepartmentName,m.ReadLevel,m.Title,m.Abstracts,
  1004. m.LastedEditDt,m.LastedEditor,m.MDFilePath
  1005. From Res_Memo as m With(Nolock) Inner Join Sys_Users as u With(Nolock) On m.CreateUserId=u.Id
  1006. Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _memoDto.MemoId);
  1007. Res_MemoView _result = _carDataRep._sqlSugar.SqlQueryable<Res_MemoView>(sqlSingle).First();
  1008. if (_result != null)
  1009. {
  1010. Sys_Users _sysUser = _carDataRep.Query<Sys_Users>(s => s.Id == _result.LastedEditorId).First();
  1011. _result.LastedEditor = _sysUser.CnName;
  1012. _result.MarkDownContent = new IOOperatorHelper().Read(_result.MDFilePath);
  1013. return Ok(JsonView(_result));
  1014. }
  1015. }
  1016. }
  1017. else
  1018. {
  1019. return Ok(JsonView(false, "参数反序列化失败"));
  1020. }
  1021. return Ok(JsonView(false));
  1022. }
  1023. /// <summary>
  1024. /// 创建/编辑/删除备忘录信息
  1025. /// </summary>
  1026. /// <param name="_dto"></param>
  1027. /// <returns></returns>
  1028. [HttpPost]
  1029. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1030. public async Task<IActionResult> PostEditMemo(Edit_ResMemoDto _dto)
  1031. {
  1032. bool rst = false;
  1033. if (_dto.SysUserId < 1)
  1034. {
  1035. return Ok(JsonView(false, "操作人失效"));
  1036. }
  1037. Sys_Users _sysUser = _resItemInfoRep.Query<Sys_Users>(s => s.Id == _dto.SysUserId).First();
  1038. if (_sysUser == null)
  1039. {
  1040. return Ok(JsonView(false, "操作人失效02"));
  1041. }
  1042. if (_dto.EditType >= 0)
  1043. {
  1044. if (_dto.ReadLevel < 1)
  1045. {
  1046. return Ok(JsonView(false, "未知的阅读等级"));
  1047. }
  1048. if (string.IsNullOrEmpty(_dto.Title.Trim()))
  1049. {
  1050. return Ok(JsonView(false, "标题不能为空"));
  1051. }
  1052. if (string.IsNullOrEmpty(_dto.Content.Trim()))
  1053. {
  1054. return Ok(JsonView(false, "正文内容不能为空"));
  1055. }
  1056. //新增备忘录
  1057. DateTime dtNow = DateTime.Now;
  1058. string dir = AppSettingsHelper.Get("MemoCurrPath");
  1059. string fileName = dtNow.ToString("yyyyMMddHHmmss") + _dto.Title + ".md";
  1060. string content = JsonConvert.SerializeObject(_dto.Content);
  1061. if (_dto.EditType == 0)//新增
  1062. {
  1063. string savePath = new IOOperatorHelper().Write_CoverFile(content, dir, fileName);
  1064. if (savePath.Length > 0)
  1065. {
  1066. Res_MemoInfo _insert = new Res_MemoInfo();
  1067. _insert.Abstracts = _dto.Abstracts;
  1068. _insert.Title = _dto.Title;
  1069. _insert.DepartmentId = _sysUser.DepId;
  1070. _insert.CreateUserId = _sysUser.Id;
  1071. _insert.LastedEditDt = dtNow;
  1072. _insert.LastedEditor = _sysUser.Id;
  1073. _insert.MDFilePath = savePath;
  1074. _insert.ReadLevel = _dto.ReadLevel;
  1075. _insert.Title = _dto.Title;
  1076. int result = await _resItemInfoRep.AddAsync(_insert);
  1077. return Ok(JsonView(result > 0));
  1078. }
  1079. else
  1080. {
  1081. return Ok(JsonView(false, "路径保存失败"));
  1082. }
  1083. }
  1084. else//修改
  1085. {
  1086. if (_dto.MemoId < 1)
  1087. {
  1088. return Ok(JsonView(false, "MemoId不存在"));
  1089. }
  1090. Res_MemoInfo _source = _resItemInfoRep.Query<Res_MemoInfo>(s => s.Id == _dto.MemoId).First();
  1091. if (_source == null)
  1092. {
  1093. return Ok(JsonView(false, "MemoInfo不存在"));
  1094. }
  1095. //修改
  1096. string sourcePath = _source.MDFilePath;
  1097. string recycDir = AppSettingsHelper.Get("MemoRecycleBinPath");
  1098. new IOOperatorHelper().MoveFile(sourcePath, recycDir);
  1099. string savePath = new IOOperatorHelper().Write_CoverFile(content, dir, fileName);
  1100. if (savePath.Length > 0)
  1101. {
  1102. var result = await _resItemInfoRep._sqlSugar.Updateable<Res_MemoInfo>()
  1103. .SetColumns(it => it.LastedEditDt == DateTime.Now)
  1104. .SetColumns(it => it.LastedEditor == _sysUser.Id)
  1105. .SetColumns(it => it.Abstracts == _dto.Abstracts)
  1106. .SetColumns(it => it.MDFilePath == savePath)
  1107. .SetColumns(it => it.ReadLevel == _dto.ReadLevel)
  1108. .SetColumns(it => it.Title == _dto.Title)
  1109. .Where(s => s.Id == _source.Id)
  1110. .ExecuteCommandAsync();
  1111. return Ok(JsonView(result > 0));
  1112. }
  1113. }
  1114. }
  1115. else
  1116. {
  1117. //删除
  1118. if (_dto.MemoId < 1)
  1119. {
  1120. return Ok(JsonView(false, "MemoId不存在"));
  1121. }
  1122. Res_MemoInfo _source = _resItemInfoRep.Query<Res_MemoInfo>(s => s.Id == _dto.MemoId).First();
  1123. if (_source == null)
  1124. {
  1125. return Ok(JsonView(false, "MemoInfo不存在"));
  1126. }
  1127. //修改
  1128. string sourcePath = _source.MDFilePath;
  1129. string recycDir = AppSettingsHelper.Get("MemoRecycleBinPath");
  1130. new IOOperatorHelper().MoveFile(sourcePath, recycDir);
  1131. var result = await _resItemInfoRep._sqlSugar.Updateable<Res_MemoInfo>()
  1132. .SetColumns(it => it.IsDel == 1)
  1133. .SetColumns(it => it.DeleteUserId == _sysUser.Id)
  1134. .SetColumns(it => it.DeleteTime == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
  1135. .Where(s => s.Id == _source.Id)
  1136. .ExecuteCommandAsync();
  1137. return Ok(JsonView(result > 0));
  1138. }
  1139. return Ok(JsonView(rst));
  1140. }
  1141. #endregion
  1142. }
  1143. }