コード例 #1
0
        private void TransferOrder(Order order)
        {
            TransferView transferView = new TransferView();

            transferView.Order         = order;
            transferView.ShowInTaskbar = false;
            transferView.ShowDialog();
            if (transferView.ModalResul)
            {
                foreach (var servingCourse in order.DisplayGroups)
                {
                    foreach (var item in servingCourse.Items)
                    {
                        DbOrderItem.UpdateItemOnTransfer(item.OrderItemKey, transferView.SelectedTerminal.TerminalId, OrderStatus.Transfered);
                    }
                }
                TcpStreamSender  transferStream  = new TcpStreamSender();
                TcpStreamMessage transferMessage = new TcpStreamMessage(transferView.SelectedTerminal.TerminalIpAddress, inMessageType: TcpStreamMessageType.Order);
                transferMessage.AddData(order.OrderKey);
                var transferSuccessful = transferStream.SendMessage(transferMessage);
                if (transferSuccessful)
                {
                    ChefmateController.Instance.AnalyticalData.TotalOrdersCount--;
                    ChefmateController.Instance.AnalyticalData.CurrentOrdersCount--;
                    ChefmateController.Instance.AnalyticalData.CurrentItems -= order.Items.Count;
                    ChefmateController.Instance.RemoveOrder(order);
                    PublishRedrawEvent();
                }
            }
        }
コード例 #2
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        private void SetMessageTypeFromStream(ref MemoryStream stream, ref TcpStreamMessage streamMessage)
        {
            int intMessageType = 0;

            streamMessage.MessageType = GetInt32FromStream(stream, out intMessageType)
                                            ? (TcpStreamMessageType)intMessageType
                                            : TcpStreamMessageType.None;
        }
コード例 #3
0
ファイル: OutputController.cs プロジェクト: radtek/Pos
        private void SendItemKey(int orderItemKey)
        {
            TcpStreamMessage message = new TcpStreamMessage();

            message.SetIpAddressFromString(_outputTerminal.TerminalIpAddress);
            message.AddData(orderItemKey);
            message.MessageType = TcpStreamMessageType.Item;
            SendTcpMessage(message);
        }
コード例 #4
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        bool IsMessageContainsDbKey(ref TcpStreamMessage streamMessage)
        {
            bool result = false;

            int value = 0;

            result = GetInt32FromStream(streamMessage.DataStream, out value);

            return(result);
        }
コード例 #5
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        private bool ValidateMessageData(ref TcpStreamMessage streamMessage)
        {
            bool result = false;

            // validation 1 : check whether the stream contains an integer for db key
            result = IsMessageContainsDbKey(ref streamMessage);

            // reset the data stream position to begining
            streamMessage.DataStream.Position = 0;

            return(result);
        }
コード例 #6
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        private void SetMessageDataFromStream(ref MemoryStream stream, ref TcpStreamMessage streamMessage)
        {
            // copy the rest of the data to the message's data stream
            stream.CopyTo(streamMessage.DataStream);

            streamMessage.DataStream.Position = 0;

            if (!ValidateMessageData(ref streamMessage))
            {
                throw new Exception("Message data stream is invalid");
            }
        }
コード例 #7
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        protected override void OnDataReceived(object sender, StreamReceiverEventArgs streamArgs)
        {
            TcpStreamMessage streamMessage = new TcpStreamMessage();

            // create a copy of stream data
            MemoryStream stream = streamArgs.Stream;

            // decode the stream into data
            DecodeStreamToMessage(ref stream, ref streamMessage);

            if (streamMessage.MessageType != TcpStreamMessageType.None)
            {
                streamArgs.Response = GetResponseMessage(streamMessage.MessageType);
                RaiseMessageRecievedEvents(streamMessage);
            }
        }
コード例 #8
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        private void DecodeStreamToMessage(ref MemoryStream stream, ref TcpStreamMessage streamMessage)
        {
            try
            {
                stream.Position = 0;

                // it is essential to read the message type first and then the data in that order.
                // as we encode them in that order when we send the data
                SetMessageTypeFromStream(ref stream, ref streamMessage);
                SetMessageDataFromStream(ref stream, ref streamMessage);
            }
            catch
            {
                streamMessage.MessageType = TcpStreamMessageType.None;
                streamMessage.DataStream.Close();

                // todo: log exceptions
            }
        }
コード例 #9
0
ファイル: StreamConverterChefmate.cs プロジェクト: radtek/Pos
        private void RaiseMessageRecievedEvents(TcpStreamMessage streamMessage)
        {
            int dbKey = 0;

            GetInt32FromStream(streamMessage.DataStream, out dbKey);

            switch (streamMessage.MessageType)
            {
            case TcpStreamMessageType.Order:
                RaiseDbMessageReceivedEvent(DbMessageType.Order, dbKey);
                break;

            case TcpStreamMessageType.Group:
                RaiseDbMessageReceivedEvent(DbMessageType.Group, dbKey);
                break;

            case TcpStreamMessageType.Item:
                RaiseDbMessageReceivedEvent(DbMessageType.Item, dbKey);
                break;

            default:
                break;
            }
        }
コード例 #10
0
ファイル: OutputController.cs プロジェクト: radtek/Pos
        private void SendTcpMessage(TcpStreamMessage message)
        {
            TcpStreamSender tcpStreamSender = new TcpStreamSender();

            tcpStreamSender.SendMessage(message);
        }