Пример #1
0
        public void ApproveWithStickerInUse()
        {
            var mockDeliverUser = University.GetUser("o102");

            DeliverController controller = new DeliverController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockDeliverUser).Object, new RouteData(), controller);

            //get list
            ViewResult result = controller.Index("", "", "Test Student13", 1) as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));

            PagedList <StickerApplication> model = result.Model as PagedList <StickerApplication>;

            Assert.AreEqual(0, model.Where(a => a.Status != StickerApplicationStatus.WaitingForDelivery).Count());
            Assert.AreEqual(1, model.Count);

            //deliver
            StickerApplication    stickerApplication = model.FirstOrDefault();
            RedirectToRouteResult routeResult        = controller.Deliver(stickerApplication.ID, new Sticker {
                SerialNumber = 12345
            }) as RedirectToRouteResult;

            Assert.IsNotNull(routeResult);
            Assert.IsNotNull(routeResult.RouteValues["stickerInUse"]);
        }
Пример #2
0
        public void ApplyPost()
        {
            var mockUser    = University.GetUser("a101");
            var stickerType = University.GetStickerTypes(mockUser.Category).FirstOrDefault();
            var mockData    = new StickerApplication
            {
                SelectedType = stickerType.ID.ToString(),
                Vehicle      = new Vehicle {
                    OwnerName = "Test Owner", PlateNumber = "06ZZ1234", RegistrationNumber = "ZZ123456"
                }
            };

            StickerController controller = new StickerController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockUser).Object, new RouteData(), controller);

            RedirectToRouteResult result = controller.Apply(mockData) as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("1", result.RouteValues["ok"]);
            Assert.AreEqual("Index", result.RouteValues["action"]);

            ViewResult indexResult = controller.Index() as ViewResult;

            Assert.IsNotNull(indexResult);
            Assert.IsInstanceOfType(indexResult.Model, typeof(List <StickerApplication>));

            List <StickerApplication> model = indexResult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, model.Count);
            Assert.AreEqual("06ZZ1234", model.FirstOrDefault().Vehicle.PlateNumber);
        }
Пример #3
0
        public ActionResult Renew(int Id)
        {
            Trace.WriteLine("GET /Sticker/Renew");
            ActionResult detail = Detail(Id);

            if (!(detail is ViewResult))
            {
                return(detail);
            }

            StickerApplication    application          = (detail as ViewResult).Model as StickerApplication;
            RedirectToRouteResult newApplicationResult = CreateNewApplication(application.Clone(), false) as RedirectToRouteResult;

            if (newApplicationResult.RouteValues["ok"] != null)
            {
                using (DatabaseContext db = GetNewDBContext())
                {
                    db.StickerApplications.Attach(application);
                    application.Status = StickerApplicationStatus.Expired;
                    db.SaveChanges();
                }

                return(RedirectToAction("Index", new { ok = "1" }));
            }
            else
            {
                return(newApplicationResult);
            }
        }
Пример #4
0
        private ActionResult CreateNewApplication(StickerApplication application, bool checkForDuplication = true)
        {
            using (DatabaseContext db = GetNewDBContext())
            {
                if (checkForDuplication)
                {
                    int count = db.StickerApplications.Where(a => a.Vehicle.PlateNumber == application.Vehicle.PlateNumber &&
                                                             (a.User.UID != ((METUPrincipal)User).User.UID ||
                                                              (a.User.UID == ((METUPrincipal)User).User.UID &&
                                                               (a.Status == StickerApplicationStatus.Active ||
                                                                a.Status == StickerApplicationStatus.WaitingForDelivery ||
                                                                a.Status == StickerApplicationStatus.WaitingForPayment ||
                                                                a.Status == StickerApplicationStatus.WaitingForApproval)))).Count();

                    if (count > 0)
                    {
                        return(RedirectToAction("Index", new { vehicleAlreadyActive = "1" }));
                    }
                }

                application.ApproveDate  = null;
                application.CreateDate   = DateTime.Now;
                application.DeliveryDate = null;
                application.LastModified = DateTime.Now;

                if (((METUPrincipal)User).User.Category.CanApplyOnBehalfOf)
                {
                    application.Status = StickerApplicationStatus.WaitingForPayment;
                }
                else
                {
                    application.Status = StickerApplicationStatus.WaitingForApproval;
                }

                application.Payment = null;

                User  user  = University.GetUser(((METUPrincipal)User).User.UID);
                Quota quota = University.GetQuotaForUser(user, University.GetStickerType(application.SelectedType));

                application.User  = user;
                application.Quota = quota;

                if (!user.Category.CanApplyOnBehalfOf)
                {
                    application.Owner = new ApplicationOwner()
                    {
                        Name = user.Name
                    };
                }

                db.Users.Attach(application.User);
                db.Quotas.Attach(application.Quota);
                db.StickerApplications.Add(application);
                db.SaveChanges();

                return(RedirectToAction("Index", new { ok = "1" }));
            }
        }
