예제 #1
0
        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);
        }
예제 #2
0
    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);
    }
예제 #3
0
 public Utils(WincalXConnector connector)
 {
     this.connector = connector;
 }
예제 #4
0
    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;
            }
        }
    }