static void Main(string[] args) { XmlConfigurator.Configure(); string path = Setting.env == "local" ? ".\\src\\WincalXConfigLocal.json" : null; WincalXConnector Connector = Customer.execute(path); _ = Connector.Connect(new ClientInfo { StoreCode = Setting.storeCode, Email = "*****@*****.**", Password = "******" }).Result; Provider.execute(Connector); }
public static WincalXConnector execute(string path) { WincalXConnector.InitializeConnector(ConfigurationPath: path); WincalXConnector Connector = WincalXConnector.GetConnector(); //Connect Status Changed Handler Connector.ConnectionStatusChanged += (Sender, Status) => { logger.Info($"Connect {Setting.env} environment: {Status.IsConnect}"); }; //Check Received Request Connector.ReceivedRequest += (Sender, Message) => { MessageInfo messageInfo = Message.MessageInfo; DeviceLinkMsgProps args = Message.DeviceLinkMsgProps; RequestJob requestJob = messageInfo.RequestJob; logger.Info($"\n\n{DateTime.Now} COMMON MESSAGE INFO >>>DEVICE_ID: {Message.DeviceId}, Command: {messageInfo.Command}"); VOD.BasicParameters basicMsg = Utility.DeserializeFromJsonString <VOD.BasicParameters>(messageInfo.BasicParameters); logger.Info($"MESSAGE Basic parameters >>> {messageInfo.BasicParameters}"); logger.Info($"MESSAGE Extend parameters >>> {messageInfo.ExtendParameters}"); basicMsg.ResultFlag = 0; requestJob.Status = RequestJobConst.RECEIVED; switch (messageInfo.Command) { case "2004": // card issue case "2006": // card issue Card.Issue.ExtendParam CardIssueExtendParam = new Card.Issue.ExtendParam { numberOfIssue = 1 }; MessageInfo cardIssueResponseMsg = new MessageInfo { Id = messageInfo.Id, Command = messageInfo.Command, CreatedTime = Utility.ToUnixTime(DateTime.Now), BasicParameters = Utility.SerializeToJSONString(basicMsg), ExtendParameters = Utility.SerializeToJSONString(CardIssueExtendParam), RequestJob = requestJob }; logger.Info($"MESSAGE Response Basic parameters >>> {messageInfo.BasicParameters}"); logger.Info($"MESSAGE Response Extend parameters >>> {messageInfo.ExtendParameters}"); _ = Connector.Response(cardIssueResponseMsg, args); //Response a request from server. Thread.Sleep(2000); requestJob.Status = RequestJobConst.DONE; _ = Connector.Request(cardIssueResponseMsg); //Request to the server. break; case "2007": // card-read basicMsg.RoomNumbers = new List <string>() { "0610", "0301219" }; Card.Read.ExtendParam CardReadExtendParam = new Card.Read.ExtendParam { checkinDateTime = "202103301200", checkoutDateTime = "202103301230", posInformation = new Card.PosInfoExParam { inType = "$ ", cardType = 0, systemCode = "getCardPrintingHotelCode", roomNumber = "07000" } }; MessageInfo cardReadResponseMsg = new MessageInfo { Id = messageInfo.Id, Command = messageInfo.Command, CreatedTime = Utility.ToUnixTime(DateTime.Now), BasicParameters = Utility.SerializeToJSONString(basicMsg), ExtendParameters = Utils.serializeObjectSnakeJson(CardReadExtendParam), RequestJob = requestJob }; logger.Info($"MESSAGE Response Basic parameters >>> {messageInfo.BasicParameters}"); logger.Info($"MESSAGE Response Extend parameters >>> {messageInfo.ExtendParameters}"); _ = Connector.Response(cardReadResponseMsg, args); //Response a request from server. Thread.Sleep(2000); requestJob.Status = RequestJobConst.DONE; break; case "PRINTER_REPORT_REQUEST": case "PRINTER_RECEIPT_REQUEST": case "2014": // Print Receipt case "2015": // Print Report Printer.Message printerMessage = Utility.DeserializeFromBSON <Printer.Message>(messageInfo.Message); logger.Info($"PRINTER MESSAGE Extend parameters >>> {messageInfo.ExtendParameters}"); Printer.BasicParameter basicParameter = new Printer.BasicParameter(Message.StoreCode, Message.TerminalId, 0); requestJob.Status = RequestJobConst.RECEIVED; MessageInfo responseMessage = new MessageInfo { Id = messageInfo.Id, Command = messageInfo.Command, CreatedTime = Utility.ToUnixTime(DateTime.Now), BasicParameters = Utility.SerializeToJSONString(basicParameter), RequestJob = requestJob }; _ = Connector.Response(responseMessage, args); //Response a request from server. Thread.Sleep(2000); requestJob.Status = RequestJobConst.DONE; _ = Connector.Request(responseMessage); //Request to the server. break; case "1001": case "1002": case "1003": case "1004": case "1005": case "1006": case "1007": case "1008": case "1009": case "1010": case "1011": case "1012": case "1013": case "1014": case "1015": case "1016": case "1017": VOD.BasicParameters vodMessage = Utility.DeserializeFromJsonString <VOD.BasicParameters>(messageInfo.BasicParameters); logger.Info($"VOD MESSAGE Basic parameters >>> {messageInfo.BasicParameters}"); vodMessage.ResultFlag = 0; requestJob.Status = RequestJobConst.RECEIVED; MessageInfo vodResponseMessage = new MessageInfo { Id = messageInfo.Id, Command = messageInfo.Command, CreatedTime = Utility.ToUnixTime(DateTime.Now), BasicParameters = Utility.SerializeToJSONString(vodMessage), RequestJob = requestJob }; _ = Connector.Response(vodResponseMessage, args); //Response a request from server. Thread.Sleep(2000); requestJob.Status = RequestJobConst.DONE; _ = Connector.Request(vodResponseMessage); //Request to the server. break; default: logger.Info($"MESSAGE >>> ID: {messageInfo.Id}, Command: {messageInfo.Command}, CreateTime: {messageInfo.CreatedTime}"); break; } }; //Handling Error Message Connector.ErrorListener += (Sender, Message) => { MessageInfo messageInfo = Message.MessageInfo; DeviceLinkMsgProps args = Message.DeviceLinkMsgProps; logger.Info($"ERROR MESSAGE INFO >>>DEVICE_ID: {Message.DeviceId}, ID: {messageInfo.Id}, Command: {messageInfo.Command}, Message: {messageInfo.Message} ,CreateTime: {messageInfo.CreatedTime}"); logger.Info($"ERROR REQUEST INFO >>>ID: {messageInfo.RequestJob.Id}, STATUS: {messageInfo.RequestJob.Status}"); }; return(Connector); }
public Utils(WincalXConnector connector) { this.connector = connector; }
public static void execute(WincalXConnector Connector) { Utils utils = new Utils(Connector); while (true) { logger.Info("Input Case: "); string input = Console.ReadLine(); Console.Out.WriteLine(""); MessageInfo requestMessage = new MessageInfo { Id = Guid.NewGuid().ToString(), CreatedTime = Utility.ToUnixTime(DateTime.Now), BasicParameters = Utils.serializeObjectSnakeJson(new BasicParam()), }; switch (input) { case "simple": logger.Info("Input case simple: "); string inputSimple = Console.ReadLine(); logger.Info("Input The Message: "); string input2 = Console.ReadLine(); if (inputSimple == "print") { requestMessage.Command = input; requestMessage.RequestJob = utils.createRequestJob(input2, RequestJobConst.DONE); } else { requestMessage.Command = "SIMPLE_MESSAGE_WITH_RESPONSE"; requestMessage.RequestJob = utils.createRequestJob(Guid.NewGuid().ToString(), RequestJobConst.NEW); } requestMessage.Message = Utility.SerializeToBSON(new SimpleMessageInfo(input2)); utils.requestAndResponse(requestMessage); break; case "3009": Console.Out.WriteLine("master_data_request"); utils.requestAndResponse(requestMessage, "3009", null); break; case "3010": Console.Out.WriteLine("Log_Registration"); utils.requestAndResponse(requestMessage, "3010", new LogRegistration.RequestExtendParam()); break; default: case "3900": logger.Info("Enter name of xml file: "); string xmlFileName = Console.ReadLine(); Console.Out.WriteLine("smart_check_in"); utils.requestAndResponse <SmartCheckInRequest.GetReserveNoRequest>(requestMessage, "3900", new SmartCheckIn.RequestExtendParam("api"), "./src/message/" + xmlFileName + ".xml"); break; case "4008": Console.Out.WriteLine("card_issuance"); utils.requestAndResponse(requestMessage, "4008", new Card.IssueInfo.RequestExtendParam()); break; case "4009": Console.Out.WriteLine("card_qty_notify"); utils.requestAndResponse(requestMessage, "4009", new Card.QtyNotify.RequestExtendParam()); break; case "Cancel": //Cancel Comsumer. Connector.CancelConsumer(); break; case "exit": //Disconnect. Connector.Disconnect(); break; } } }