コード例 #1
0
        private async Task LogOut(bool closeTill)
        {
            log.Debug("LogoutViewModel:Started Logout process.");
            var result = posManager.PosLogout(closeTill);

            if (!result)
            {
                log.Error("LogoutViewModel: Logout failed.");
                log.Info("LogoutViewModel: Show MessageBox to user and inform him to retry.");
                var response = messageBoxService.ShowMessageBox("ConnectionLoseWhileLogout", MessageBoxButtonType.OK);
                log.Debug("LogoutViewModel: Close the navigation.");
                await navigationService.Close(this);
            }
            else
            {
                log.Debug("LogoutViewModel: Successful logout.");
                if (App.IsFcsConnected)
                {
                    log.Debug("LogoutViewModel: Fcs is connected. try to sign off.");
                    await App.SignOffAsync();
                }
                else
                {
                    log.Error("LogoutViewModel: Fcs is not connected.Go to LoginViewModel.");
                    await navigationService.Navigate <LoginViewModel>();
                }
            }
        }
コード例 #2
0
 private async Task ProcessInputs()
 {
     if (IsInputValid())
     {
         log.Debug("PrepayViewModel: Input is valid.Update active sale.");
         UpdateActiveSale();
         await navigationService.Navigate <TenderSelectionViewModel, int>(PumpId);
     }
     else
     {
         log.Error("PrepayViewModel: Input is invalid.");
     }
 }
コード例 #3
0
        public async Task <bool> Ping()
        {
            var client = new System.Net.Http.HttpClient();

            try {
                string url = string.Format("{0}api/driver/ping", Constants.WebAPIBaseAddress);
                client.BaseAddress = new Uri(url);
                client.Timeout     = TimeSpan.FromSeconds(10);

                var response = await client.GetAsync(url);

                if (response.IsSuccessStatusCode)
                {
                    IsConnected = true;
                    return(true);
                }
                else
                {
                    IsConnected = false;
                }
            } catch (WebException ex) {
                _mvxLog.Error($"Ping error: {ex}");
                IsConnected = false;
            } catch (Exception e) {
                if (e.InnerException != null && e.InnerException is WebException)
                {
                    IsConnected = false;
                }
                else
                {
                    IsConnected = true;
                }
            }
            return(false);
        }
コード例 #4
0
        private async Task <List <ReceiptInfo> > GetReceipts(string invoiceNo, ReceiptOrder receiptOrder)
        {
            log.Debug("ReprintReceiptViewModel: Trying to get receipts.");
            List <ReceiptInfo> receiptData = null;
            GetReceiptCriteria criteria    = new GetReceiptCriteria()
            {
                Date = SelectedDate,
                StartInvoiceNumber = new ReceiptStartInvoiceNumber()
                {
                    InvoiceNumber = invoiceNo,
                    ReceiptOrder  = receiptOrder
                },
                Count = appSettings.NoOfReceiptsToShow
            };

            log.Debug("ReprintReceiptViewModel: Trying to fetch all receipts");
            var response = await this.fcsService?.GetReceipt(ReceiptType.PayInStore, criteria);

            if (response.ResultOK)
            {
                log.Debug("ReprintReceiptViewModel: Fetched all receipts successfully");
                receiptData = response.Data;
                if (receiptOrder == ReceiptOrder.Ascending)
                {
                    receiptData.Reverse();
                }
                log.Debug("ReprintReceiptViewModel: Receipt Data:{0}.", ReceiptData);
            }
            else
            {
                log.Error("ReprintReceiptViewModel: Can't fetch receipts data properly.");
            }

            return(receiptData);
        }
コード例 #5
0
        private async Task NavigateToTenderSelection()
        {
            try
            {
                IsFcsConnected = App.IsFcsConnected;
                if (IsFcsConnected)
                {
                    System.Timers.Timer goToTenderSelectionTimer;
                    goToTenderSelectionTimer = new System.Timers.Timer(2000)
                    {
                        AutoReset = false
                    };

                    goToTenderSelectionTimer.Elapsed += async(sender, eventArgs) =>
                    {
                        log.Debug("CardRefundViewModel: Tps is not connected. Go to Tender Selection page again.");
                        await this.navigationService.Close(this);
                    };
                    goToTenderSelectionTimer.Enabled = true;
                }
                else
                {
                    log.Error("CardRefundViewModel: Fcs is not connected. Can't navigate to tender selection page.");
                }
            }
            catch (Exception ex)
            {
                log.DebugException(string.Format("CardRefundViewModel: Exception:{0}.", ex.Message), ex);
            }
        }
