public override PassGeneratorRequest GetPass(string serialNumber)
        {
            var request = new PassGeneratorRequest
            {
                PassTypeIdentifier = PassTypeIdentifier,
                SerialNumber       = Guid.NewGuid().ToString("D")
            };


            var parameters = new TemplateModel();

            parameters.AddField("event", FieldAttribute.Value, "Jeff Wayne's War of the Worlds");

            var eventDate = DateTime.Now.AddDays(1);

            parameters.AddField("doors-open", FieldAttribute.Value,
                                new DateTime(eventDate.Year, eventDate.Month, eventDate.Day, 20, 30, 00));
            parameters.AddField("seating-section", FieldAttribute.Value, 10);

            request.AddBarcode(BarcodeType.PKBarcodeFormatPDF417, "01927847623423234234", "iso-8859-1",
                               "01927847623423234234");

            request.LoadTemplate("Event", parameters);

            return(request);
        }
Esempio n. 2
0
        public override PassGeneratorRequest GetPass(string serialNumber)
        {
            var request = new PassGeneratorRequest
            {
                PassTypeIdentifier = PassTypeIdentifier,
                SerialNumber       = Guid.NewGuid().ToString("D")
            };


            var parameters = new TemplateModel();

            parameters.AddField("origin", FieldAttribute.Label, "San Francisco");
            parameters.AddField("origin", FieldAttribute.Value, "SFO");

            parameters.AddField("destination", FieldAttribute.Label, "London Heathrow");
            parameters.AddField("destination", FieldAttribute.Value, "LHR");

            parameters.AddField("seat", FieldAttribute.Value, "7A");
            parameters.AddField("boarding-gate", FieldAttribute.Value, "F12");
            parameters.AddField("passenger-name", FieldAttribute.Value, "John Appleseed");

            request.AddBarcode(BarcodeType.PKBarcodeFormatPDF417,
                               "M1APPLESEED/JMR EZQ7O92 GVALHRBA 00723319C002F00009100", "iso-8859-1");

            request.LoadTemplate("BoardingPass", parameters);

            return(request);
        }
        public void TestMethod1()
        {
            PassGeneratorRequest request = new PassGeneratorRequest();

            request.ExpirationDate = new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Local);

            DateTime       offset          = new DateTime(2018, 01, 05, 12, 00, 0);
            TimeZoneInfo   zone            = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset));

            request.RelevantDate = offsetConverted;

            using (MemoryStream ms = new MemoryStream())
            {
                using (StreamWriter sr = new StreamWriter(ms))
                {
                    using (JsonWriter writer = new JsonTextWriter(sr))
                    {
                        writer.Formatting = Formatting.Indented;
                        request.Write(writer);
                    }

                    string jsonString = Encoding.UTF8.GetString(ms.ToArray());

                    var settings = new JsonSerializerSettings {
                        DateParseHandling = DateParseHandling.None
                    };

                    dynamic json = JsonConvert.DeserializeObject(jsonString, settings);

                    Assert.AreEqual("2018-01-01T00:00:00+00:00", (string)json["expirationDate"]);
                    Assert.AreEqual("2018-01-05T12:00:00-05:00", (string)json["relevantDate"]);
                }
            }
        }
Esempio n. 4
0
        public void EnsurePassIsGeneratedCorrectly()
        {
            PassGeneratorRequest request = new PassGeneratorRequest();

            request.ExpirationDate = new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Local);
            request.Nfc            = new Nfc("My NFC Message", "SKLSJLKJ");

            DateTime       offset          = new DateTime(2018, 01, 05, 12, 00, 0);
            TimeZoneInfo   zone            = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset));

            request.RelevantDate = offsetConverted;

            request.AddAuxiliaryField(new StandardField()
            {
                Key   = "aux-1",
                Value = "Test",
                Label = "Label",
                Row   = 1
            });

            using (MemoryStream ms = new MemoryStream())
            {
                using (StreamWriter sr = new StreamWriter(ms))
                {
                    using (JsonWriter writer = new JsonTextWriter(sr))
                    {
                        writer.Formatting = Formatting.Indented;
                        request.Write(writer);
                    }

                    string jsonString = Encoding.UTF8.GetString(ms.ToArray());

                    var settings = new JsonSerializerSettings {
                        DateParseHandling = DateParseHandling.None
                    };

                    dynamic json = JsonConvert.DeserializeObject(jsonString, settings);

                    Assert.AreEqual("2018-01-01T00:00:00+00:00", (string)json["expirationDate"]);
                    Assert.AreEqual("2018-01-05T12:00:00-05:00", (string)json["relevantDate"]);

                    var nfcPayload = (JToken)json["nfc"];
                    var nfcMessage = (string)nfcPayload["message"];
                    Assert.AreEqual("My NFC Message", nfcMessage);

                    var genericKeys = json["generic"];
                    Assert.AreEqual(1, genericKeys["auxiliaryFields"].Count);

                    var auxField = genericKeys["auxiliaryFields"][0];

                    Assert.AreEqual("aux-1", (string)auxField["key"]);
                    Assert.AreEqual("Test", (string)auxField["value"]);
                    Assert.AreEqual("Label", (string)auxField["label"]);
                    Assert.AreEqual(1, (int)auxField["row"]);
                }
            }
        }