Пример #5
0
        public void ResponseFail()
        {
            var mockApproveUser = University.GetUser("e201");

            //get Applications
            StickerController sc = new StickerController();

            sc.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), sc);
            ViewResult indexResult = sc.Index() as ViewResult;

            Assert.IsNotNull(indexResult);
            Assert.IsInstanceOfType(indexResult.Model, typeof(List <StickerApplication>));

            //find application waiting for payment
            List <StickerApplication> listModel = indexResult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, listModel.Count);
            StickerApplication application = listModel.Find(m => m.Status == StickerApplicationStatus.WaitingForPayment);

            Assert.IsNotNull(application);
            Assert.AreEqual(StickerApplicationStatus.WaitingForPayment, application.Status);

            //pay
            PayController controller = new PayController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), controller);

            PaymentResponseFail pr = new PaymentResponseFail()
            {
                TransId   = "TEST-Transaction-002",
                ReturnOid = application.ID.ToString() + "-TestOrder",
                mdStatus  = 4,
                Response  = "error",
                ErrMsg    = "Test Error Message"
            };

            RedirectToRouteResult result = controller.Fail(pr) as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("Pay", result.RouteValues["controller"]);
            Assert.AreEqual("Index", result.RouteValues["action"]);
            Assert.AreEqual(application.ID.ToString(), result.RouteValues["Id"]);
            Assert.IsNotNull(result.RouteValues["hasError"]);

            //get updated list
            ViewResult indexResultR = sc.Index() as ViewResult;

            Assert.IsNotNull(indexResultR);
            Assert.IsInstanceOfType(indexResultR.Model, typeof(List <StickerApplication>));
            List <StickerApplication> listModelR = indexResultR.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, listModelR.Count);
            StickerApplication applicationR = listModelR.Find(m => m.ID == application.ID);

            Assert.IsNotNull(applicationR);
            Assert.AreEqual(StickerApplicationStatus.WaitingForPayment, applicationR.Status);
        }
Пример #6
0
        public void ResponseOk()
        {
            var mockApproveUser = University.GetUser("e101");

            //get Applications
            StickerController sc = new StickerController();

            sc.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), sc);
            ViewResult indexResult = sc.Index() as ViewResult;

            Assert.IsNotNull(indexResult);
            Assert.IsInstanceOfType(indexResult.Model, typeof(List <StickerApplication>));

            //find application waiting for payment
            List <StickerApplication> listModel = indexResult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, listModel.Count);
            StickerApplication application = listModel.Find(m => m.Status == StickerApplicationStatus.WaitingForPayment);

            Assert.IsNotNull(application);
            Assert.AreEqual(StickerApplicationStatus.WaitingForPayment, application.Status);

            //pay
            PayController controller = new PayController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), controller);

            PaymentResponseSuccess pr = new PaymentResponseSuccess()
            {
                amount    = application.Quota.StickerFee,
                TransId   = "TEST-Transaction-001",
                ReturnOid = application.ID.ToString() + "-TestOrder",
                mdStatus  = 4,
                Response  = "success"
            };

            RedirectToRouteResult result = controller.Ok(pr) as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("Sticker", result.RouteValues["controller"]);
            Assert.AreEqual("Index", result.RouteValues["action"]);
            Assert.IsNotNull(result.RouteValues["paymentok"]);

            //get updated list to be sure application status is not updated
            ViewResult indexResultR = sc.Index() as ViewResult;

            Assert.IsNotNull(indexResultR);
            Assert.IsInstanceOfType(indexResultR.Model, typeof(List <StickerApplication>));
            List <StickerApplication> listModelR = indexResultR.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, listModelR.Count);
            StickerApplication applicationR = listModelR.Find(m => m.ID == application.ID);

            Assert.IsNotNull(applicationR);
            Assert.AreEqual(StickerApplicationStatus.WaitingForDelivery, applicationR.Status);
        }