コード例 #6
0
        public void WriteUDPDataToDataBase(string frameToSend, bool sentTypeMessage)
        {
            SQLiteCRUD     sql             = new(ConnectionStringManager.GetConnectionString(ConnectionStringManager.DataBases.PCControllerDB));
            UdpSenderModel udpFrame        = new();
            string         incomingMessage = IncomingMessage;

            if (incomingMessage is null)
            {
                _log.Error("Incoming Message is null");
            }
            else
            {
                if (incomingMessage.Contains("\r\n"))
                {
                    incomingMessage = incomingMessage.Replace("\r\n", "!0A!0D");
                }
                else if (incomingMessage.Contains("\r"))
                {
                    incomingMessage = incomingMessage.Replace("\r", "!0D");
                }
                else if (incomingMessage.Contains("\n"))
                {
                    incomingMessage = incomingMessage.Replace("\n", "!0A");
                }

                if (sentTypeMessage is true)
                {
                    udpFrame.OutgoingMessage = frameToSend;
                    udpFrame.IncomingMessage = incomingMessage;
                    udpFrame.RemoteIP        = _asyncUdpLink.Address;
                    udpFrame.LocalIP         = GetLocalIPAddress();
                    udpFrame.LocalPort       = _asyncUdpLink.LocalPort;
                    udpFrame.RemotePort      = _asyncUdpLink.Port;
                    udpFrame.Timestamp       = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
                    sql.InsertUdpSentData(udpFrame);

                    string udpFrameCombine =
                        $"SENT: {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} Sent Frame: {frameToSend} Remote IP: {_asyncUdpLink.Address} This IP: {GetLocalIPAddress()} Remote Port: {_asyncUdpLink.LocalPort} Local Port: {_asyncUdpLink.Port}";

                    UdpFrameCombined = udpFrameCombine;
                }
                else
                {
                    udpFrame.OutgoingMessage = string.Empty;
                    udpFrame.IncomingMessage = incomingMessage;
                    udpFrame.RemoteIP        = _asyncUdpLink.Address;
                    udpFrame.LocalIP         = GetLocalIPAddress();
                    udpFrame.LocalPort       = _asyncUdpLink.LocalPort;
                    udpFrame.RemotePort      = _asyncUdpLink.Port;
                    udpFrame.Timestamp       = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
                    sql.InsertUdpSentData(udpFrame);

                    string udpFrameCombine =
                        $"RECEIVED: {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} Received Frame: {incomingMessage} Remote IP: {_asyncUdpLink.Address} This IP: {GetLocalIPAddress()} Remote Port: {_asyncUdpLink.LocalPort} Local Port: {_asyncUdpLink.Port}";

                    UdpFrameCombined = udpFrameCombine;
                }
            }
        }
コード例 #7
0
        private void GetGrades()
        {
            log.Debug("GradesViewModel: Trying to get grades.");
            var newGrades = new MvxObservableCollection <GradeDetails>();

            if (fcsService.FCSConfig == null)
            {
                log.Error("GradesViewModel: Fcs configuration is null.");
                return;
            }
            fcsService.FCSConfig.FuelPrice.Grades.ForEach(
                grade => newGrades.Add(new GradeDetails()
            {
                Decimal     = FuelUnitPriceDecimal,
                CurrentData = grade
            }));
            SelectedGrade = null;
            Grades        = newGrades;
            log.Debug("GradesViewModel: Finished fetching all grades.");
        }
コード例 #8
0
        public override async void ViewAppeared()
        {
            log.Debug("CardTenderViewModel: View is appeared.");
            base.ViewAppeared();

            try
            {
                SubscribeAllEvents();
                amount         = posManager.ActiveSale.Amount;
                IsTpsConnected = App.IsTpsConnected;
                IsFcsConnected = App.IsFcsConnected;

                if (!IsTpsConnected)
                {
                    log.Error("CardTenderViewModel: TPS is not connected.Go to tender selection page.");
                    await NavigateToTenderSelection();
                }
                else
                {
                    log.Debug("CardTenderViewModel: TPS is connected.Process sale.");
                    await ProcessSaleResponse();
                }
            }
            catch (Exception ex)
            {
                log.ErrorException(string.Format("CardTenderViewModel: Exception:{0}", ex.Message), ex);
            }
        }
