SatEditor.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using DevExpress.XtraEditors;
  2. using ExtensionsDev;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Data.Entity;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Windows.Forms;
  11. using DataSimulation.Repostory;
  12. using DataSimulation.Repostory.EFContext;
  13. using DataSimulation.Repostory.Model;
  14. using DxHelper;
  15. namespace DataSimulation.Forms.EditForms
  16. {
  17. public partial class SatEditor : DevExpress.XtraEditors.XtraForm
  18. {
  19. public SatInfo info;
  20. public SatEditor()
  21. {
  22. InitializeComponent();
  23. this.layoutControl1.UseDefault();
  24. this.Text = "添加卫星";
  25. info = new SatInfo();
  26. this.StartPosition = FormStartPosition.CenterParent;
  27. btnOk.ImageOptions.SvgImage = SvgHelper.LoadFromFile("Images\\Ok.svg");
  28. btnOk.ImageOptions.SvgImageSize = new Size(20, 20);
  29. btnCancel.ImageOptions.SvgImage = SvgHelper.LoadFromFile("Images\\Cancel.svg");
  30. btnCancel.ImageOptions.SvgImageSize = new Size(20, 20);
  31. txtSatLon.EditValueChanged += TxtSatLon_EditValueChanged;
  32. searchLookUpEdit1.EditValueChanged += SearchLookUpEdit1_EditValueChanged;
  33. }
  34. private void SearchLookUpEdit1_EditValueChanged(object sender, EventArgs e)
  35. {
  36. searchLookUpEdit1.CheckSearch(dxErrorProvider, "卫星");
  37. }
  38. private void TxtSatLon_EditValueChanged(object sender, EventArgs e)
  39. {
  40. txtSatLon.CheckLon(dxErrorProvider, "轨道");
  41. }
  42. public SatEditor(SatInfo info)
  43. : this()
  44. {
  45. this.Text = "编辑卫星";
  46. this.info = info;
  47. }
  48. private async void SatEditor_Load(object sender, EventArgs e)
  49. {
  50. var listXl = await XlCache.GetAllAsync();
  51. this.searchLookUpEdit1.UseDefault().SetStringData(listXl.Select(p => p.Sat)).UseDoubleClickToSelectAll();
  52. if (this.Text == "编辑卫星" && info != null)
  53. {
  54. this.txtSatName.Text = info.SatName;
  55. this.txtSatLon.Text = $"{info.SatLon}";
  56. }
  57. }
  58. private void btnCancel_Click(object sender, EventArgs e)
  59. {
  60. this.DialogResult = DialogResult.Cancel;
  61. }
  62. private async void btnOk_Click(object sender, EventArgs e)
  63. {
  64. if (!searchLookUpEdit1.CheckSearch(dxErrorProvider, "卫星") || !txtSatLon.CheckLon(dxErrorProvider, "轨道"))
  65. {
  66. return;
  67. }
  68. try
  69. {
  70. var sat = searchLookUpEdit1.Text;
  71. var idx = sat.LastIndexOf('(');
  72. var satCodeStr = sat.Substring(idx + 1, sat.Length - idx - 2);
  73. info.SatCode = Convert.ToInt32(satCodeStr);
  74. info.SatName = txtSatName.Text.Trim();
  75. if (!string.IsNullOrWhiteSpace(txtSatLon.Text))
  76. info.SatLon = Convert.ToDouble(txtSatLon.Text);
  77. if (this.Text == "添加卫星")
  78. {
  79. using (SimulationContext db = new SimulationContext())
  80. {
  81. bool isAny = db.SatInfos.Any(s => s.SatName == info.SatName && s.SatCode == info.SatCode && s.SatLon == info.SatLon);
  82. if (isAny)
  83. {
  84. DxHelper.MsgBoxHelper.ShowError($"添加卫星信息失败,已经存在卫星:{info.Sat}");
  85. return;
  86. }
  87. db.SatInfos.Add(info);
  88. await db.SaveChangesAsync();
  89. }
  90. }
  91. else
  92. {
  93. using (SimulationContext db = new SimulationContext())
  94. {
  95. bool isAny = db.SatInfos.Any(s => s.ID != info.ID && s.SatName == info.SatName && s.SatCode == info.SatCode && s.SatLon == info.SatLon);
  96. if (isAny)
  97. {
  98. DxHelper.MsgBoxHelper.ShowError($"编辑卫星信息失败,已经存在卫星:{info.Sat}");
  99. return;
  100. }
  101. var find = await db.SatInfos.Where(p => p.ID == info.ID).FirstOrDefaultAsync();
  102. find.SatName = info.SatName;
  103. find.SatCode = info.SatCode;
  104. find.SatLon = info.SatLon;
  105. await db.SaveChangesAsync();
  106. }
  107. }
  108. this.DialogResult = DialogResult.OK;
  109. }
  110. catch (Exception ex)
  111. {
  112. Serilog.Log.Error(ex, $"{this.Text}信息出错");
  113. DxHelper.MsgBoxHelper.ShowError($"{this.Text}信息出错");
  114. }
  115. }
  116. }
  117. }