Пример #7
0
        public void IndexFilteredThenApprove()
        {
            var mockApproveUser = University.GetUser("o101");

            ApproveController controller = new ApproveController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), controller);

            //get list
            ViewResult result = controller.Index("", "", "Test Student11", 1) as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));

            PagedList <StickerApplication> model = result.Model as PagedList <StickerApplication>;

            Assert.AreEqual(0, model.Where(a => a.Status != StickerApplicationStatus.WaitingForApproval).Count());
            Assert.AreEqual(1, model.Count);

            //approve
            StickerApplication       stickerApplication = model.FirstOrDefault();
            List <ApprovementOption> approvementOptions = stickerApplication.GetApprovementOptions();

            Assert.AreEqual(2, approvementOptions.Count);
            ApprovementOption otherOption = approvementOptions.Where(a => a.QuotaID != stickerApplication.Quota.ID).FirstOrDefault();

            controller.Approve(stickerApplication.ID, otherOption.QuotaID);

            //get list
            result = controller.Index("", "", "Test Student11", 1) as ViewResult;
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));
            model = result.Model as PagedList <StickerApplication>;
            Assert.AreEqual(0, model.Count);

            //applications index page for user
            StickerController scontroller = new StickerController
            {
                ControllerContext = new ControllerContext(MockAuthContext(University.GetUser(stickerApplication.User.UID)).Object, new RouteData(), controller)
            };
            ViewResult sresult = scontroller.Index() as ViewResult;

            Assert.IsNotNull(sresult);
            Assert.IsInstanceOfType(sresult.Model, typeof(List <StickerApplication>));

            List <StickerApplication> smodel = sresult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, smodel.Count);
            Assert.AreEqual(StickerApplicationStatus.WaitingForPayment, smodel.FirstOrDefault().Status);
        }
Пример #8
0
        public void IndexFilteredThenApprove()
        {
            var mockDeliverUser = University.GetUser("o102");

            DeliverController controller = new DeliverController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockDeliverUser).Object, new RouteData(), controller);

            //get list
            ViewResult result = controller.Index("", "", "Test Student13", 1) as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));

            PagedList <StickerApplication> model = result.Model as PagedList <StickerApplication>;

            Assert.AreEqual(0, model.Where(a => a.Status != StickerApplicationStatus.WaitingForDelivery).Count());
            Assert.AreEqual(1, model.Count);

            //deliver
            StickerApplication stickerApplication = model.FirstOrDefault();

            controller.Deliver(stickerApplication.ID, new Sticker {
                SerialNumber = 1
            });

            //get list
            result = controller.Index("", "", "Test Student13", 1) as ViewResult;
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));
            model = result.Model as PagedList <StickerApplication>;
            Assert.AreEqual(0, model.Count);

            //applications index page for user
            StickerController scontroller = new StickerController
            {
                ControllerContext = new ControllerContext(MockAuthContext(University.GetUser(stickerApplication.User.UID)).Object, new RouteData(), controller)
            };
            ViewResult sresult = scontroller.Index() as ViewResult;

            Assert.IsNotNull(sresult);
            Assert.IsInstanceOfType(sresult.Model, typeof(List <StickerApplication>));

            List <StickerApplication> smodel = sresult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, smodel.Count);
            Assert.AreEqual(StickerApplicationStatus.Active, smodel.FirstOrDefault().Status);
            Assert.AreEqual(1, smodel.FirstOrDefault().Sticker.SerialNumber);
        }
Пример #9
0
        public void InvalidateSticker()
        {
            var mockUser = University.GetUser("o103");

            InvalidateController controller = new InvalidateController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockUser).Object, new RouteData(), controller);

            ViewResult result = controller.Index("", "", "", 1) as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));
            PagedList <StickerApplication> applications = result.Model as PagedList <StickerApplication>;

            Assert.IsTrue(applications.Count > 0, "No active stickers found");
            StickerApplication application = applications.FirstOrDefault();

            Assert.IsNotNull(application);
            Assert.AreEqual(StickerApplicationStatus.Active, application.Status);
            StickerApplication invalidatedApplication = application;

            RedirectToRouteResult invalidateResult = controller.Invalidate(application.ID) as RedirectToRouteResult;

            Assert.AreEqual(1, invalidateResult.RouteValues["success"]);
            Assert.AreEqual("Index", invalidateResult.RouteValues["action"]);

            result = controller.Index("", "", "", 1) as ViewResult;
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PagedList <StickerApplication>));
            applications = result.Model as PagedList <StickerApplication>;
            StickerApplication testApplication = applications.FirstOrDefault(a => a.ID == invalidatedApplication.ID);

            Assert.IsNull(testApplication, "Invalidated sticker still listed as Active");

            //applications index page for user
            StickerController scontroller = new StickerController
            {
                ControllerContext = new ControllerContext(MockAuthContext(University.GetUser(invalidatedApplication.User.UID)).Object, new RouteData(), controller)
            };
            ViewResult sresult = scontroller.Index() as ViewResult;

            Assert.IsNotNull(sresult);
            Assert.IsInstanceOfType(sresult.Model, typeof(List <StickerApplication>));

            List <StickerApplication> smodel = sresult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, smodel.Count);
            Assert.AreEqual(StickerApplicationStatus.Invalidated, smodel.FirstOrDefault().Status);
        }