コード例 #9
0
ファイル: SlotViewModel.cs プロジェクト: ominux/Wireless_MA
        private async void SubscribeToUpdates(object sender, SlotEventArgs args)
        {
            var slot = args.Slot;

            if (slot.Index != _slot.Index)
            {
                return;
            }

            var device = _slot.ConnectedDevice;

            if (device != null)
            {
                try
                {
                    _batteryUpdateEventHandler = new EventHandler <CharacteristicUpdatedEventArgs>((s, a) => SetBatteryStatus(s, a));
                    device.BatteryCharacteristic.ValueUpdated += _batteryUpdateEventHandler;

                    _infoUpdateEventHandler = new EventHandler <CharacteristicUpdatedEventArgs>((s, a) => SetSessionStatus(s, a));
                    device.InfoCharacteristic.ValueUpdated += _infoUpdateEventHandler;

                    _log.Info("Sending Get Info Command.");
                    var commandSuccessful = await SendCommand(CommandType.GetInfo);

                    if (commandSuccessful)
                    {
                        _log.Info("Command successfully sent.");
                    }

                    //BatteryLevel = -1;
                    //SessionStatus = -1;
                }
                catch (Exception)
                {
                    _log.Error("Characteristic subscription for data logging could not be completed.");
                }
            }
        }
コード例 #10
0
        private async Task CancelBasketHold()
        {
            log.Debug("RefundStatusViewModel: Refund not approved.Cancel hold basket.");
            var response = await fcsService.CancelHoldBasket(posManager.ActiveSale.SoldBasket.BasketID);

            if (response.ResultOK)
            {
                log.Debug("RefundStatusViewModel: Successfully cancel hold basket with basketID: {0}.", posManager.ActiveSale.SoldBasket.BasketID);
            }
            else
            {
                log.Error("RefundStatusViewModel: Cancel hold basket failure with basketID: {0}.", posManager.ActiveSale.SoldBasket.BasketID);
            }
        }
コード例 #11
0
 private void DonateInteraction(INInteraction interaction)
 {
     interaction.DonateInteraction(
         error =>
     {
         if (error != null)
         {
             _logger.Error($"Interaction donation failed: {error}");
         }
         else
         {
             _logger.Info("Successfully donated interaction.");
         }
     });
 }
コード例 #12
0
        private async Task GetReceiptData()
        {
            try
            {
                log.Debug("ReprintReceiptDataViewModel: Trying to get receipt data for invoice id:{0}.", invoiceId);
                var response = await this.fcsService?.GetReceiptData(ReceiptType.PayInStore, invoiceId);

                if (response.ResultOK)
                {
                    log.Debug("ReprintReceiptDataViewModel: Successfully fetched receipt data.");
                    Receipt = response.Receipt;
                    log.Debug("ReprintReceiptDataViewModel: Receipt : {0}.", Receipt);
                }
                else
                {
                    log.Error("ReprintReceiptDataViewModel: Error while fetching receipt data.");
                }
            }
            catch (Exception ex)
            {
                log.ErrorException(string.Format("ReprintReceiptDataViewModel: Exception:{0}", ex.Message), ex);
            }
        }
コード例 #13
0
ファイル: app.cs プロジェクト: tonyInfonet/gpos-kpos
        private async void OnFcsConnectionStatusChanged(object sender, bool isConnected)
        {
            log.Info("App: Fcs Connection status is changed...");
            //Todo: need to be aware of connection status changes
            var fcsService = sender as IFcsService;

            IsFcsConnected = isConnected;
            if (!IsFcsConnected)
            {
                IsSignOnDone = false;
                log.Debug("App: Fcs is disconnected. Navigate and stop pos.");

                navigationService = Mvx.IoCProvider.Resolve <IMvxNavigationService>();
                posManager        = Mvx.IoCProvider.Resolve <PosManager>();

                if (posManager.IsUserLoggedIn())
                {
                    log.Debug("App: User logged in. Navigate to Home");
                    await navigationService.Navigate <HomeViewModel>();
                }
                else
                {
                    log.Debug("App: User not logged in. Navigate to Login");
                    await navigationService.Navigate <LoginViewModel>();
                }

                await posManager.StopPos();

                // Try re-connect
                fcstimer.Enabled = true;
            }
            else
            {
                log.Error("App: Fcs is connected now.");
            }
        }