Esempio n. 5
0
        public override PassGeneratorRequest GetPass(string serialNumber)
        {
            PassGeneratorRequest request = new PassGeneratorRequest();

            request.PassTypeIdentifier = PassTypeIdentifier;
            request.SerialNumber       = Guid.NewGuid().ToString("D");

            TemplateModel parameters = new TemplateModel();

            request.AddBarcode(BarcodeType.PKBarcodeFormatPDF417, "01927847623423234234", "UTF-8", "01927847623423234234");

            request.LoadTemplate("Coupon", parameters);

            return(request);
        }
Esempio n. 6
0
        protected IHttpActionResult GeneratePass(PassProvider provider, string serialNumber)
        {
            PassGeneratorRequest request = provider.GetPass(serialNumber);

            if (request != null)
            {
                // Passbook webService is configured, enable it in the generated pass
                if (!string.IsNullOrEmpty(mServiceUrl))
                {
                    request.WebServiceUrl       = mServiceUrl;
                    request.AuthenticationToken = GenerateAuthorizationToken(provider.PassTypeIdentifier, request.SerialNumber);
                }

                PassGenerator passGenerator = new PassGenerator();
                byte[]        pass          = passGenerator.Generate(request);

                return(new PassbookContentResult(pass));
            }

            return(null);
        }
Esempio n. 7
0
        public void EnsureFieldHasLocalTime()
        {
            PassGeneratorRequest request = new PassGeneratorRequest();

            request.ExpirationDate = new DateTime(2018, 1, 1, 0, 0, 0, DateTimeKind.Local);
            request.Nfc            = new Nfc("My NFC Message", "SKLSJLKJ");

            DateTime       offset          = new DateTime(2018, 01, 05, 12, 00, 0);
            TimeZoneInfo   zone            = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset));

            request.RelevantDate = offsetConverted;

            request.AddAuxiliaryField(new StandardField()
            {
                Key   = "aux-1",
                Value = "Test",
                Label = "Label",
                Row   = 1
            });

            var local = DateTime.Now;

            local = new DateTime(local.Year, local.Month, local.Day, local.Hour, local.Minute, local.Second, local.Kind);
            request.AddAuxiliaryField(new DateField()
            {
                Key   = "datetime-1",
                Value = local,
                Label = "Label",
            });

            var utc = DateTime.UtcNow;

            utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, utc.Minute, utc.Second, utc.Kind);
            request.AddAuxiliaryField(new DateField()
            {
                Key   = "datetime-2",
                Value = utc,
                Label = "Label",
            });


            using (MemoryStream ms = new MemoryStream())
            {
                using (StreamWriter sr = new StreamWriter(ms))
                {
                    using (JsonWriter writer = new JsonTextWriter(sr))
                    {
                        writer.Formatting = Formatting.Indented;
                        request.Write(writer);
                    }

                    string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                    Console.WriteLine(jsonString);
                    var settings = new JsonSerializerSettings {
                        DateParseHandling = DateParseHandling.None
                    };

                    dynamic json = JsonConvert.DeserializeObject(jsonString, settings);

                    Assert.AreEqual("2018-01-01T00:00:00+00:00", (string)json["expirationDate"]);
                    Assert.AreEqual("2018-01-05T12:00:00-05:00", (string)json["relevantDate"]);

                    var nfcPayload = (JToken)json["nfc"];
                    var nfcMessage = (string)nfcPayload["message"];
                    Assert.AreEqual("My NFC Message", nfcMessage);

                    var genericKeys = json["generic"];
                    Assert.AreEqual(1, genericKeys["auxiliaryFields"].Count);

                    var auxField = genericKeys["auxiliaryFields"][0];

                    Assert.AreEqual("aux-1", (string)auxField["key"]);
                    Assert.AreEqual("Test", (string)auxField["value"]);
                    Assert.AreEqual("Label", (string)auxField["label"]);
                    Assert.AreEqual(1, (int)auxField["row"]);

                    var datetimeField = genericKeys["auxiliaryFields"][1];
                    Assert.AreEqual("datetime-1", (string)datetimeField["key"]);
                    string datetime1      = (string)datetimeField["value"];
                    string expected1start = string.Format("{0:yyyy-MM-ddTHH:mm}", local);

                    Assert.IsTrue(datetime1.StartsWith(expected1start));
                    Assert.IsFalse(datetime1.Contains("Z"));
                    Assert.AreEqual("Label", (string)datetimeField["label"]);


                    var utcdatetimeField = genericKeys["auxiliaryFields"][2];
                    Assert.AreEqual("datetime-1", (string)utcdatetimeField["key"]);
                    string datetime2 = (string)utcdatetimeField["value"];
                    string expected2 = string.Format("{0:yyyy-MM-ddTHH:mm}Z", utc);

                    Assert.AreEqual(expected2, datetime2);
                    Assert.AreEqual("Label", (string)utcdatetimeField["label"]);
                }
            }
        }