diff --git a/apps/portal/prisma/migrations/20221027052436_resumes_add_is_resolved_status/migration.sql b/apps/portal/prisma/migrations/20221027052436_resumes_add_is_resolved_status/migration.sql new file mode 100644 index 00000000..5716b7a2 --- /dev/null +++ b/apps/portal/prisma/migrations/20221027052436_resumes_add_is_resolved_status/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "ResumesResume" ADD COLUMN "isResolved" BOOLEAN NOT NULL DEFAULT false; diff --git a/apps/portal/prisma/schema.prisma b/apps/portal/prisma/schema.prisma index bf57a55d..ec549a84 100644 --- a/apps/portal/prisma/schema.prisma +++ b/apps/portal/prisma/schema.prisma @@ -120,6 +120,7 @@ model ResumesResume { location String @db.Text url String additionalInfo String? @db.Text + isResolved Boolean @default(false) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id], onDelete: Cascade) diff --git a/apps/portal/src/pages/resumes/[resumeId].tsx b/apps/portal/src/pages/resumes/[resumeId].tsx index 15d50e83..a98ea68a 100644 --- a/apps/portal/src/pages/resumes/[resumeId].tsx +++ b/apps/portal/src/pages/resumes/[resumeId].tsx @@ -9,6 +9,7 @@ import { AcademicCapIcon, BriefcaseIcon, CalendarIcon, + CheckCircleIcon, InformationCircleIcon, MapPinIcon, PencilSquareIcon, @@ -71,10 +72,21 @@ export default function ResumeReviewPage() { utils.invalidateQueries(['resumes.resume.user.findUserCreated']); }, }); + const resolveMutation = trpc.useMutation('resumes.resume.user.resolve', { + onSuccess() { + utils.invalidateQueries(['resumes.resume.findOne']); + utils.invalidateQueries(['resumes.resume.findAll']); + utils.invalidateQueries(['resumes.resume.user.findUserStarred']); + utils.invalidateQueries(['resumes.resume.user.findUserCreated']); + }, + }); + const userIsOwner = session?.user?.id !== undefined && session.user.id === detailsQuery.data?.userId; + const isResumeResolved = detailsQuery.data?.isResolved; + const [isEditMode, setIsEditMode] = useState(false); const [showCommentsForm, setShowCommentsForm] = useState(false); @@ -139,6 +151,13 @@ export default function ResumeReviewPage() { setIsEditMode(true); }; + const onResolveButtonClick = () => { + resolveMutation.mutate({ + id: resumeId as string, + val: !isResumeResolved, + }); + }; + const renderReviewButton = () => { if (session === null) { return ( @@ -206,17 +225,36 @@ export default function ResumeReviewPage() {