コード例 #14
0
        public void DataUpdate(byte[] data, DataType type, SensorDevice senderDevice)
        {
            var senderDeviceType = senderDevice.Type;
            // Create a new list with a collection for each data type for holding incoming data.
            var incomingData = new Dictionary <DataType, List <DataProfile> >();

            foreach (DataType dataType in ValidSensorDataTypes)
            {
                incomingData.Add(dataType, new List <DataProfile>());
            }

            var outputID = Tuple.Create(senderDevice.SlotIndex, type).GetHashCode();

            //_log.Debug($"{senderDevice.SlotIndex}");
            // Parse incoming data.
            if (senderDeviceType == DeviceType.Stroke)
            {
                if (type == DataType.accl)
                {
                    try {
                        for (int i = 0; i < 4; i++)
                        {
                            outputID = Tuple.Create(senderDevice.SlotIndex, DataType.accl_z).GetHashCode();
                            incomingData[DataType.accl_z].Add(new DataProfile(type, _dataTime[outputID]++, (Int16)((data[1 + i * 6] << 8) | data[0 + i * 6])));

                            outputID = Tuple.Create(senderDevice.SlotIndex, DataType.accl_x).GetHashCode();
                            incomingData[DataType.accl_x].Add(new DataProfile(type, _dataTime[outputID]++, (Int16)((data[3 + i * 6] << 8) | data[2 + i * 6])));

                            outputID = Tuple.Create(senderDevice.SlotIndex, DataType.accl_y).GetHashCode();
                            incomingData[DataType.accl_y].Add(new DataProfile(type, _dataTime[outputID]++, (Int16)((data[5 + i * 6] << 8) | data[4 + i * 6])));
                        }
                    } catch (IndexOutOfRangeException) {
                        _log.Error($"Invalid data range received from device {senderDevice.SlotIndex}. Count: {data.Length} Data: {string.Join(" ", data)}");
                        if (senderDevice.SlotIndex >= 0)
                        {
                            DataErrorCount[senderDevice.SlotIndex]++;
                        }
                        return;
                    } catch (KeyNotFoundException) {
                        _log.Error($"Invalid key detected for device {senderDevice.SlotIndex}. Keys in scope: outputID {outputID}");
                        if (senderDevice.SlotIndex >= 0)
                        {
                            DataErrorCount[senderDevice.SlotIndex]++;
                        }
                        return;
                    }
                }
            }

            //Task.Run(async () => await _dataLoggingService.WritePackage(incomingData, senderDeviceType));
            //_dataLoggingService.AddCollectionAsync(incomingData, senderDeviceType);
            // DataRefreshPointers for each data collection of data points.
            foreach (KeyValuePair <DataType, List <DataProfile> > incomingDataforType in incomingData)
            {
                DataType           dataType   = incomingDataforType.Key;
                List <DataProfile> dataPoints = incomingDataforType.Value;
                outputID = Tuple.Create(senderDevice.SlotIndex, dataType).GetHashCode();

                if (dataPoints.Count > 0)
                {
                    // The Limit of the databuffer queue.
                    int queueDataPointLimit = _blePacketLimit * NumDataPointsPerPacket[dataType] / (int)DownSamplingRate[dataType];

                    // If the downsampling amount was specified. (i.e. accl_z)
                    if (DownSamplingRate[dataType] > 1)
                    {
                        // Calculate how many data points should be left after the downsampling.
                        int numOfDownsampledDataPoints = NumDataPointsPerPacket[dataType] / (int)DownSamplingRate[dataType];

                        for (int i = 0; i < dataPoints.Count; i += (int)DownSamplingRate[dataType])
                        {
                            int dataCount   = Math.Min((int)DownSamplingRate[dataType], dataPoints.Count - i);
                            var partialData = dataPoints.GetRange(i, dataCount);
                            if (partialData.Count <= 0)
                            {
                                continue;
                            }

                            DataProfile downsampledData = partialData[partialData.Count - 1];

                            // Remove a datapoint from the queue if it's beyond the databuffer queue point limit.
                            if (GraphDataBuffer[outputID].Count > queueDataPointLimit)
                            {
                                GraphDataBuffer[outputID].TryDequeue(out DataProfile dequeuedData);
                            }

                            // Add the new downsampled data.
                            GraphDataBuffer[outputID].Enqueue(downsampledData);
                        }

                        DataProfile downsample = dataPoints[dataPoints.Count - 1];

                        // Remove a datapoint from the queue if it's beyond the databuffer queue point limit.
                        if (GraphDataBuffer[outputID].Count > queueDataPointLimit)
                        {
                            GraphDataBuffer[outputID].TryDequeue(out DataProfile dequeuedData);
                        }

                        // Add the new downsampled data.
                        GraphDataBuffer[outputID].Enqueue(downsample);
                    }
                    // Else the downsampling amount was not specified.
                    else
                    {
                        foreach (var dataPoint in dataPoints)
                        {
                            // Remove a datapoint from the queue if it's beyond the databuffer queue point limit.
                            if (GraphDataBuffer[outputID].Count > queueDataPointLimit)
                            {
                                GraphDataBuffer[outputID].TryDequeue(out DataProfile dequeuedData);
                            }
                            // Add the new data point.
                            GraphDataBuffer[outputID].Enqueue(dataPoint);
                        }
                    }
                }
            }

            var timeStamp = ((data[27] << 24) | (data[26] << 16) | (data[25] << 8) | data[24]) / 4.0;

            _dataLoggingService.UpdateTimeStamp(timeStamp);
        }
