common/Ui/RelatePcb/MainWindow.xaml.cs
2026-04-23 17:50:07 +02:00

129 lines
4.3 KiB
C#

using System;
using System.IO;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using Newtonsoft.Json;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts;
namespace Xylem.Common.Ui.RelatePcb
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
GenesisMeter CurrentMeter;
MeterBatch CurrentMeterBatch;
private const string MarriageUrl = "http://sla12iis01/LindaDeMol/api/Marriage/";
public MainWindow()
{
InitializeComponent();
var configfile = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Xylem.Common.Hardware.WaterMeter.Genesis), ProgramConfig.SerialConfigFileName);
if (!File.Exists(configfile))
{
throw new ApplicationException($"Configuration file {configfile} not found ");
}
var tr = new StreamReader(configfile);
var meterConfigList = JsonConvert.DeserializeObject<SlotConfig[]>(tr.ReadToEnd());
cobSlot.Items.Clear();
cobSlot.Items.Add("Manual input");
foreach (var item in meterConfigList)
{
cobSlot.Items.Add(item.Slot);
}
cobSlot.SelectedItem = "Manual input";
}
private void TxtorderNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (sender is ComboBox)
{
var selectedText = ((ComboBox)sender).SelectedValue.ToString();
var slotNR = 0;
if (int.TryParse(selectedText, out slotNR))
{
CurrentMeterBatch = new MeterBatch();
CurrentMeter = new GenesisMeter();
CurrentMeter.SetupFromConfigFile(slotNR);
CurrentMeterBatch.AddMeter(CurrentMeter);
CurrentMeter.Login();
TxtPcbId.Text = CurrentMeter.GetPcbId();
}
}
}
private void btnMarry_Click(object sender, RoutedEventArgs e)
{
try
{
if (string.IsNullOrEmpty(TxtPcbId.Text))
{
MessageBox.Show("Please input a PcbId");
return;
}
if (string.IsNullOrEmpty(TxtSerialNumber.Text))
{
MessageBox.Show("Please input a SerialNumber");
return;
}
var url = $"{MarriageUrl}SetPcbToSerial?PcbId={TxtPcbId.Text}&SerialNumber={TxtSerialNumber.Text}";
var http = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)http.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
MessageBox.Show("Success");
}
else
{
var responseStream = response.GetResponseStream();
if (responseStream == null)
{
throw new InvalidOperationException();
}
using (var sr = new StreamReader(responseStream))
{
var responseJson = sr.ReadToEnd();
MessageBox.Show($"Error on Store: {Environment.NewLine} {responseJson}");
}
}
if (CurrentMeter != null)
{
CurrentMeter.SetProcessState(DisplayCodes.Mounted);
CurrentMeter.GetLastProcessState();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
CurrentMeter = null;
CurrentMeterBatch = null;
}
}
}