Пример #10
0
        public void DetailwithApprovalUser()
        {
            var mockUser = University.GetUser("o101");

            StickerController controller = new StickerController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockUser).Object, new RouteData(), controller);

            ViewResult result = controller.Detail(1) as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(StickerApplication));

            StickerApplication model = result.Model as StickerApplication;

            Assert.AreEqual(1, model.ID);
        }
Пример #11
0
        public ActionResult Apply(StickerApplication application)
        {
            Trace.WriteLine("POST /Sticker/Apply");

            if (!((METUPrincipal)User).User.CanApplyForMore)
            {
                return(RedirectToAction("Index", "Sticker", new { nomoresticker = "1" }));
            }

            if (ModelState.IsValid)
            {
                return(CreateNewApplication(application));
            }
            else
            {
                return(new EmptyResult());
            }
        }
Пример #12
0
        public void ApplyPostForNoMoreSticker()
        {
            var mockUser    = University.GetUser("e101");
            var stickerType = University.GetStickerTypes(mockUser.Category).FirstOrDefault();
            var mockData    = new StickerApplication
            {
                SelectedType = stickerType.ID.ToString(),
                Vehicle      = new Vehicle {
                    OwnerName = "Test Owner", PlateNumber = "06ZZ1234", RegistrationNumber = "ZZ123456"
                }
            };

            StickerController controller = new StickerController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockUser).Object, new RouteData(), controller);

            RedirectToRouteResult result = controller.Apply(mockData) as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("1", result.RouteValues["nomoresticker"]);
            Assert.AreEqual("Sticker", result.RouteValues["controller"]);
            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
Пример #13
0
        public void ApplyRenew()
        {
            var mockUser    = University.GetUser("e103");
            var stickerType = University.GetStickerTypes(mockUser.Category).FirstOrDefault();

            StickerController controller = new StickerController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockUser).Object, new RouteData(), controller);

            ViewResult result = controller.Index() as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(List <StickerApplication>));
            StickerApplication oldApplication = ((List <StickerApplication>)result.Model).FirstOrDefault();

            Assert.IsNotNull(oldApplication);
            Assert.IsTrue(oldApplication.Term.IsExpired);

            RedirectToRouteResult renewResult = controller.Renew(oldApplication.ID) as RedirectToRouteResult;

            Assert.AreEqual("1", renewResult.RouteValues["ok"]);
            Assert.AreEqual("Index", renewResult.RouteValues["action"]);

            result = controller.Index() as ViewResult;
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(List <StickerApplication>));
            List <StickerApplication> applications = result.Model as List <StickerApplication>;

            Assert.AreEqual(2, applications.Count);

            StickerApplication newApplication = applications.FirstOrDefault(a => a.ID != oldApplication.ID);

            oldApplication = applications.FirstOrDefault(a => a.ID == oldApplication.ID);
            Assert.IsFalse(newApplication.Term.IsExpired);
            Assert.AreEqual(StickerApplicationStatus.Expired, oldApplication.Status);
            Assert.AreEqual(StickerApplicationStatus.WaitingForApproval, newApplication.Status);
        }
Пример #14
0
        public void Index()
        {
            var mockApproveUser = University.GetUser("e201");

            //get Applications
            StickerController sc = new StickerController();

            sc.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), sc);
            ViewResult indexResult = sc.Index() as ViewResult;

            Assert.IsNotNull(indexResult);
            Assert.IsInstanceOfType(indexResult.Model, typeof(List <StickerApplication>));

            //find application waiting for payment
            List <StickerApplication> listModel = indexResult.Model as List <StickerApplication>;

            Assert.AreNotEqual(0, listModel.Count);
            StickerApplication application = listModel.Find(m => m.Status == StickerApplicationStatus.WaitingForPayment);

            Assert.IsNotNull(application);

            PayController controller = new PayController();

            controller.ControllerContext = new ControllerContext(MockAuthContext(mockApproveUser).Object, new RouteData(), controller);

            ViewResult result = controller.Index(application.ID) as ViewResult;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Model, typeof(PaymentRequest));

            PaymentRequest model = result.Model as PaymentRequest;

            Assert.IsNotNull(model.Application);
            Assert.IsNotNull(model.Application.Quota);
            Assert.IsNotNull(model.Application.Quota.StickerFee);
            Assert.AreEqual(model.Application.Quota.StickerFee, application.Quota.StickerFee);
        }
