ResourceController.cs 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229
  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. }