common/ProductionUiCordonel/Model/MarriageMultiModeViewModel.cs
2026-04-23 17:50:07 +02:00

159 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
using System.Windows;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts;
using Xylem.Common.Logic.SoftwareAccessHelper;
namespace ProductionUiCordonelLegacy.Model
{
public class MarriageMultiModeViewModel : BaseMultiModeChildViewModel
{
private Boolean canMarry;
public Boolean CanMarry
{
get => canMarry;
set
{
canMarry = value;
NotifyPropertyChanged();
}
}
private Int32 serialNr;
public Int32 SerialNr
{
get => serialNr;
set
{
serialNr = value;
NotifyPropertyChanged();
}
}
private Boolean locked = false;
public MarriageMultiModeViewModel(String ctrName, Int32 slotNR, List<String> barcodeTrigger, Int32? stationID = null) :
base(ctrName, slotNR, barcodeTrigger, stationID)
{
VisibilityMarriage = Visibility.Visible;
MeterDetectedHandler += PickingMultiModeViewModel_MeterDetectedHandler;
}
internal async Task<Boolean> Store()
{
var url = $"{ServiceUrls.MarriageServiceUrl()}SetPcbToSerial?PcbId={CurrentPcbID}&SerialNumber={SerialNr}&returnMetroData=0";
return await Task<Boolean>.Run(() =>
{
try
{
//url = "http://10.49.40.25/MeterProcessState/api/Marriage/SetPcbToSerial?PcbId=201420242&SerialNumber=20728820&returnMetroData=1";
var resp = LocalWebRequest.GetRequest(url);
if (!string.IsNullOrEmpty(resp))
{
if (CurrentMeter != null)
{
CurrentMeter.Login();
//if (resp.Trim() != "store")
//{
// var myJsonResponse = JsonConvert.DeserializeObject<IList<ProgrammingParameters>>(resp);
// foreach (var item in myJsonResponse)
// {
// CurrentMeter.WriteRegister(item.RegisterName, item.RegisterValue);
// }
//}
CurrentMeter.SetProcessState(DisplayCodes.Mounted);
CurrentMeter.GetLastProcessState();
}
return true;
}
Log($"No result for {url} on Store");
return false;
}
catch (Exception ex)
{
if (ex is WebException)
{
Log($"Error on Store {url}: {Environment.NewLine} {((WebException)ex).Message}");
}
else
{
Log(ex.Message);
}
}
return false;
});
}
private void PickingMultiModeViewModel_MeterDetectedHandler(Object sender, EventArgs e)
{
CheckBtnEnable();
}
private void CheckBtnEnable()
{
if (SerialNr > 0 && !string.IsNullOrEmpty(CurrentPcbID))
{
CanMarry = true;
}
else
{
CanMarry = false;
}
}
public override void InputText(String text)
{
try
{
SerialNr = 0;
text = text.Replace(" ", "");
var preFix = "8SEN20";
if (text.Contains(preFix) && text.Contains(","))
{
var tmpSerialNr = 0;
var srText = text.Substring(text.IndexOf(preFix) + preFix.Length, text.IndexOf(",") - preFix.Length);
if (int.TryParse(srText, out tmpSerialNr))
{
SerialNr = tmpSerialNr;
}
}
CheckBtnEnable();
}
catch (Exception ex)
{
Log(ex.Message);
}
finally
{
CheckBtnEnable();
}
}
public override Boolean SlotIsLocked()
{
return locked;
}
}
}