namespace WebApplication open DredgePos open Reservations open Saturn open Giraffe open Types module Program = let handlePostRoute<'a> handlerFunction post next ctx = json (handlerFunction ctx post) next ctx let browser = pipeline { use_warbler } let ajaxRouter = router { pipe_through browser post "/authenticateClerk" (bindJson (handlePostRoute AjaxController.loginWithLoginCode) ) post "/getTableData" (bindJson AjaxController.getTableData) post "/transformTable" (bindJson AjaxController.transformTable) post "/createTable" (bindJson AjaxController.createTable) post "/addDecoration" (bindJson AjaxController.AddDecoration) post "/updateDecoration" (bindJson AjaxController.UpdateDecoration) post "/deleteDecoration" (bindJson AjaxController.DeleteDecoration) post "/deleteTable" (bindJson AjaxController.deleteTable) post "/mergeTables" (bindJson AjaxController.mergeTables) post "/newEmptyReservation" (bindJson AjaxController.newEmptyReservation) post "/updateReservation" (bindJson AjaxController.updateReservation) post "/getReservation" (bindJson (fun reservation -> json <| GetReservationById reservation) ) post "/unreserveTable" (bindJson AjaxController.unreserveTable ) getf "/getRoomData/%i" AjaxController.getRoomData getf "/getKeyboardLayout/%s" AjaxController.getKeyboardLayout getf "/getTablesAndDecorations/%i" AjaxController.getRoomTablesAndDecorations get "/languageVars" (json <| AjaxController.getLanguageVars) get "/getOpenTables" (json <| Floorplan.getActiveTables Floorplan.currentVenue) getf "/getActiveTables/%i" AjaxController.getActiveTables getf "/getFloorplanData/%i" AjaxController.getFloorplanData getf "/tableIsOpen/%i" (fun tableNumber -> json <| Floorplan.tableNumberIsOpen tableNumber) getf "/transferTable/%i/%i" AjaxController.transferTable getf "/unmergeTable/%i" AjaxController.unmergeTable getf "/tableExists/%i" (fun tableNumber -> json <| Floorplan.tableExists tableNumber) } let pageRouter = router { pipe_through browser not_found_handler (setStatusCode 404 >=> text "404") get "/" (redirectTo false "/login") get "/login" (warbler (fun _ -> PageController.loadHomePage() )) get "/floorplan" (warbler (fun ctx -> PageController.loadFloorplan (snd ctx))) forward "/ajax" ajaxRouter } let app = application { use_static "wwwroot" use_router pageRouter } run app