Пример #15
0
        public ActionResult Apply(Visitor visitor)
        {
            Trace.WriteLine("POST /Visitor/Apply");
            if (ModelState.IsValid)
            {
                try
                {
                    using (DatabaseContext db = GetNewDBContext())
                    {
                        if (User != null && User.Identity.IsAuthenticated)
                        {
                            visitor.User = new User {
                                UID = User.Identity.Name
                            };
                        }

                        StickerApplication application = db.StickerApplications.
                                                         FirstOrDefault(s => s.Status == StickerApplicationStatus.Active &&
                                                                        s.Vehicle.PlateNumber == visitor.Vehicle.PlateNumber);

                        if (application != null)
                        {
                            throw new ArgumentException("This vehicle has already an active sticker");
                        }


                        Visitor prevVisitor = db.Visitors.
                                              FirstOrDefault(v =>
                                                             (v.Status == VisitorStatus.WaitingForApproval || v.Status == VisitorStatus.WaitingForArrival) &&
                                                             v.Vehicle.PlateNumber == visitor.Vehicle.PlateNumber &&
                                                             v.VisitDate == visitor.VisitDate &&
                                                             v.User.UID == visitor.User.UID);
                        if (prevVisitor != null)
                        {
                            throw new ArgumentException("This vehicle has already an active visit request on that day");
                        }


                        User user = db.Users.FirstOrDefault(u => u.UID == visitor.User.UID);
                        if (user == null)
                        {
                            throw new ArgumentException("Visitee's username is invalid");
                        }
                        else
                        {
                            visitor.User = user;
                        }

                        visitor.CreateDate   = DateTime.Now;
                        visitor.LastModified = DateTime.Now;
                        visitor.EntryDate    = null;
                        if (User != null && User.Identity.IsAuthenticated)
                        {
                            visitor.ApproveDate = DateTime.Now;
                            visitor.Status      = VisitorStatus.WaitingForArrival;
                        }
                        else
                        {
                            visitor.ApproveDate = null;
                            visitor.Status      = VisitorStatus.WaitingForApproval;
                        }

                        visitor.UID = Guid.NewGuid().ToString().ToLower();
                        db.Visitors.Add(visitor);
                        db.SaveChanges();
                        if (User != null && User.Identity.IsAuthenticated)
                        {
                            return(RedirectToAction("List", "Visitor", new { success = 1 }));
                        }
                        else
                        {
                            return(RedirectToAction("Detail", "Visitor", new { visitor.UID, success = 1 }));
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    ViewBag.ErrorMessage = ex.Message;
                    return(View(visitor));
                }
            }
            else
            {
                return(new EmptyResult());
            }
        }
Пример #16
0
        public PaymentRequest(StickerApplication application)
        {
            Application = application;

            ExpiryMonths = new List <ExpiryMonthOption>
            {
                new ExpiryMonthOption()
                {
                    Key = "01", Value = "January"
                },
                new ExpiryMonthOption()
                {
                    Key = "02", Value = "February"
                },
                new ExpiryMonthOption()
                {
                    Key = "03", Value = "March"
                },
                new ExpiryMonthOption()
                {
                    Key = "04", Value = "April"
                },
                new ExpiryMonthOption()
                {
                    Key = "05", Value = "May"
                },
                new ExpiryMonthOption()
                {
                    Key = "06", Value = "June"
                },
                new ExpiryMonthOption()
                {
                    Key = "07", Value = "July"
                },
                new ExpiryMonthOption()
                {
                    Key = "08", Value = "August"
                },
                new ExpiryMonthOption()
                {
                    Key = "09", Value = "September"
                },
                new ExpiryMonthOption()
                {
                    Key = "10", Value = "October"
                },
                new ExpiryMonthOption()
                {
                    Key = "11", Value = "November"
                },
                new ExpiryMonthOption()
                {
                    Key = "12", Value = "December"
                }
            };

            ExpiryYears = new List <ExpiryYearOption>();
            int y = System.DateTime.Now.Year;

            for (int i = 0; i <= 20; i++)
            {
                string yearVal = (y + i).ToString();
                ExpiryYears.Add(new ExpiryYearOption()
                {
                    Value = yearVal, Key = yearVal.Substring(2)
                });
            }
        }