Пример #1
0
        public IActionResult Pay(int BadgeNumber)
        {
            ViewData["TotalPrice"]  = "0";
            ViewData["BadgeNumber"] = "0";

            Helpers.Sql sql = new Helpers.Sql();

            ViewData["Message"]     = "";
            ViewData["Back"]        = 1;
            ViewData["ShowPay"]     = 0;
            ViewData["ShowRecover"] = 0;

            ViewBag.RequestCode = Request.Cookies["RequestCode"];
            string RequestCode = ViewBag.RequestCode;

            if (!string.IsNullOrEmpty(RequestCode) && (BadgeNumber > 0) && (BadgeNumber <= sql.maxBadges(RequestCode)))
            {
                if (sql.verifyCode(RequestCode) == true)
                {
                    sql.updatePrice(RequestCode, BadgeNumber, (BadgeNumber * Startup.price));
                    ViewData["TotalPrice"]  = sql.getPrice(RequestCode);
                    ViewData["BadgeNumber"] = BadgeNumber;
                    ViewData["ShowPay"]     = 1;
                    ViewData["Back"]        = 0;
                }
            }


            return(View());
        }
Пример #2
0
        public IActionResult List(string s, string id, int refresh)
        {
            Helpers.Sql sql = new Helpers.Sql();
            ViewData["refresh"] = refresh;

            if ((String.Compare(Startup.scode, s, true) == 0))
            {
                ViewData["Message"]  = "";
                ViewData["lastseen"] = "";
                ViewData["indv"]     = 0;
                ViewData["curr"]     = 99;

                bool[] imglist = new bool[48];


                if (String.IsNullOrEmpty(id))
                {
                    imglist = sql.selectGlobalView();
                    ViewData["lastseen"] = sql.selectGlobalLastSeen();

                    for (int i = 0; i < 48; i++)
                    {
                        ViewData[i.ToString()] = imglist[i];
                    }
                }
                else
                {
                    ViewData["indv"] = 1;
                    int badgeid = Convert.ToInt32(id);
                    badgeid = badgeid + 1;
                    imglist = sql.selectIndervidualView(badgeid);
                    string[] listdata = sql.selectIndervidualLastSeen(badgeid);
                    ViewData["lastseen"] = listdata[0];

                    if (!String.IsNullOrEmpty(listdata[1]))
                    {
                        ViewData["curr"] = Convert.ToInt32(listdata[1]);
                    }

                    for (int i = 0; i < 48; i++)
                    {
                        ViewData[i.ToString()] = imglist[i];
                    }
                }

                return(View());
            }
            else
            {
                return(StatusCode(401));
            }
        }
Пример #3
0
        public IActionResult Recover(string RequestCode, string email)
        {
            Helpers.Sql    sql  = new Helpers.Sql();
            Helpers.Mailer mail = new Helpers.Mailer();

            string[] data = sql.getRecover(RequestCode, email);

            if ((!String.IsNullOrEmpty(data[0])) && (!String.IsNullOrEmpty(data[0])))
            {
                mail.SendEmailAsync(email, data[1], data[0]);
            }



            return(View());
        }
Пример #4
0
        public string genQRCode64(String qrText)
        {
            Helpers.Sql sql        = new Helpers.Sql();
            string      retrunText = "";

            if (sql.verifyQR(qrText))
            {
                QRCodeGenerator  qrGenerator = new QRCodeGenerator();
                QRCodeData       qrCodeData  = qrGenerator.CreateQrCode(qrText, QRCodeGenerator.ECCLevel.Q);
                BitmapByteQRCode qrCode      = new BitmapByteQRCode(qrCodeData);
                byte[]           qrCodeImage = qrCode.GetGraphic(20);

                retrunText = Convert.ToBase64String(qrCodeImage);
            }

            return(retrunText);
        }
Пример #5
0
        public byte[] genQRCodeByte(String qrText)
        {
            Helpers.Sql sql         = new Helpers.Sql();
            byte[]      qrCodeImage = Encoding.UTF8.GetBytes("");


            if (sql.verifyQR(qrText))
            {
                QRCodeGenerator  qrGenerator = new QRCodeGenerator();
                QRCodeData       qrCodeData  = qrGenerator.CreateQrCode(qrText, QRCodeGenerator.ECCLevel.Q);
                BitmapByteQRCode qrCode      = new BitmapByteQRCode(qrCodeData);
                qrCodeImage = qrCode.GetGraphic(20);
            }



            return(qrCodeImage);
        }
