Example #1
0
        public void SendTransactionComplete()
        {
            LoyaltyService.TransactionCompleteResult res = new LoyaltyService.TransactionCompleteResult();
            var myBinding = new BasicHttpBinding();

            myBinding.Security.Mode = BasicHttpSecurityMode.None;
            var myEndpointAddress = new EndpointAddress(conf.MSRService);

            LoyaltyService.LoyaltyServiceClient s = new LoyaltyService.LoyaltyServiceClient(myBinding, myEndpointAddress);

            try
            {
                res = s.TransactionComplete(msr.lastReference, lastamount, lastvol, msr.ProductCode, DateTime.Now);
            }

            catch (Exception ex)
            {
                myLog.Log("Cannot report transaction - server down.");
            }
        }
Example #2
0
        public void Worker()
        {
            string c = "";

            while (true)
            {
                try
                {
                    Thread.Sleep(5);
                    if (FoundCard)
                    {
                        myLog.Log("Invoked found card");
                        FoundCard = false;
                        int ep = Card.IndexOf('=');
                        if (ep != -1)
                        {
                            c = Card.Substring(0, Card.IndexOf('='));
                        }
                        else
                        {
                            c = Card;
                        }

                        stat.carddata = c;
                        myLog.Log("Valid card, update GUI: " + c);
                        stat.msg = MsgLogType.MSRRead;
                        m_sender.BeginInvoke(m_senderDelegate, stat);


                        Thread.Sleep(50);
                        stat.msg = MsgLogType.MSRRequestAuth;
                        m_sender.BeginInvoke(m_senderDelegate, stat);
                        Thread.Sleep(1000);

                        myLog.Log("Going to request auth: " + c);
                        //get auth
                        var myBinding = new BasicHttpBinding();
                        // DisableDecompression(myBinding);

                        myBinding.Security.Mode = BasicHttpSecurityMode.None;
                        var myEndpointAddress = new EndpointAddress(conf.MSRService);
                        LoyaltyService.LoyaltyServiceClient s = new LoyaltyService.LoyaltyServiceClient(myBinding, myEndpointAddress);


                        myBinding.MessageEncoding = WSMessageEncoding.Text;


                        LoyaltyService.AuthResult res = new LoyaltyService.AuthResult();
                        try
                        {
                            res = s.GetAuth(c, GetStationCode());
                        }
                        catch (Exception ex)
                        {
                            myLog.Log("Error GetAuth - server down.");
                            stat.msg = MsgLogType.MSRCommError;
                            m_sender.BeginInvoke(m_senderDelegate, stat);
                            continue;
                        }
                        //MessageBox.Show(res.DriverName + " " + res.Limit.ToString() + " " + res.ProductsCode[0].ToString());
                        myLog.Log("Got auth replay: " + res.Allowed.ToString() + ":" + res.DriverName + ":" + res.ErrorDesc);
                        stat.ErrorDesc = res.ErrorDesc;
                        stat.carddata  = c;

                        try
                        {
                            stat.Reference     = res.Reference;
                            stat.CPassRequired = res.cPassRequired;
                            stat.PINRequired   = res.PINRequired;
                            stat.PIN           = res.PinCode;
                            if (res.DriverName != null)
                            {
                                stat.DriverName = res.DriverName;
                            }
                        }
                        catch (Exception ex)
                        {
                            //ignor
                        }

                        if (res.Allowed)
                        {
                            //copy product locally
                            stat.ProductsList = new List <MyProductItem>();
                            foreach (ForeFuelSimulator.LoyaltyService.ProductItem item in res.ProductsList)
                            {
                                stat.ProductsList.Add(new MyProductItem(item.Code, item.Discount, item.DiscountType));
                            }
                            //check correct product

                            bool found = false;
                            foreach (MyProductItem item in stat.ProductsList)
                            {
                                if (item.Code == ProductCode)
                                {
                                    found = true;
                                    break;
                                }
                            }
                            if (!found && ProductCode != 0)
                            {
                                stat.msg = MsgLogType.MSRWrongProduct;
                            }
                            else
                            {
                                stat.msg      = MsgLogType.MSRAuth;
                                lastReference = res.Reference;
                            }

                            stat.Limit     = res.Limit;
                            stat.LimitType = res.LimitType;
                        }
                        else
                        {
                            stat.msg = MsgLogType.MSRReject;
                        }

                        m_sender.BeginInvoke(m_senderDelegate, stat);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }