<% Class RequestOrderController_Class Private m_useLayout Private m_title Private Sub Class_Initialize() m_useLayout = True m_title = "Request an Order" End Sub Public Property Get useLayout useLayout = m_useLayout End Property Public Property Let useLayout(v) m_useLayout = v End Property Public Property Get Title Title = m_title End Property Public Property Let Title(v) m_title = v End Property '------------------------------------------------------------------------------------------------------------------- ' GET: show the "request an order" form (email + jurisdiction number) '------------------------------------------------------------------------------------------------------------------- Public Sub Index() Dim formValues, emailValue, jurisdictionValue, csrfToken Set formValues = FormCache().DeserializeForm("RequestOrder") FormCache().ClearForm "RequestOrder" emailValue = "" jurisdictionValue = "" If Not (formValues Is Nothing) Then If formValues.Exists("Email") Then emailValue = formValues("Email") If formValues.Exists("JurisdictionNumber") Then jurisdictionValue = formValues("JurisdictionNumber") End If csrfToken = HTMLSecurity().GetAntiCSRFToken("RequestOrder") %> <% End Sub '------------------------------------------------------------------------------------------------------------------- ' POST: validate submission, create the order record, email a continuation link '------------------------------------------------------------------------------------------------------------------- Public Sub Create() MVC.RequirePost Dim csrfToken : csrfToken = Request.Form("csrf_token") If Not HTMLSecurity().IsValidAntiCSRFToken("RequestOrder", csrfToken) Then HTMLSecurity().ClearAntiCSRFToken "RequestOrder" Flash().AddError "Your form session expired. Please try again." Response.Redirect Routes().AppURL & "request-order" Exit Sub End If HTMLSecurity().ClearAntiCSRFToken "RequestOrder" Dim email, jurisdictionNumber email = Trim(Request.Form("Email")) jurisdictionNumber = Trim(Request.Form("JurisdictionNumber")) Dim errorList() : ReDim errorList(-1) If Not IsValidEmail(email) Then AddValidationError errorList, "Please enter a valid email address." If Len(jurisdictionNumber) = 0 Then AddValidationError errorList, "Please enter your jurisdiction number." ElseIf Not IsValidJurisdictionNumber(jurisdictionNumber) Then AddValidationError errorList, "That jurisdiction number could not be verified." End If If UBound(errorList) >= 0 Then Dim i For i = 0 To UBound(errorList) Flash().AddError errorList(i) Next FormCache().SerializeForm "RequestOrder", Request.Form Response.Redirect Routes().AppURL & "request-order" Exit Sub End If Dim token : token = OrdersRepository().CreateOrder(email, jurisdictionNumber) OrderMailer().SendContinuationEmail email, token Flash().Success = "Check your email for a link to continue your order." Response.Redirect Routes().AppURL & "request-order" End Sub End Class Dim RequestOrderController_Class__Singleton Function RequestOrderController() If IsEmpty(RequestOrderController_Class__Singleton) Then Set RequestOrderController_Class__Singleton = New RequestOrderController_Class End If Set RequestOrderController = RequestOrderController_Class__Singleton End Function %>