Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

68 рядки
2.6KB

  1. <%
  2. '=======================================================================================================================
  3. ' Orders Repository
  4. '=======================================================================================================================
  5. Class OrdersRepository_Class
  6. ' Creates a new order row for the given email/jurisdiction, generates a single-use
  7. ' token that expires after OrderTokenExpirationHours, and returns that token.
  8. Public Function CreateOrder(email, jurisdictionNumber)
  9. Dim token, expiresAt
  10. token = NewGuid()
  11. expiresAt = DateAdd("h", TokenExpirationHours(), Now())
  12. DAL.Execute _
  13. "INSERT INTO Orders (Email, JurisdictionNumber, Token, TokenExpiresAt, CreatedAt) VALUES (?, ?, ?, ?, ?)", _
  14. Array(email, jurisdictionNumber, token, expiresAt, Now())
  15. CreateOrder = token
  16. End Function
  17. ' Returns a Scripting.Dictionary describing the order matching the given token, or Nothing if not found.
  18. Public Function FindByToken(token)
  19. Dim rs
  20. Set rs = DAL.Query( _
  21. "SELECT OrderID, Email, JurisdictionNumber, Token, TokenExpiresAt, TokenUsedAt, CreatedAt FROM Orders WHERE Token = ?", _
  22. Array(token))
  23. If rs.EOF Then
  24. Set FindByToken = Nothing
  25. Else
  26. Dim order : Set order = Server.CreateObject("Scripting.Dictionary")
  27. order.Add "OrderID", rs("OrderID").Value
  28. order.Add "Email", rs("Email").Value
  29. order.Add "JurisdictionNumber", rs("JurisdictionNumber").Value
  30. order.Add "Token", rs("Token").Value
  31. order.Add "TokenExpiresAt", rs("TokenExpiresAt").Value
  32. order.Add "TokenUsedAt", rs("TokenUsedAt").Value
  33. order.Add "CreatedAt", rs("CreatedAt").Value
  34. Set FindByToken = order
  35. End If
  36. Destroy rs
  37. End Function
  38. Public Sub MarkTokenUsed(orderId)
  39. DAL.Execute "UPDATE Orders SET TokenUsedAt = ? WHERE OrderID = ?", Array(Now(), orderId)
  40. End Sub
  41. Private Function TokenExpirationHours()
  42. Dim setting : setting = GetAppSetting("OrderTokenExpirationHours")
  43. If setting = "nothing" Or Not IsNumeric(setting) Then
  44. TokenExpirationHours = 24
  45. Else
  46. TokenExpirationHours = CInt(setting)
  47. End If
  48. End Function
  49. End Class
  50. Dim OrdersRepository__Singleton
  51. Function OrdersRepository()
  52. If IsEmpty(OrdersRepository__Singleton) Then
  53. Set OrdersRepository__Singleton = New OrdersRepository_Class
  54. End If
  55. Set OrdersRepository = OrdersRepository__Singleton
  56. End Function
  57. %>

Powered by TurnKey Linux.