Пример #6
0
        public IActionResult Index(string s, string id, int refresh)
        {
            Helpers.Sql sql = new Helpers.Sql();
            ViewData["refresh"] = refresh;

            if ((String.Compare(Startup.scode, s, true) == 0))
            {
                ViewData["Message"] = "";
                ViewData["0"]       = 0;
                ViewData["1"]       = 0;
                ViewData["38"]      = 0;

                bool[] imglist = new bool[48];

                if (String.IsNullOrEmpty(id))
                {
                    imglist = sql.selectGlobalView();

                    for (int i = 0; i < 48; i++)
                    {
                        ViewData[i.ToString()] = imglist[i];
                    }
                }
                else
                {
                    int badgeid = Convert.ToInt32(id);
                    badgeid = badgeid + 1;
                    imglist = sql.selectIndervidualView(badgeid);

                    for (int i = 0; i < 48; i++)
                    {
                        ViewData[i.ToString()] = imglist[i];
                    }
                }

                return(View());
            }
            else
            {
                return(StatusCode(401));
            }
        }
Пример #7
0
        public IActionResult Img(string qrtext)
        {
            if (qrtext == null)
            {
                qrtext = " ";
            }

            ViewData["Back"] = 1;

            Helpers.Sql sql = new Helpers.Sql();
            if (sql.verifyQR(qrtext))
            {
                ViewData["Back"] = 0;
            }

            Helpers.QRGen qr = new Helpers.QRGen();
            ViewData["qrcode"] = qrtext;
            ViewData["Image"]  = qr.genQRCode64(qrtext);
            ViewData["uri"]    = Startup.uri;

            return(View());
        }
Пример #8
0
        public IActionResult Validate(string RequestCode)
        {
            Helpers.Sql sql = new Helpers.Sql();
            ViewData["Message"]     = "";
            ViewData["Back"]        = 1;
            ViewData["ShowPay"]     = 0;
            ViewData["ShowRecover"] = 0;
            ViewData["RequestCode"] = RequestCode;

            if (!string.IsNullOrEmpty(RequestCode))
            {
                Response.Cookies.Append("RequestCode", RequestCode);

                if (sql.verifyCode(RequestCode) == true)
                {
                    if (sql.codeUsed(RequestCode) == false)
                    {
                        ViewData["Message"]   = "Your code has been validated";
                        ViewData["Back"]      = 0;
                        ViewData["ShowPay"]   = 1;
                        ViewData["MaxBadges"] = sql.maxBadges(RequestCode);
                    }
                    else
                    {
                        ViewData["Message"]     = "";
                        ViewData["Back"]        = 0;
                        ViewData["ShowRecover"] = 1;
                    }
                }
                else
                {
                    ViewData["Message"] = "Invalid Code";
                    ViewData["Back"]    = 1;
                }
            }

            return(View());
        }
