diff options
| -rw-r--r-- | lisp/service/resume-service.lisp | 50 | ||||
| -rw-r--r-- | lisp/sql/resume-pkg.lisp | 6 |
2 files changed, 25 insertions, 31 deletions
diff --git a/lisp/service/resume-service.lisp b/lisp/service/resume-service.lisp index 2da011a..bfce3c1 100644 --- a/lisp/service/resume-service.lisp +++ b/lisp/service/resume-service.lisp @@ -67,10 +67,8 @@ (setf (title instance) "Resume - Modify") (with-resume-database (let* ((resume-pkg (make-instance 'resume-pkg)) - (me (get-resume)) - (resume (get-resume-by-id resume-pkg id)) - (role-groups (get-all-role-groups resume-pkg me)) - (active-role-groups (get-active-role-groups resume-pkg resume))) + (user (get-user)) + (resume (get-resume resume-pkg (make-instance 'resume :id id :user_id (id user))))) (if resume (setf (form instance) (make-form "resumes-modify-form" nil @@ -80,28 +78,19 @@ (:label "Modify Resume" :field-type "button" :onclick "on_resumes_modify_submit_clicked()")))) (setf (session-value :errormsg) "Error: could not modify resume. Not found.")))))) -(defun resumes-modify-submit-json (id role_groups resumename first_name last_name email phone) - (declare (special role_groups resumename first_name last_name email phone)) +(defun resumes-modify-submit-json (id name) (with-auth (instance resumes/modify-service "resume-modify") + (setf (title instance) "Resume - Modify") (with-resume-database - (let* ((resume-pkg (make-instance 'resume-pkg)) - (resume (get-active-resume-by-id resume-pkg id))) - (if resume - (progn - (loop for param in (remove-if (lambda (x) - (intersection `(,x) '(id role_groups))) - (sb-introspect:function-lambda-list #'resumes-modify-submit-json)) - do (setf (slot-value resume param) (symbol-value param))) - (update-resume resume-pkg resume) - (delete-role-groups resume-pkg resume) - (loop for role-group in (union '("profile-admin") - (cl-ppcre:split "\\|" role_groups) - :test 'string=) - do (insert-resume-role-group resume-pkg (make-instance 'resume-role - :resume_id (id resume) - :role_group_name role-group))) - (setf (session-value :message) "Resume saved successfully.")) - (setf (session-value :errormsg) "An error occured.")))))) + (handler-case + (let* ((resume-pkg (make-instance 'resume-pkg)) + (user (get-user)) + (resume (get-resume resume-pkg (make-instance 'resume :id id :user_id (id user))))) + (setf (name resume) name) + (update-resume resume-pkg resume) + (setf (session-value :message) (format nil "Resume \"~a\" modified successfully." (name resume)))) + (error (e) + (setf (session-value :errormsg) (format nil "Error modifying resume \"~a\". ~a" name e))))))) (defclass resumes/delete-service (resumes/add-service) () @@ -111,12 +100,11 @@ (with-auth (instance resumes/delete-service "resume-modify") (with-resume-database (let* ((resume-pkg (make-instance 'resume-pkg)) - (resume (get-resume-by-id resume-pkg id))) + (user (get-user)) + (resume (get-resume resume-pkg (make-instance 'resume :id id :user_id (id user))))) (if resume - (if (= (id resume) (id (get-resume))) - (setf (session-value :errormsg) "Error: you may not delete yourself.") - (progn - (deactivate-resume resume-pkg resume) - (setf (session-value :errormsg) nil) - (setf (session-value :message) "Resume deleted successfully."))) + (progn + ;; TODO delete stuff + (setf (session-value :errormsg) nil) + (setf (session-value :message) "Resume deleted successfully.")) (setf (session-value :errormsg) "Error: could not delete resume: not found.")))))) diff --git a/lisp/sql/resume-pkg.lisp b/lisp/sql/resume-pkg.lisp index 3c8c289..cc79173 100644 --- a/lisp/sql/resume-pkg.lisp +++ b/lisp/sql/resume-pkg.lisp @@ -11,9 +11,15 @@ (let ((resume (make-instance 'resume :user_id (id user)))) (get-records resume-pkg resume "name asc"))) +(defmethod get-resume ((resume-pkg resume-pkg) (resume resume)) + (get-record resume-pkg resume)) + (defmethod insert-resume ((resume-pkg resume-pkg) (resume resume)) (setf (*table resume) (format nil "resume.insert_resume(~a, '~a')" (user_id resume) (name resume))) (caar (call-pg-function resume-pkg resume))) + +(defmethod update-resume ((resume-pkg resume-pkg) (resume resume)) + (update-record resume-pkg resume)) |