コード例 #15
0
        public FcsMessageDeserializationResult Deserialize(byte[] data)
        {
            log.Debug("FcsMessageSerializer: Deserializing Message..");
            FcsMessageDeserializationResult result = new FcsMessageDeserializationResult();
            int processedBytes = 0;

            using (MemoryStream memoryStream = new MemoryStream(data))
            {
                BinaryReader reader = new BinaryReader(memoryStream);

                try
                {
                    byte headerStart = reader.ReadByte();
                    processedBytes++;
                    if (headerStart != 0X01)
                    {
                        //Todo: handle error
                        log.Error("FcsMessageSerializer: Error in headerStart byte {0}", headerStart);
                    }
                    byte sequenceNumber = reader.ReadByte();
                    processedBytes++;
                    byte[] bytes = reader.ReadBytes(4);
                    processedBytes += 4;
                    bytes           = bytes.Reverse().ToArray();
                    int xmlLength = BitConverter.ToInt32(bytes, 0);
                    log.Debug("FcsMessageSerializer: Seq#: {0}, XmlLength: {1}", sequenceNumber, xmlLength);
                    bytes           = reader.ReadBytes(xmlLength);
                    processedBytes += xmlLength;
                    string xmlMessage = System.Text.Encoding.UTF8.GetString(bytes);
                    log.Debug("FcsMessageSerializer: Received xml message from Fcs: {0}", xmlMessage);

                    if (xmlLength != xmlMessage.Length)
                    {
                        //Todo: something wrong
                    }

                    byte messageEnd = reader.ReadByte();
                    processedBytes++;

                    if (messageEnd != 0x04)
                    {
                        //Todo: something wrong
                        log.Error("FcsMessageSerializer: Message end ({0} didn't match", messageEnd);
                    }

                    result.IsSuccessful = true;

                    XElement messageElement = XElement.Parse(xmlMessage);
                    XElement commandElement = messageElement.FirstNode as XElement;
                    if (messageElement.Name == "FCSCommand")
                    {
                        log.Debug("FcsMessageSerializer: Message element name:FcsCommand.");
                        if (commandElement.Name == "Basket")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:Basket.");
                            FcsCommand <BasketRequest> fcsCommand = new FcsCommand <BasketRequest>();
                            fcsCommand.XmlCommand = commandElement;
                            result.MessageType    = FcsMessageType.BasketCommand;
                            result.FcsMessage     = fcsCommand;
                        }
                        else if (commandElement.Name == "Configuration")
                        {
                            log.Debug("FcsMessageSerializer: Command element name: Configuration");
                            FcsCommand <ConfigurationRequest> fcsCommand = new FcsCommand <ConfigurationRequest>();

                            //Todo: We need to remove this after FCS is fixed
                            ReplaceDescendantAttributeName(commandElement, "Grade", "Type", "type");

                            fcsCommand.XmlCommand = commandElement;
                            result.MessageType    = FcsMessageType.ConfigurationCommand;
                            result.FcsMessage     = fcsCommand;
                        }
                    }
                    else if (messageElement.Name == "FCSResponse")
                    {
                        log.Debug("FcsMessageSerializer: Message element name:FcsResponse.");
                        if (commandElement.Name == "SignOnResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:SignOnResp.");
                            FcsResponse <SignOnResponse> fcsResponse = new FcsResponse <SignOnResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.SignOnResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "SignOnTPOSResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:SignOnTPOSResp.");
                            FcsResponse <SignOnTPosResponse> fcsResponse = new FcsResponse <SignOnTPosResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.SignOnTPosResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "SignOffTPOSResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:SignOffTPOSResp.");
                            FcsResponse <SignOffTPosResponse> fcsResponse = new FcsResponse <SignOffTPosResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.SignOffTPosResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "PrepayResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:PrepayResp.");
                            FcsResponse <PrepayResponse> fcsResponse = new FcsResponse <PrepayResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.PrepayResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "BasketResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:BasketResp.");
                            FcsResponse <BasketResponse> fcsResponse = new FcsResponse <BasketResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.BasketResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "SetPumpResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name: SetPumpResp");
                            FcsResponse <SetPumpResponse> fcsResponse = new FcsResponse <SetPumpResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.SetPumpResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "SetPriceResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name: SetPriceResp");
                            FcsResponse <SetPriceResponse> fcsResponse = new FcsResponse <SetPriceResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.SetPriceResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "GetReportResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name: GetReportResp");
                            FcsResponse <GetReportResponse> fcsResponse = new FcsResponse <GetReportResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.GetReportResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "GetReceiptResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name: GetReceiptResp");
                            FcsResponse <GetReceiptResponse> fcsResponse = new FcsResponse <GetReceiptResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.GetReceiptResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                        else if (commandElement.Name == "GetReceiptDataResp")
                        {
                            log.Debug("FcsMessageSerializer: Command element name: GetReceiptDataResp");
                            FcsResponse <GetReceiptDataResponse> fcsResponse = new FcsResponse <GetReceiptDataResponse>();
                            fcsResponse.XmlCommand = commandElement;
                            result.MessageType     = FcsMessageType.GetReceiptDataResponse;
                            result.FcsMessage      = fcsResponse;
                        }
                    }
                    else if (messageElement.Name == "FCSEvent")
                    {
                        log.Debug("FcsMessageSerializer: Message element name:FcsEvent.");
                        if (commandElement.Name == "Status")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:Status.");
                            FcsEvent <FcsStatus> fcsEvent = new FcsEvent <FcsStatus>();
                            fcsEvent.XmlCommand = commandElement;
                            result.MessageType  = FcsMessageType.EventStatus;
                            result.FcsMessage   = fcsEvent;
                        }
                        else if (commandElement.Name == "PriceChanged")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:PriceChanged.");
                            FcsEvent <PriceChangedEvent> fcsEvent = new FcsEvent <PriceChangedEvent>();
                            fcsEvent.XmlCommand = commandElement;
                            result.MessageType  = FcsMessageType.EventPriceChanged;
                            result.FcsMessage   = fcsEvent;
                        }
                        else if (commandElement.Name == "Prepay")
                        {
                            log.Debug("FcsMessageSerializer: Command element name:Prepay.");
                            FcsEvent <PrepayEvent> fcsEvent = new FcsEvent <PrepayEvent>();
                            fcsEvent.XmlCommand = commandElement;
                            result.MessageType  = FcsMessageType.EventPrepay;
                            result.FcsMessage   = fcsEvent;
                        }
                    }
                }
                catch (EndOfStreamException eos)
                {
                    log.DebugException("FcsMessageSerializer: exception{0}.", eos);
                    processedBytes      = 0;
                    result.IsSuccessful = false;
                }
                catch (XmlException xmlException)
                {
                    log.DebugException("FcsMessageSerializer: exception{0}.", xmlException);
                    processedBytes      = 0;
                    result.IsSuccessful = false;
                }
            }

            result.ByteProcessed = processedBytes;
            log.Debug("FcsMessageSerializer: Return DeSerialized data.");
            return(result);
        }
コード例 #16
0
 private void HandleBackgroundException(Exception ex)
 {
     _log.Error(ex, "Background Exception!");
     IsBusy = false;
 }
コード例 #17
0
ファイル: PosManager.cs プロジェクト: tonyInfonet/gpos-kpos
        private string GetInvoiceNo(SaleStatus sale)
        {
            log.Debug("PosManager: Get invoice no.");
            string invoiceNo = null;

            if (sale?.SoldBasket?.Prepay != null)
            {
                invoiceNo = sale?.SoldBasket?.Prepay?.PrepayInvoice;
            }
            else
            {
                invoiceNo = sale?.InvoiceNo;
            }

            if (invoiceNo != null)
            {
                log.Debug("PosManager: Invoice no is:{0}", invoiceNo);
            }
            else
            {
                log.Error("PosManager: Invoice no is null.");
            }

            return(invoiceNo);
        }