private BarcodeGroup Generate(BarcodeWriter bw, BarcodeOptions options)//string ap, string dayFrom, string dayTo)
        {
            Random rndNumber = new Random();
            //	load flight details
            var flightResult = AccessGateFlightInfo.ToList().Where(x => x.FlightNo == options.FlightNo).ToList();
            //	If no result, return
            if (flightResult.Count == 0)
            {
                return new BarcodeGroup();
            }
            //	Make flight easier to access
            var flight = flightResult[0];
            var carrier = flight.CarrierDesignator;
            if (carrier.Length < 3)
                carrier = carrier.PadRight(3, ' ');
            var pnr = "";
            string name = options.Name.Length > 20 ? options.Name.Substring(0, 20) : options.Name.PadRight(20, ' ');

            var jDate = (flight.DepartDateTime.DayOfYear + 14).ToString().PadLeft(3, '0');
            var securityValue = name.ToArray().Sum(c => (int)c) + flight.FromAirport.ToArray().Sum(c => (int)c) + options.CISN.ToArray().Sum(c => (int)c);
            var r = (rndNumber).Next(100, 700).ToString();
            var securityFactor = Convert.ToInt32(r, 16);
            securityValue += securityFactor;
            pnr = string.Format("{0}{1}", securityFactor.ToString("X3"), securityValue.ToString("X4"));
            var d = ConfigurationManager.GetSAVConfigSetting("SmartAccessValidation", "CovertSerialNumber");
            var barcode = string.Format("M1{0}E{1}{10}{2}{3}{4}{5}Y{6}{7}01E0293[{8}To{9}]{11}", name, pnr, flight.ToAirport, carrier, flight.FlightNo, jDate, options.Seat, options.CISN, options.StartDate, options.EndDate, options.AP, (Convert.ToInt32(d.KeyValue) + 1).ToString().PadLeft(6, '0'));

            var bg = new BarcodeGroup
            {
                barcode = barcode,
                image = bw.Write(barcode)
            };

            return bg;
        }
 public BarcodeGroup GenerateFastTrackBarcode(FastTrackOptions options)
 {
     Random rndNumber = new Random();
     //	Generate random name
     //var png = new PersonNameGenerator();
     string name;
     if (rndNumber.Next(0, 2) == 0)
     {
         name = "Mrs Test Name";// + png.GenerateRandomFemaleFirstName() + " " + png.GenerateRandomLastName();
     }
     else
     {
         name = "Mr Test Name";// + png.GenerateRandomMaleFirstName() + " " + png.GenerateRandomLastName();
     }
     //	random flight number
     var ag = AccessGateFlightInfo.ToList(DateTime.Today.AddDays(-7), DateTime.Today);
     Console.WriteLine(ag.Count);
     if (ag.Count == 0)
     {
         Console.WriteLine("No Flights");
         return new BarcodeGroup();
     }
     var randomFlight = ag[rndNumber.Next(0, ag.Count - 1)];
     var flightNo = randomFlight.FlightNo;
     if (flightNo.Length < 5)
     {
         flightNo = flightNo.PadRight(5, ' ');
     }
     //	random seat
     var seat = "";
     var rndSeatLetter = rndNumber.Next(65, 73);
     var seatLetter = (char)rndSeatLetter;
     var rndSeatNumber = rndNumber.Next(1, 11);
     seat = string.Format("{0}{1}", rndSeatNumber, seatLetter).PadLeft(4, '0');
     //	random cisn
     var rndCisn = rndNumber.Next(0, 150);
     var cisn = rndCisn.ToString().PadLeft(5, '0');
     //	return barcode
     BarcodeOptions testParams = new BarcodeOptions()
     {
         Name = name,
         FlightNo = flightNo,
         Seat = seat,
         CISN = cisn,
         StartDate = DateTime.Today.AddDays(-7).ToString("yyyyMMdd"),
         EndDate = DateTime.Today.ToString("yyyyMMdd"),
         AP = "test"
     };
     var bw = new BarcodeWriter
     {
         Format = BarcodeFormat.PDF_417,
         Options = { Margin = 2 }
     };
     return Generate(bw, testParams);
 }