From 26a106b0d9687be8448e37658887c8bc2937804e Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Tue, 18 Aug 2026 20:00:23 -0600 Subject: notification cleanup and message marking --- lisp/service/auth-service.lisp | 16 ++++++++-------- lisp/service/contact-us-service.lisp | 4 ++-- lisp/service/login-service.lisp | 14 +++++++------- lisp/service/messages-service.lisp | 15 +++++++-------- lisp/service/password-service.lisp | 4 ++-- lisp/service/profile-service.lisp | 4 ++-- lisp/service/rest-service.lisp | 6 ------ lisp/service/resume-service.lisp | 33 ++++++++++++++++++--------------- lisp/service/users-service.lisp | 36 ++++++++++++++++++------------------ 9 files changed, 64 insertions(+), 68 deletions(-) (limited to 'lisp/service') diff --git a/lisp/service/auth-service.lisp b/lisp/service/auth-service.lisp index 8450e64..0862147 100644 --- a/lisp/service/auth-service.lisp +++ b/lisp/service/auth-service.lisp @@ -20,15 +20,15 @@ (when (null (errormsg ,instance)) ,@body) (when (location-p ,instance) - (setf (session-value :message) nil) - (setf (session-value :errormsg) nil)) + (setf (message instance) nil) + (setf (errormsg instance) nil)) (org-ckons-json::objects-to-json `(,,instance)))) (defmacro with-auth-raw ((instance auth-service roles) &body body) `(let ((,instance (make-instance ',auth-service :roles ,roles))) (when (location-p ,instance) - (setf (session-value :message) nil) - (setf (session-value :errormsg) nil)) + (setf (message instance) nil) + (setf (errormsg instance) nil)) (when (null (errormsg ,instance)) ,@body))) @@ -36,13 +36,13 @@ `(let ((,instance (make-instance ',rest-service))) ,@body (when (location-p ,instance) - (setf (session-value :message) nil) - (setf (session-value :errormsg) nil)) + (setf (message instance) nil) + (setf (errormsg instance) nil)) (org-ckons-json::objects-to-json `(,,instance)))) (defmacro with-noauth-raw ((instance rest-service) &body body) `(let ((,instance (make-instance ',rest-service))) (when (location-p ,instance) - (setf (session-value :message) nil) - (setf (session-value :errormsg) nil)) + (setf (message instance) nil) + (setf (errormsg instance) nil)) ,@body)) diff --git a/lisp/service/contact-us-service.lisp b/lisp/service/contact-us-service.lisp index 1e55ddb..d97d74c 100644 --- a/lisp/service/contact-us-service.lisp +++ b/lisp/service/contact-us-service.lisp @@ -78,10 +78,10 @@ :reply-to (mail-postmaster *webapp*) :ssl (mail-ssl *webapp*) :authentication (mail-authentication *webapp*)) - (setf (session-value :message) "Form submitted successfully.")) + (setf (message instance) "Form submitted successfully.")) (error (e) (declare (ignore e)) - (setf (session-value :errormsg) "Error submitting form."))))))) + (setf (errormsg instance) "Error submitting form."))))))) (define-endpoint ("/contact-us" :method :get) () contact-us-json) (define-endpoint ("/contact-us/view" :method :get) () contact-us-view-json) diff --git a/lisp/service/login-service.lisp b/lisp/service/login-service.lisp index cedc867..a4ff93c 100644 --- a/lisp/service/login-service.lisp +++ b/lisp/service/login-service.lisp @@ -49,19 +49,19 @@ (with-noauth (instance login-authenticate-service) (if (or (org-ckons-core::null-or-empty-p username) (org-ckons-core::null-or-empty-p pwd)) - (setf (session-value :errormsg) "Login failed.") + (setf (errormsg instance) "Login failed.") (with-resume-database (let* ((auth-pkg (make-instance 'auth-pkg)) (user (get-active-user-by-username-pwd auth-pkg username pwd))) (cond (user (set-user user) - (setf (session-value :message) "Successfully logged in.") - (setf (session-value :errormsg) nil)) + (setf (message instance) "Successfully logged in.") + (setf (errormsg instance) nil)) (t - (setf (session-value :message) nil) - (setf (session-value :errormsg) "Login failed.")))))) - (setf (message instance) (session-value :message)) - (setf (errormsg instance) (session-value :errormsg)))) + (setf (message instance) nil) + (setf (errormsg instance) "Login failed.")))))) + (setf (message instance) (message instance)) + (setf (errormsg instance) (errormsg instance)))) (define-endpoint ("/login" :method :get) () login-json) (define-endpoint ("/login/authenticate" :method :post) (&post (username :parameter-type 'string) (pwd :parameter-type 'string)) login-authenticate-json username pwd) diff --git a/lisp/service/messages-service.lisp b/lisp/service/messages-service.lisp index 9690822..5c0f241 100644 --- a/lisp/service/messages-service.lisp +++ b/lisp/service/messages-service.lisp @@ -18,19 +18,18 @@ (setf (form instance) (make-form "messages-select-mode-form" nil nil - `((:name "read" :field-type "hidden" :required "required" :value ,(session-value :messages-read)) - (:label "View Unread" :field-type "button" :onclick "on_messages_mode_clicked('unread')") + `((:label "View Unread" :field-type "button" :onclick "on_messages_mode_clicked('unread')") (:label "View Read" :field-type "button" :onclick "on_messages_mode_clicked('read')")))))) -(defclass messages/results-service (messages-service) +(defclass messages/view-service (messages-service) ((results :initarg :results :initform nil :accessor results) (location-p :initform nil)) (:documentation "")) -(defun messages-results-json (read) - (with-auth (instance messages/results-service "messages-view") +(defun messages-view-json (read) + (with-auth (instance messages/view-service "messages-view") (when read (setf (session-value :messages-read) read)) (with-resume-database (let ((contact-pkg (make-instance 'contact-pkg))) @@ -51,11 +50,11 @@ (handler-case (let ((contact-pkg (make-instance 'contact-pkg))) (mark-contact-us-post contact-pkg id (id (get-user)) (string= read "read")) - (setf (session-value :message) (format nil "Message marked ~a successfully." read))) + (setf (message instance) (format nil "Message marked ~a successfully." read))) (error (e) (declare (ignore e)) - (setf (session-value :errormsg) (format nil "Error marking message ~a." read))))))) + (setf (errormsg instance) (format nil "Error marking message ~a." read))))))) (define-endpoint ("/messages" :method :get) () messages-json) -(define-endpoint ("/messages/results" :method :post) (&post (read :parameter-type 'string)) messages-results-json read) +(define-endpoint ("/messages/view" :method :post) (&post (read :parameter-type 'string)) messages-view-json read) (define-endpoint ("/messages/mark" :method :post) (&post (read :parameter-type 'string) (id :parameter-type 'integer)) messages-mark-json read id) diff --git a/lisp/service/password-service.lisp b/lisp/service/password-service.lisp index dc319a0..d9ad4bc 100644 --- a/lisp/service/password-service.lisp +++ b/lisp/service/password-service.lisp @@ -46,8 +46,8 @@ do (setf (slot-value user param) (symbol-value param))) (update-password auth-pkg user) (set-user user) - (setf (session-value :message) "Password saved successfully.")) - (setf (session-value :errormsg) "An error occured.")))))) + (setf (message instance) "Password saved successfully.")) + (setf (errormsg instance) "An error occured.")))))) (define-endpoint ("/password" :method :get) () password-json) (define-endpoint ("/password/submit" :method :post) (&post (id :parameter-type 'integer) (pwd :parameter-type 'string) (pwd2 :parameter-type 'string)) password-submit-json id pwd pwd2) diff --git a/lisp/service/profile-service.lisp b/lisp/service/profile-service.lisp index d2a9f05..990a9d0 100644 --- a/lisp/service/profile-service.lisp +++ b/lisp/service/profile-service.lisp @@ -70,8 +70,8 @@ do (setf (slot-value user param) (symbol-value param))) (update-user auth-pkg user) (set-user user) - (setf (session-value :message) "Profile saved successfully.")) - (setf (session-value :errormsg) "An error occured.")))))) + (setf (message instance) "Profile saved successfully.")) + (setf (errormsg instance) "An error occured.")))))) (define-endpoint ("/profile" :method :get) () profile-json) (define-endpoint ("/profile/view" :method :get) () profile-view-json) diff --git a/lisp/service/rest-service.lisp b/lisp/service/rest-service.lisp index 4d23031..f497245 100644 --- a/lisp/service/rest-service.lisp +++ b/lisp/service/rest-service.lisp @@ -20,12 +20,6 @@ (defmethod initialize-instance :after ((rest-service rest-service) &key) (when (location-p rest-service) - (if (message rest-service) - (setf (session-value :message) (message rest-service)) - (setf (message rest-service) (session-value :message))) - (if (errormsg rest-service) - (setf (session-value :errormsg) (errormsg rest-service)) - (setf (errormsg rest-service) (session-value :errormsg))) (when (null (location rest-service)) (setf (location rest-service) (type-to-path rest-service))))) diff --git a/lisp/service/resume-service.lisp b/lisp/service/resume-service.lisp index 46badc6..6a8e589 100644 --- a/lisp/service/resume-service.lisp +++ b/lisp/service/resume-service.lisp @@ -42,7 +42,7 @@ ;; macros -(defmacro define-resume-component ((component-s rest-args input-add-fields input-modify-fields order-by &optional view-p)) +(defmacro define-resume-component ((component-s rest-args input-add-fields input-modify-fields order-by &key view-p)) "`component-s' is a symbol that matches the component's record object name, i.e SKILL, JOB, EDUCATION, LANGUAGE, CONTACTINFO. This will be used all over the place. The record name equals the component name. @@ -57,7 +57,7 @@ fields that get inserted into the add and modify forms. needs to JOIN with other data." (let* ((component (symbol-name component-s)) (component-lcase (string-downcase component)) - (components-s (intern (format nil "~aS" component))) + (component-s (intern (format nil "~a" component))) (table (format nil "resume.~a~a" component-lcase (if view-p "_v" ""))) (arg-names (loop for arg in rest-args collect (car arg))) (func-root-s (intern (format nil "~a-JSON" component))) @@ -90,13 +90,11 @@ needs to JOIN with other data." (defun ,func-add-s () (with-auth (instance resume/resume-component/modify-service "resume-modify") - (with-resume-database - (let ((resume-pkg (make-instance 'resume-pkg))) - (setf (title instance) (format nil "~a - Add" ,component)) - (setf (form instance) (make-form ,form-add - nil - t - ,input-add-fields)))))) + (setf (title instance) (format nil "~a - Add" ,component)) + (setf (form instance) (make-form ,form-add + nil + t + ,input-add-fields)))) (defun ,func-add-submit-s (,@arg-names) (declare (special ,@arg-names)) @@ -149,11 +147,13 @@ needs to JOIN with other data." (loop for param in (sb-introspect:function-lambda-list #',func-modify-submit-s) do (setf (slot-value new-component param) (symbol-value param))) (setf (user_id new-component) (id user)) - (update-record resume-pkg new-component) - (setf (session-value :message) (format nil "~a modified successfully." ,component))) + (update-record-no-nulls resume-pkg new-component) + (setf (session-value :message) (format nil "~a modified successfully." ,component)) + (setf (message instance) (session-value :message))) (error (format nil "~a error" ,component)))) (error (e) - (setf (session-value :errormsg) (format nil "Error modifying ~a. ~a" ,component e))))))) + (setf (session-value :errormsg) (format nil "Error modifying ~a. ~a" ,component e)) + (setf (errormsg instance) (session-value :errormsg))))))) (defun ,func-delete-s (id) (with-auth (instance resume/resume-component/modify-service "resume-modify") @@ -167,8 +167,11 @@ needs to JOIN with other data." (if ,component-s (progn (delete-record resume-pkg (make-instance ',component-s :id id)) - (setf (session-value :message) (format nil "~a deleted successfully." ,component))) - (setf (session-value :errormsg) (format nil "Error: could not delete ~a: not found." ,component))))))) + (setf (session-value :message) (format nil "~a deleted successfully." ,component)) + (setf (message instance) (session-value :message))) + (progn + (setf (session-value :errormsg) (format nil "Error: could not delete ~a: not found." ,component)) + (setf (errormsg instance) (session-value :errormsg)))))))) (define-endpoint (,(format nil "/resume/~a" component-lcase) :method :get) () ,func-root-s) (define-endpoint (,(format nil "/resume/~a/view" component-lcase) :method :get) () ,func-view-s) @@ -207,7 +210,7 @@ needs to JOIN with other data." (:name "visastatus_id" :label "VISA Status" :field-type "select" :value (visastatus_id contactinfo) :options ,(visastatus-options (get-records resume-pkg (make-instance 'visastatus) "visastatus asc")) :required "required") (:label "Modify CONTACTINFO" :field-type "button" :onclick "on_contactinfo_modify_submit_clicked()")) "state_abbr asc, city asc, address asc" - t)) + :view-p t)) (define-resume-component (education ((school :parameter-type 'string) (major :parameter-type 'string) (minor :parameter-type 'string) (degree :parameter-type 'string) (progress :parameter-type 'string) (start_date :parameter-type 'string) (end_date :parameter-type 'string)) diff --git a/lisp/service/users-service.lisp b/lisp/service/users-service.lisp index d05dfb0..4143ad3 100644 --- a/lisp/service/users-service.lisp +++ b/lisp/service/users-service.lisp @@ -113,9 +113,9 @@ :reply-to (mail-postmaster *webapp*) :ssl (mail-ssl *webapp*) :authentication (mail-authentication *webapp*)) - (setf (session-value :message) (format nil "Email sent successfully to ~a" (email registration)))) + (setf (message instance) (format nil "Email sent successfully to ~a" (email registration)))) (error (e) - (setf (session-value :errormsg) (format nil "Error sending email to ~a. Registration failed. ~a" (email registration) e)))))))) + (setf (errormsg instance) (format nil "Error sending email to ~a. Registration failed. ~a" (email registration) e)))))))) (defclass users/register-service (rest-service) ((title :initarg :title @@ -155,7 +155,7 @@ (:name "pwd2" :label "Password (again)" :field-type "password" :required "required") (:name "phone" :label "Phone" :field-type "text") (:label "Register" :field-type "button" :onclick "on_users_register_submit_clicked()")))) - (setf (session-value :errormsg) "Error: invalid registration.")))))) + (setf (errormsg instance) "Error: invalid registration.")))))) (defclass users/register/submit-service (rest-service) ((location-p :initform nil)) @@ -187,10 +187,10 @@ :user_id (id user) :role_group_name role-group))) (delete-registration auth-pkg hash) - (setf (session-value :message) "Registration completed successfully.")) - (setf (session-value :errormsg) "Error while completing registration."))) - (setf (session-value :errormsg) "Error: passwords do not match.")) - (setf (session-value :errormsg) "Error while completing registration.")))))) + (setf (message instance) "Registration completed successfully.")) + (setf (errormsg instance) "Error while completing registration."))) + (setf (errormsg instance) "Error: passwords do not match.")) + (setf (errormsg instance) "Error while completing registration.")))))) (defclass users/modify-service (users/add-service) () @@ -217,7 +217,7 @@ (:name "phone" :label "Phone" :field-type "text" :value ,(phone user)) ,@(role-checkboxes "users_modify" role-groups active-role-groups) (:label "Modify User" :field-type "button" :onclick "on_users_modify_submit_clicked()")))) - (setf (session-value :errormsg) "Error: could not modify user. Not found.")))))) + (setf (errormsg instance) "Error: could not modify user. Not found.")))))) (defun users-modify-submit-json (id role_groups username first_name last_name email phone) (declare (special role_groups username first_name last_name email phone)) @@ -239,8 +239,8 @@ do (insert-user-role-group auth-pkg (make-instance 'user-role :user_id id :role_group_name role-group))) - (setf (session-value :message) "User saved successfully.")) - (setf (session-value :errormsg) "An error occured.")))))) + (setf (message instance) "User saved successfully.")) + (setf (errormsg instance) "An error occured.")))))) (defclass users/toggle-service (users/add-service) () @@ -253,12 +253,12 @@ (user (get-user-by-id auth-pkg id))) (if user (if (= (id user) (id (get-user))) - (setf (session-value :errormsg) "Error: you may not toggle your own active state.") + (setf (errormsg instance) "Error: you may not toggle your own active state.") (progn (user-toggle-active auth-pkg user) - (setf (session-value :errormsg) nil) - (setf (session-value :message) "User active state toggled successfully."))) - (setf (session-value :errormsg) "Error: could not toggle the active state of the user: not found.")))))) + (setf (errormsg instance) nil) + (setf (message instance) "User active state toggled successfully."))) + (setf (errormsg instance) "Error: could not toggle the active state of the user: not found.")))))) (defclass users/delete-service (users/add-service) () @@ -271,12 +271,12 @@ (user (get-user-by-id auth-pkg id))) (if user (if (= (id user) (id (get-user))) - (setf (session-value :errormsg) "Error: you may not delete yourself.") + (setf (errormsg instance) "Error: you may not delete yourself.") (progn (deactivate-user auth-pkg user) - (setf (session-value :errormsg) nil) - (setf (session-value :message) "User deleted successfully."))) - (setf (session-value :errormsg) "Error: could not delete user: not found.")))))) + (setf (errormsg instance) nil) + (setf (message instance) "User deleted successfully."))) + (setf (errormsg instance) "Error: could not delete user: not found.")))))) (define-endpoint ("/users" :method :get) () users-json) (define-endpoint ("/users/view" :method :get) () users-view-json) -- cgit v1.3