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"]); }
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); }
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); } }
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" })); } }
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); }
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); }
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); }
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); }
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); }
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); }
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()); } }
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"]); }
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); }
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); }
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()); } }
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) }); } }