208 lines
4.6 KiB
Nim
208 lines
4.6 KiB
Nim
import
|
|
mike,
|
|
segfaults,
|
|
os,
|
|
nimja/parser,
|
|
strutils,
|
|
./a3pkg/[models, mics, htmx],
|
|
./a3c/[products, users, cart],
|
|
./[admin, cart, about, index, checkout, validation]
|
|
|
|
"/" -> [get, post]: ctx.index()
|
|
|
|
"/about" -> get: ctx.about()
|
|
|
|
"/cart" -> get: ctx.cart()
|
|
"/update-cart" -> get: ctx.updateCart()
|
|
"/add-to-cart" -> get: ctx.addToCart()
|
|
"/remove-from-cart" -> get: ctx.removeFromCart()
|
|
|
|
"/cart/checkout" -> [get, post]: ctx.checkOut()
|
|
|
|
"/validation/checkout" -> post: ctx.validationCheckOut()
|
|
"/validation/lname" -> post: ctx.validationLName()
|
|
"/validation/fname" -> post: ctx.validationFName()
|
|
"/validation/address" -> post: ctx.validationAddress()
|
|
"/validation/state" -> post: ctx.validationState()
|
|
"/validation/zip" -> post: ctx.validationZip()
|
|
"/validation/email" -> post: ctx.validationEmail()
|
|
"/validation/phone" -> post: ctx.validationPhone()
|
|
"/validation/country" -> post: ctx.validationCountry()
|
|
|
|
"/contact" -> get:
|
|
|
|
var
|
|
db = newDatabase()
|
|
|
|
products: seq[Products]
|
|
cookies = ctx.cookies
|
|
|
|
email = cookies.getOrDefault("email", "")
|
|
password = cookies.getOrDefault("password", "")
|
|
|
|
if email != "" and password != "":
|
|
var
|
|
userId = db.getUserId(email, password)
|
|
cart = db.getUserCart(userId)
|
|
|
|
for c, d in cart:
|
|
var product = db.getProductById(d.productId)
|
|
products.add(product)
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "contact.nimja")
|
|
|
|
"/shop" -> get:
|
|
|
|
var
|
|
db = newDatabase()
|
|
|
|
availableProducts = db.availableProducts()
|
|
products: seq[Products]
|
|
cookies = ctx.cookies
|
|
|
|
email = cookies.getOrDefault("email", "")
|
|
password = cookies.getOrDefault("password", "")
|
|
|
|
if email != "" and password != "":
|
|
products = micsGetProducts(email, password)
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "shop.nimja")
|
|
|
|
"/shop-single" -> get:
|
|
|
|
var
|
|
db = newDatabase()
|
|
|
|
productName = ctx.queryParams["prod"]
|
|
|
|
product = db.getProductByName(productName)
|
|
|
|
products: seq[Products]
|
|
cookies = ctx.cookies
|
|
|
|
email = cookies.getOrDefault("email", "")
|
|
password = cookies.getOrDefault("password", "")
|
|
|
|
if email != "" and password != "":
|
|
products = micsGetProducts(email, password)
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "shop-single.nimja")
|
|
|
|
"/login" -> get:
|
|
var
|
|
loginError = ""
|
|
emailError = ""
|
|
passwordError = ""
|
|
|
|
email = ""
|
|
password = ""
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "login.nimja")
|
|
|
|
"/login" -> post:
|
|
var
|
|
email = ctx.urlForm["email"]
|
|
password = ctx.urlForm["password"]
|
|
|
|
db = newDatabase()
|
|
|
|
user = db.userAvailability(email, password)
|
|
|
|
loginError = ""
|
|
emailError = ""
|
|
passwordError = ""
|
|
|
|
qParams = ctx.queryParams
|
|
|
|
productName = qParams.getOrDefault("prod", "")
|
|
quantity = parseInt(qParams.getOrDefault("quantity", "0"))
|
|
|
|
if user == true:
|
|
|
|
ctx &= initCookie("email", email)
|
|
ctx &= initCookie("password", password)
|
|
|
|
if quantity != 0:
|
|
ctx.redirect("/cart/checkout?prod=" & productName & "&quantity=" & $quantity)
|
|
else:
|
|
|
|
ctx.redirect("/")
|
|
|
|
else:
|
|
|
|
if email == "":
|
|
emailError = "Email is Required"
|
|
|
|
if password == "":
|
|
passwordError = "Password is Required"
|
|
|
|
if user == false:
|
|
loginError = "Invalid Login or Password"
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "login.nimja")
|
|
|
|
"/logout" -> get:
|
|
ctx &= initCookie("email", "")
|
|
ctx &= initCookie("password", "")
|
|
|
|
ctx.redirect("/login")
|
|
|
|
"/signup" -> get:
|
|
var
|
|
firstNameError = ""
|
|
lastNameError = ""
|
|
emailError = ""
|
|
passwordError = ""
|
|
user: User
|
|
|
|
user.firstName = ""
|
|
user.lastName = ""
|
|
user.email = ""
|
|
user.password = ""
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "signup.nimja")
|
|
|
|
"/signup" -> post:
|
|
var
|
|
form = ctx.urlForm
|
|
|
|
db = newDatabase()
|
|
user: User
|
|
|
|
firstNameError = ""
|
|
lastNameError = ""
|
|
emailError = ""
|
|
passwordError = ""
|
|
|
|
user.firstName = form["firstName"]
|
|
user.lastName = form["lastName"]
|
|
user.email = form["email"]
|
|
user.password = form["password"]
|
|
|
|
if user.firstName == "":
|
|
firstNameError = "First Name is Required"
|
|
|
|
if user.lastName == "":
|
|
lastNameError = "Last Name is Required"
|
|
|
|
if user.email == "":
|
|
emailError = "Email is Required"
|
|
|
|
if user.password == "":
|
|
passwordError = "Password is Required"
|
|
|
|
if firstNameError == "" and lastNameError == "" and emailError == "" and passwordError == "":
|
|
user.accessLevel = 1
|
|
|
|
db.createPost(user)
|
|
ctx.redirect("/login")
|
|
|
|
compileTemplateFile(getScriptDir() / "a3a" / "signup.nimja")
|
|
|
|
"/admin/dashboard" -> get:
|
|
ctx.admin()
|
|
|
|
servePublic("src/a3b", "/a3b")
|
|
|
|
run()
|