Пример #9
0
        public IActionResult Update(string advertData, string advertData64)
        {
            //// Flags; this sets the device to use limited discoverable
            //// mode (advertises for 30 seconds at a time) instead of general
            //// discoverable mode (advertises indefinitely)
            //2,   // length of this data
            //GAP_ADTYPE_FLAGS, // 0x01
            //GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, // 0x04

            //// Appearance: This is a #badgelife header.
            //3,    // Length of this data
            //GAP_ADTYPE_APPEARANCE, // Data type: "Appearance" // 0x19
            //0xDC, // DC
            //0x19, // 19 #badgelife

            //// Queercon data: ID, current icon, etc
            //15, // length of this data including the data type byte
            //GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific adv data type // 0xff
            //0xD3, // Company ID - Fixed (queercon)
            //0x04, // Company ID - Fixed (queercon)
            //0x00, // Badge ID MSB
            //0x00, // Badge ID LSB
            //0x00, // Current icon ID
            //0x00, // icon 40..47
            //0x00, // icon 32..39
            //0x00, // icon 24..31
            //0x00, // icon 16..23
            //0x00, // icon  8..15
            //0x00, // icon  0.. 7
            //0x00, // CHECK

            //9,
            //GAP_ADTYPE_LOCAL_NAME_SHORT, // 0x08
            //0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

            //     Jakes take on the header:
            //     0x0201040319DC190FFFD304 < -Fixed header
            //     [AAAA] < -Badge ID 0 - 289 In Dec / 0000 - 0121 in Hex
            //     [BB] < -Current Icon
            //     //NOPE NOT ANYMORE//[CC] < -RESERVED(incase jonathan wants more than 40 icons ?)
            //     [CCDDDDDDDDDD] < -icon bit array 47...........0
            //     [EE] < -Checksum
            //     0908[41524F5947424956] < -End + Crypto
            //
            //     0x0201040319DC190FFFD304AAAABBCCDDDDDDDDDDEE090841524F5947424956
            //     0x0201040319DC190FFFD3040122BBCCDDDDDDDDDDEE090841524F5947424956 = Badgeid = 122/290
            //     The advt data only.. 0xD304AAAABBCCDDDDDDDDDDEE
            //     The advt data only id 122 0xD3040122BBCCDDDDDDDDDDDDEE
            //     http://localhost:55091/Home/Update?advertdata64=AgEEAxncGQ//0wQBIrvM3d3d3d3uCQhBUk9ZR0JJVg==



            // 0xD3, // Company ID - Fixed (queercon)
            // 0x04, // Company ID - Fixed (queercon)
            // 0x00, // Badge ID MSB
            // 0x00, // Badge ID LSB
            // 0x00, // Current icon ID
            // 0x00, // icon 40..47
            // 0x00, // icon 32..39
            // 0x00, // icon 24..31
            // 0x00, // icon 16..23
            // 0x00, // icon  8..15
            // 0x00, // icon  0.. 7
            // 0x00, // CHECK
            // 0x00, // CHECK

            if (String.IsNullOrEmpty(advertData) && String.IsNullOrEmpty(advertData64))
            {
                return(StatusCode(200));
            }
            else
            {
                Helpers.Sql sql = new Helpers.Sql();

                if (!String.IsNullOrEmpty(advertData64))
                {
                    //System.Diagnostics.Debug.WriteLine(advertData64);
                    advertData64 = advertData64.Replace(' ', '+');
                    byte[] bytes = Convert.FromBase64String(advertData64);
                    advertData = "0x" + BitConverter.ToString(bytes);

                    var charsToRemove = new string[] { "-" };
                    foreach (var c in charsToRemove)
                    {
                        advertData = advertData.Replace(c, string.Empty);
                    }

                    System.Diagnostics.Debug.WriteLine(advertData);
                }

                //String header = "0x0201040319DC190FFFD304";
                //String footer = "090841524F5947424956";

                String header = "0xD304";

                if (advertData.StartsWith(header))
                {
                    //http://tomeko.net/online_tools/hex_to_base64.php?lang=en

                    //for base64 convert


                    //lets do some CRC things
                    String crcData = advertData.Substring(6, 18);
                    System.Diagnostics.Debug.WriteLine("CRC to check: " + crcData);
                    UInt16 crcrsp = CCITT_CRC16(crcData);
                    System.Diagnostics.Debug.WriteLine("CRC resp: " + crcrsp);
                    //byte[] recbytes = new byte[2];
                    //recbytes[0] = BitConverter.GetBytes(crcrsp)[0];
                    //recbytes[1] = BitConverter.GetBytes(crcrsp)[1];
                    //System.Diagnostics.Debug.WriteLine("CRC 1st byte: " + recbytes[0]);
                    //System.Diagnostics.Debug.WriteLine("CRC 2nd byte: " + recbytes[1]);

                    //byte crc8res = (byte)(recbytes[0] ^ recbytes[1]);
                    //System.Diagnostics.Debug.WriteLine("CRC the byte: " + crc8res);

                    String crcFinal    = advertData.Substring(24, 4);
                    int    crcFinalInt = Convert.ToInt32(crcFinal, 16);

                    System.Diagnostics.Debug.WriteLine("CRC the bytes: " + crcFinalInt);

                    if (crcFinalInt == crcrsp)
                    {
                        String qcData = advertData.Substring(6, 18);
                        System.Diagnostics.Debug.WriteLine(qcData);

                        String badgeIdStr = qcData.Substring(0, 4);
                        System.Diagnostics.Debug.WriteLine(badgeIdStr);
                        int badgeId = Convert.ToInt32(badgeIdStr, 16) + 1;
                        System.Diagnostics.Debug.WriteLine(badgeId);

                        String curIconStr = qcData.Substring(4, 2);
                        System.Diagnostics.Debug.WriteLine(curIconStr);
                        int curIcon = Convert.ToInt32(curIconStr, 16);
                        System.Diagnostics.Debug.WriteLine(curIcon);

                        //Need to convert the int to a bit array
                        String curIconArrStr = qcData.Substring(6, 12);
                        System.Diagnostics.Debug.WriteLine(curIconArrStr);
                        long curIconArr = Convert.ToInt64(curIconArrStr, 16);
                        System.Diagnostics.Debug.WriteLine(curIconArr);


                        string binaryArr = Convert.ToString(curIconArr, 2);  //Convert to binary in a string

                        int[] bitSet = binaryArr.PadLeft(48, '0')            // Add 0's from left
                                       .Select(c => int.Parse(c.ToString())) // convert each char to int
                                       .ToArray();                           // Convert IEnumerable from select to Array

                        //Bitset is inversed from spec. LSB==47
                        for (int i = 0; i < 48; i++)
                        {
                            System.Diagnostics.Debug.WriteLine("i: " + i);
                            System.Diagnostics.Debug.WriteLine(bitSet[i]);
                        }



                        int rows = sql.updateBadge(badgeId, curIcon, bitSet);
                        System.Diagnostics.Debug.WriteLine(rows);

                        if (rows == 1)
                        {
                            return(StatusCode(201));
                        }
                        else
                        {
                            return(StatusCode(200));
                        }
                    }
                    else
                    {
                        return(StatusCode(200));
                    }
                }
                else
                {
                    return(StatusCode(400));
                }
            }
        }
