diff options
| author | ckonstanski <kostcarl@isu.edu> | 2026-07-21 17:54:15 -0600 |
|---|---|---|
| committer | ckonstanski <kostcarl@isu.edu> | 2026-07-21 17:54:15 -0600 |
| commit | 51aa4409c58625687445f3d176e3f6bfa5281153 (patch) | |
| tree | 8e64c505fb6ae67d3b81650c495ba837b8ec7c4d /lisp/service | |
| parent | 51354fd19f76c2cbfd31542e9c072b86a90134f0 (diff) | |
added languages
Diffstat (limited to 'lisp/service')
| -rw-r--r-- | lisp/service/menu-service.lisp | 1 | ||||
| -rw-r--r-- | lisp/service/resume-service.lisp | 149 |
2 files changed, 130 insertions, 20 deletions
diff --git a/lisp/service/menu-service.lisp b/lisp/service/menu-service.lisp index 00dff60..aaff72b 100644 --- a/lisp/service/menu-service.lisp +++ b/lisp/service/menu-service.lisp @@ -7,6 +7,7 @@ (:id "a_menu_resumes" :label "Resumes" :handler "/resumes" :permissions "resume-view") (:id "a_menu_resumes_contactinfo" :label "Contact Info" :handler "/resumes/contactinfo" :permissions "resume-view") (:id "a_menu_resumes_education" :label "Education" :handler "/resumes/education" :permissions "resume-view") + (:id "a_menu_resumes_language" :label "Language" :handler "/resumes/language" :permissions "resume-view") (:id "a_menu_contact_us" :label "Contact Me" :handler "/contact-us" :permissions "_Public") (:id "a_menu_messages" :label "Messages" :handler "/messages" :permissions "messages-view") (:id "a_menu_users" :label "Users" :handler "/users" :permissions "users-view"))) diff --git a/lisp/service/resume-service.lisp b/lisp/service/resume-service.lisp index 8994595..a1987d9 100644 --- a/lisp/service/resume-service.lisp +++ b/lisp/service/resume-service.lisp @@ -163,7 +163,6 @@ (with-auth (instance contactinfo/add-service "resume-modify") (with-resume-database (let* ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user)) (states (get-records resume-pkg (make-instance 'states) "abbr asc")) (visastatuses (get-records resume-pkg (make-instance 'visastatus) "visastatus asc"))) (setf (title instance) "Contact Info - Add") @@ -287,21 +286,17 @@ (defun education-add-json () (with-auth (instance education/add-service "resume-modify") - (with-resume-database - (let* ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user))) - (setf (title instance) "Education - Add") - (setf (form instance) (make-form "education-add-form" - nil - t - `((:name "school" :label "School" :field-type "text" :required "required") - (:name "major" :label "Major" :field-type "text" :required "required") - (:name "minor" :label "Minor" :field-type "text") - (:name "degree" :label "Degree" :field-type "text" :required "required") - (:name "progress" :label "Progress" :field-type "text" :required "required") - (:name "start_date" :label "Start Date" :field-type "text" :placeholder "MM/YYYY" :required "required") - (:name "end_date" :label "End Date" :field-type "text" :placeholder "MM/YYYY" :required "required") - (:label "Add Education" :field-type "button" :onclick "on_education_add_submit_clicked()")))))))) + (setf (form instance) (make-form "education-add-form" + nil + t + `((:name "school" :label "School" :field-type "text" :required "required") + (:name "major" :label "Major" :field-type "text" :required "required") + (:name "minor" :label "Minor" :field-type "text") + (:name "degree" :label "Degree" :field-type "text" :required "required") + (:name "progress" :label "Progress" :field-type "text" :required "required") + (:name "start_date" :label "Start Date" :field-type "text" :required "required") + (:name "end_date" :label "End Date" :field-type "text" :required "required") + (:label "Add Education" :field-type "button" :onclick "on_education_add_submit_clicked()")))))) (defun education-add-submit-json (school major minor degree progress start_date end_date) (declare (special school major minor degree progress start_date end_date)) @@ -341,8 +336,8 @@ (:name "minor" :label "Minor" :field-type "text" :value ,(minor education)) (:name "degree" :label "Degree" :field-type "text" :value ,(degree education) :required "required") (:name "progress" :label "Progress" :field-type "text" :value ,(progress education) :required "required") - (:name "start_date" :label "Start Date" :field-type "datetime-local" :value ,(start_date education) :required "required") - (:name "end_date" :label "End Date" :field-type "datetime-local" :value ,(end_date education) :required "required") + (:name "start_date" :label "Start Date" :field-type "text" :value ,(start_date education) :required "required") + (:name "end_date" :label "End Date" :field-type "text" :value ,(end_date education) :required "required") (:label "Modify Education" :field-type "button" :onclick "on_education_modify_submit_clicked()")))) (setf (session-value :errormsg) "Error: could not modify Education. Not found.")))))) @@ -382,12 +377,126 @@ ;; language +(defun language-json () + (with-auth (instance resumes-service "resume-view") + (setf (title instance) "Languages"))) + +(defclass language/view-service (resumes-service language) + ((languages :initarg :languages + :initform nil + :accessor languages) + (location-p :initform nil)) + (:documentation "")) + +(defun language-view-json () + (with-auth (instance language/view-service "resume-view") + (with-resume-database + (let ((resume-pkg (make-instance 'resume-pkg)) + (user (get-user))) + (setf (languages instance) (get-all-languages resume-pkg user)))) + (sanitize-rest-json instance) + (loop for language in (languages instance) + do (sanitize-json language)))) +(defclass language/add-service (language/view-service) + ((form :initarg :form + :initform nil + :accessor form)) + (:documentation "")) -(defun language-options (level) +(defun language-options () (mapcar (lambda (level) - `(:label level :value level)) + `(:label ,level :value ,level)) '("A1" "A2" "B1" "B2" "C1" "C2"))) +(defun language-add-json () + (with-auth (instance language/add-service "resume-modify") + (setf (title instance) "Language - Add") + (setf (form instance) (make-form "language-add-form" + nil + t + `((:name "name" :label "Name" :field-type "text" :required "required") + (:name "understanding_listening" :label "Understanding Listening" :field-type "select" :options ,(language-options) :required "required") + (:name "understanding_reading" :label "Understanding Reading" :field-type "select" :options ,(language-options) :required "required") + (:name "speaking_interaction" :label "Speaking Interaction" :field-type "select" :options ,(language-options) :required "required") + (:name "speaking_production" :label "Speaking Production" :field-type "select" :options ,(language-options) :required "required") + (:name "writing" :label "Writing" :field-type "select" :options ,(language-options) :required "required") + (:label "Add Language" :field-type "button" :onclick "on_language_add_submit_clicked()")))))) + +(defun language-add-submit-json (name understanding_listening understanding_reading speaking_interaction speaking_production writing) + (declare (special name understanding_listening understanding_reading speaking_interaction speaking_production writing)) + (with-auth (instance language/add-service "resume-modify") + (with-resume-database + (handler-case + (let* ((resume-pkg (make-instance 'resume-pkg)) + (user (get-user)) + (language (make-instance 'language :user_id (id user)))) + (loop for param in (remove-if (lambda (x) + (intersection `(,x) '(id))) + (sb-introspect:function-lambda-list #'language-add-submit-json)) + do (setf (slot-value language param) (symbol-value param))) + (insert-language resume-pkg language) + (setf (session-value :message) (format nil "Language \"~a\" created successfully." name))) + (error (e) + (setf (session-value :errormsg) (format nil "Error creating Language \"~a\". ~a" name e))))))) + +(defclass language/modify-service (language/add-service) + () + (:documentation "")) + +(defun language-modify-json (id) + (with-auth (instance language/modify-service "resume-modify") + (setf (title instance) "Language - Modify") + (with-resume-database + (let* ((resume-pkg (make-instance 'resume-pkg)) + (user (get-user)) + (language (get-record resume-pkg (make-instance 'language :id id :user_id (id user))))) + (if language + (setf (form instance) (make-form "language-modify-form" + nil + t + `((:name "id" :field-type "hidden" :value ,(id language) :required "required") + (:name "name" :label "Name" :field-type "text" :value ,(name language) :required "required") + (:name "understanding_listening" :label "Understanding Listening" :field-type "select" :options ,(language-options) :value ,(understanding_listening language) :required "required") + (:name "understanding_reading" :label "Understanding Reading" :field-type "select" :options ,(language-options) :value ,(understanding_reading language) :required "required") + (:name "speaking_interaction" :label "Speaking Interaction" :field-type "select" :options ,(language-options) :value ,(speaking_interaction language) :required "required") + (:name "speaking_production" :label "Speaking Production" :field-type "select" :options ,(language-options) :value ,(speaking_production language) :required "required") + (:name "writing" :label "Writing" :field-type "text" :value ,(writing language) :required "required") + + (:label "Modify Language" :field-type "button" :onclick "on_language_modify_submit_clicked()")))) + (setf (session-value :errormsg) "Error: could not modify Language. Not found.")))))) + +(defun language-modify-submit-json (id name understanding_listening understanding_reading speaking_interaction speaking_production writing) + (declare (special id name understanding_listening understanding_reading speaking_interaction speaking_production writing)) + (with-auth (instance language/modify-service "resume-modify") + (setf (title instance) "Language - Modify") + (with-resume-database + (handler-case + (let* ((resume-pkg (make-instance 'resume-pkg)) + (user (get-user)) + (language (get-record resume-pkg (make-instance 'language :id id :user_id (id user))))) + (loop for param in (remove-if (lambda (x) + (intersection `(,x) '(id))) + (sb-introspect:function-lambda-list #'language-modify-submit-json)) + do (setf (slot-value language param) (symbol-value param))) + (update-record resume-pkg language) + (setf (session-value :message) (format nil "Language \"~a\" modified successfully." name))) + (error (e) + (setf (session-value :errormsg) (format nil "Error modifying Language \"~a\". ~a" name e))))))) +(defclass language/delete-service (language/add-service) + () + (:documentation "")) + +(defun language-delete-json (id) + (with-auth (instance language/delete-service "resume-modify") + (with-resume-database + (let* ((resume-pkg (make-instance 'resume-pkg)) + (user (get-user)) + (language (get-record resume-pkg (make-instance 'language :id id :user_id (id user))))) + (if language + (progn + (delete-record resume-pkg language) + (setf (session-value :message) (format nil "Language \"~a\" deleted successfully." (name language)))) + (setf (session-value :errormsg) "Error: could not delete Language: not found.")))))) |
