using System; using System.Linq; using BITKit; using Godot; using Microsoft.Extensions.DependencyInjection; namespace BITFactory; public partial class SearchRegister:Node { [Export] private LineEdit keyLine; [Export] private LineEdit valueLine; [Export] private LineEdit nameLine; [Export] private LineEdit idLine; [Export] private LineEdit registryRecordLine; [Export] private Button registryButton; [Export] private RichTextLabel registryResultLabel; public override void _Ready() { registryButton.Pressed += Create; } private void Create() { var searchEngine = DI.Get(); registryResultLabel.Text = $"正在注册标识"; var current = searchEngine .GetSearchResults(keyLine.Text) .Where(x=>x.Key == keyLine.Text && x.Id == idLine.Text) ; SearchResult result=default; var searchResults = current as SearchResult[] ?? current.ToArray(); if (searchResults.Any()) { result = searchResults.First(); result.Value = valueLine.Text; result.Display = nameLine.Text; result.RegistryRecord = registryRecordLine.Text; result.UpdateDate = DateTime.Now; searchEngine.SaveChanges(); registryResultLabel.Text = $"标识:{result.Key}已完成更新"; } else { result = new SearchResult() { Key = keyLine.Text, Value = valueLine.Text, Display = nameLine.Text, Id = idLine.Text, RegistryRecord = registryRecordLine.Text, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }; try { registryResultLabel.Text = $"标识:{result.Key}已完成注册"; } catch (Exception e) { registryResultLabel.Text = $"标识:{result.Key}注册失败,原因:\n{e.Message}"; throw; } } } }