FM/Assets/Scripts/FUJIFILM/UI/Logic/PrintReceiptUI.cs

116 lines
3.4 KiB
C#
Raw Normal View History

2025-08-21 13:10:17 +08:00
using System;
using System.IO;
using Cysharp.Threading.Tasks;
using Newtonsoft.Json;
using Runtime;
2025-07-10 23:16:27 +08:00
using UnityEngine.UI;
using TMPro;
using UnityEngine;
2025-08-20 11:14:21 +08:00
namespace HK.FUJIFILM
2025-07-10 23:16:27 +08:00
{
public class PrintReceiptUI : UIBase
{
[SerializeField] private TMP_Text txtName;
[SerializeField] private TMP_Text txtOrderID;
[SerializeField] private Button btnConfirm;
[SerializeField] private Button btnReprintReceipt;
[SerializeField] private TMP_Text txtWaitPrinter;
2025-07-10 23:16:27 +08:00
2025-08-21 13:10:17 +08:00
string filePath;
2025-07-10 23:16:27 +08:00
public override void OnInit()
{
base.OnInit();
2025-07-10 23:16:27 +08:00
#region AutoGen_Init
txtName = GetValue<TMP_Text>("txtName");
txtOrderID = GetValue<TMP_Text>("txtOrderID");
btnConfirm = GetValue<Button>("btnConfirm");
btnReprintReceipt = GetValue<Button>("btnReprintReceipt");
txtWaitPrinter = GetValue<TMP_Text>("txtWaitPrinter");
btnConfirm.onClick.AddListener(OnClickbtnConfirm);
btnReprintReceipt.onClick.AddListener(OnClickbtnReprintReceipt);
2025-07-10 23:16:27 +08:00
#endregion
}
2025-08-20 11:14:21 +08:00
public override void OnOpen(UIBase lastUI = null)
{
2025-08-20 11:14:21 +08:00
base.OnOpen(lastUI);
2025-08-21 13:10:17 +08:00
txtWaitPrinter.gameObject.SetActive(true);
btnConfirm.gameObject.SetActive(false);
btnReprintReceipt.gameObject.SetActive(false);
txtName.text = ShoppingCartManager.Instance.ShoppingCart.userName;
2025-08-21 13:10:17 +08:00
txtOrderID.text = ShoppingCartManager.Instance.ShoppingCart.orderID.ToString();
var serializeObject = JsonConvert.SerializeObject(ShoppingCartManager.Instance.ShoppingCart);
filePath = $"{Application.streamingAssetsPath}/Data/dataFile{DateTime.Now:yyyyMMddHHmmss}.json";
var fileInfo = new FileInfo(filePath);
if (!fileInfo.Directory.Exists)
{
fileInfo.Directory.Create();
}
fileInfo.CreateText().Close();
File.WriteAllText(filePath, serializeObject);
RunPrinting(filePath);
}
void RunPrinting(string str)
{
async UniTask PrintReceipt()
{
NetworkManager.Instance.Upload(null);
await CitizenPrinterManager.StartPrintingAsync(str);
PrintFinish();
}
PrintReceipt().Forget();
}
void PrintFinish()
{
txtWaitPrinter.gameObject.SetActive(false);
btnConfirm.gameObject.SetActive(true);
btnReprintReceipt.gameObject.SetActive(true);
2025-08-22 00:42:57 +08:00
ShoppingCartManager.Instance.ShoppingCart.Reset();
}
2025-07-10 23:16:27 +08:00
#region AutoGen_Method
private void OnClickbtnConfirm()
{
2025-08-21 13:10:17 +08:00
UIManager.Instance.CloseAll();
UIManager.Instance.ShowUI(nameof(HomeUI), null);
}
private void OnClickbtnReprintReceipt()
{
2025-08-21 13:10:17 +08:00
RunPrinting(filePath);
}
2025-07-10 23:16:27 +08:00
#endregion
public override void OnDispose()
{
base.OnDispose();
2025-07-10 23:16:27 +08:00
#region AutoGen_Dispose
btnConfirm.onClick.RemoveListener(OnClickbtnConfirm);
btnReprintReceipt.onClick.RemoveListener(OnClickbtnReprintReceipt);
txtName = null;
txtOrderID = null;
btnConfirm = null;
btnReprintReceipt = null;
txtWaitPrinter = null;
2025-07-10 23:16:27 +08:00
#endregion
}
}
}