Пример #10
0
        public IActionResult Claim2(string claimadmincode, string claimcode, string removeclaimcode)
        {
            Helpers.Sql sql = new Helpers.Sql();
            ViewData["Message"]       = "";
            ViewData["Back"]          = 1;
            ViewData["ShowClaim"]     = 0;
            ViewData["CollectNumber"] = 0;
            ViewData["ShowValidate"]  = 0;


            if (!string.IsNullOrEmpty(claimadmincode))
            {
                Response.Cookies.Append("ClaimAdminCode", claimadmincode);
            }
            else
            {
                ViewBag.ClaimAdminCode = Request.Cookies["ClaimAdminCode"];
                claimadmincode         = ViewBag.ClaimAdminCode;
            }

            ViewBag.ClaimAdminCode = Request.Cookies["ClaimAdminCode"];



            if (String.Compare("handler", claimadmincode, true) == 0)
            {
                ViewData["Back"]    = 0;
                ViewData["Message"] = "Admin Logged In";

                if (!string.IsNullOrEmpty(removeclaimcode))
                {
                    sql.updateCollected(removeclaimcode);
                    ViewData["Message"] = "Code claimed";
                }

                if (string.IsNullOrEmpty(claimcode))
                {
                    ViewData["ShowValidate"] = 1;
                }
                else
                {
                    int collectnumber = 0;
                    ViewData["Message"]       = claimcode;
                    collectnumber             = sql.badgesQR(claimcode);
                    ViewData["CollectNumber"] = collectnumber;
                    if (collectnumber > 0)
                    {
                        ViewData["ShowClaim"] = 1;
                        ViewData["ClaimCode"] = claimcode;
                    }
                    else
                    {
                        ViewData["Message"]      = "Invalid or used Code";
                        ViewData["ShowValidate"] = 1;
                    }
                }
            }


            return(View());
        }
Пример #11
0
        public IActionResult Complete(string stripeEmail, string stripeToken)
        {
            ViewData["Message"]    = "If your seeing this, either you shouldnt be here, or something went wrong. Email us, or try again.";
            ViewData["Back"]       = 1;
            ViewData["qrcode"]     = "";
            ViewData["ShowEnd"]    = 0;
            ViewData["TransError"] = "";
            ViewData["Image"]      = "";
            ViewData["badgenum"]   = "";
            ViewData["Email"]      = "";
            ViewData["uri"]        = Startup.uri;

            string qrcode = "";


            ViewBag.RequestCode = Request.Cookies["RequestCode"];
            string RequestCode = ViewBag.RequestCode;

            Helpers.Sql    sql  = new Helpers.Sql();
            Helpers.QRGen  qr   = new Helpers.QRGen();
            Helpers.Mailer mail = new Helpers.Mailer();

            int price = sql.getPrice(RequestCode);

            var customers = new StripeCustomerService();
            var charges   = new StripeChargeService();

            if (!sql.codeUsed(RequestCode))
            {
                if (!String.IsNullOrEmpty(stripeEmail) && !String.IsNullOrEmpty(stripeToken))
                {
                    try
                    {
                        var customer = customers.Create(new StripeCustomerCreateOptions
                        {
                            Email       = stripeEmail,
                            SourceToken = stripeToken
                        });

                        var charge = charges.Create(new StripeChargeCreateOptions
                        {
                            Amount      = price,
                            Description = "QC-DCBadgeOrder",
                            Currency    = "usd",
                            CustomerId  = customer.Id
                        });


                        if (String.Compare(charge.Status, "succeeded", true) == 0)
                        {
                            ViewData["Back"] = 0;
                            String guid = Guid.NewGuid().ToString();
                            qrcode = sql.getID(RequestCode) + ";" + guid;
                            sql.updateSale(RequestCode, stripeEmail, customer.Id, charge.Id, qrcode);
                            int badgenum = charge.Amount / Startup.price;
                            ViewData["badgenum"] = badgenum;
                            ViewData["qrcode"]   = qrcode;
                            ViewData["ShowEnd"]  = 1;
                            ViewData["Message"]  = "";
                            ViewData["Image"]    = qr.genQRCode64(qrcode);
                            ViewData["Email"]    = stripeEmail;
                            mail.SendEmailAsync(stripeEmail, qrcode, badgenum.ToString());
                        }
                    }
                    catch (StripeException e)
                    {
                        ViewData["TransError"] = e.Message;
                        ViewData["Message"]    = "Something went wrong... look at the error message, email us or try again.";
                    }
                }
            }



            return(View());
        }