summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/service/resume-service.lisp50
-rw-r--r--lisp/sql/resume-pkg.lisp6
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))