public void ShouldDetectDuplicateGift() { var requestManager = FakeRequestManager.Create(); var testOrg = new Organization() { OrganizationName = "MockMasterName", RegistrationTitle = "MockMasterTitle", Location = "MockLocation", RegistrationTypeId = RegistrationTypeCode.JoinOrganization, Limit = 0 }; var org = FakeOrganizationUtils.MakeFakeOrganization(requestManager, testOrg); using (var db = CMSDataContext.Create(DatabaseFixture.Host)) { Transaction t = new Transaction() { TransactionDate = DateTime.Now, First = "Chester", Last = "Tester", Amt = 30, Testing = true, TransactionGateway = "Sage", OrgId = org.org.OrganizationId }; db.Transactions.InsertOnSubmit(t); db.SubmitChanges(); } OnlineRegPersonModel person = new OnlineRegPersonModel(db) { FirstName = "Chester", LastName = "Tester" }; OnlineRegModel om = FakeOrganizationUtils.GetFakeOnlineRegModel(org.org.OrganizationId); om.List = new List <OnlineRegPersonModel>() { person }; om.CheckDuplicateGift(30).ShouldNotBeNull(); FakeOrganizationUtils.DeleteOrg(org.org.OrganizationId); }
public ActionResult ProcessPayment(PaymentForm pf) { if (pf.ProcessType == PaymentProcessTypes.EmpytProcess) { pf.ProcessType = PaymentProcessTypes.OnlineRegistration; } // One time or Reg... Response.NoCache(); #if DEBUG #else if (Session["FormId"] != null) { if ((Guid)Session["FormId"] == pf.FormId) { return(Message("Already submitted")); } } #endif OnlineRegModel m = null; var ed = CurrentDatabase.RegistrationDatas.SingleOrDefault(e => e.Id == pf.DatumId); if (ed != null) { m = Util.DeSerialize <OnlineRegModel>(ed.Data); } #if DEBUG #else if (m != null && m.History.Any(h => h.Contains("ProcessPayment"))) { return(Content("Already submitted")); } #endif int?datumid = null; if (m != null) { m.TermsSignature = pf.TermsSignature; datumid = m.DatumId; var msg = m.CheckDuplicateGift(pf.AmtToPay); if (Util.HasValue(msg)) { return(Message(msg)); } } if (IsCardTester(pf, "Payment Page")) { return(Message("Found Card Tester")); } int?GatewayId = MultipleGatewayUtils.GatewayId(CurrentDatabase, m?.ProcessType ?? pf.ProcessType); if (CurrentDatabase.Setting("UseRecaptcha") && GatewayId != (int)GatewayTypes.Pushpay) { if (!GoogleRecaptcha.IsValidResponse(HttpContext, CurrentDatabase)) { CurrentDatabase.LogActivity("OnlineReg Error ReCaptcha validation failed.", pf.OrgId, did: datumid); ModelState.AddModelError("form", "ReCaptcha validation failed."); return(View("Payment/Process", pf)); } } RouteModel ret; if ((int)GatewayTypes.Pushpay == GatewayId) { int orgId; ret = pf.ProcessExternalPayment(m, out orgId); pf.OrgId = orgId; } else { ret = pf.ProcessPayment(ModelState, m); } SetHeaders(pf.OrgId ?? 0); switch (ret.Route) { case RouteType.ModelAction: return(View(ret.View, ret.Model)); case RouteType.AmtDue: ViewBag.amtdue = ret.AmtDue; return(View(ret.View, ret.Transaction)); case RouteType.Error: CurrentDatabase.LogActivity("OnlineReg Error " + ret.Message, pf.OrgId, did: datumid); return(Message(ret.Message)); case RouteType.ValidationError: return(View(ret.View, pf)); default: // unexptected Route if (ModelState.IsValid) { ErrorSignal.FromCurrentContext().Raise(new Exception("OnlineReg Unexpected route datum= " + datumid)); CurrentDatabase.LogActivity("OnlineReg Unexpected Route " + ret.Message, oid: pf.OrgId, did: datumid); ModelState.AddModelError("form", "unexpected error in payment processing"); } return(View(ret.View ?? "Payment/Process", pf)); } }
public ActionResult ProcessPayment(PaymentForm pf) { Response.NoCache(); #if DEBUG #else if (Session["FormId"] != null) { if ((Guid)Session["FormId"] == pf.FormId) { return(Message("Already submitted")); } } #endif OnlineRegModel m = null; var ed = DbUtil.Db.RegistrationDatas.SingleOrDefault(e => e.Id == pf.DatumId); if (ed != null) { m = Util.DeSerialize <OnlineRegModel>(ed.Data); } #if DEBUG #else if (m != null && m.History.Any(h => h.Contains("ProcessPayment"))) { return(Content("Already submitted")); } #endif int?datumid = null; if (m != null) { datumid = m.DatumId; var msg = m.CheckDuplicateGift(pf.AmtToPay); if (Util.HasValue(msg)) { return(Message(msg)); } } if (IsCardTester(pf, "Payment Page")) { return(Message("Found Card Tester")); } SetHeaders(pf.OrgId ?? 0); var ret = pf.ProcessPayment(ModelState, m); switch (ret.Route) { case RouteType.ModelAction: return(View(ret.View, ret.Model)); case RouteType.AmtDue: ViewBag.amtdue = ret.AmtDue; return(View(ret.View, ret.Transaction)); case RouteType.Error: DbUtil.Db.LogActivity("OnlineReg Error " + ret.Message, pf.OrgId, did: datumid); return(Message(ret.Message)); case RouteType.ValidationError: return(View(ret.View, pf)); default: // unexptected Route if (ModelState.IsValid) { ErrorSignal.FromCurrentContext().Raise(new Exception("OnlineReg Unexpected route datum= " + datumid)); DbUtil.Db.LogActivity("OnlineReg Unexpected Route " + ret.Message, oid: pf.OrgId, did: datumid); ModelState.AddModelError("form", "unexpected error in payment processing"); } return(View(ret.View ?? "Payment/Process", pf)); } }