diff --git a/apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql b/apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql new file mode 100644 index 00000000..ccc20bf1 --- /dev/null +++ b/apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql @@ -0,0 +1,36 @@ +-- CreateTable +CREATE TABLE "QuestionsList" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "name" VARCHAR(256) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "QuestionsList_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "QuestionsListQuestionEntry" ( + "id" TEXT NOT NULL, + "listId" TEXT NOT NULL, + "questionId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "QuestionsListQuestionEntry_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "QuestionsList_userId_name_key" ON "QuestionsList"("userId", "name"); + +-- CreateIndex +CREATE UNIQUE INDEX "QuestionsListQuestionEntry_listId_questionId_key" ON "QuestionsListQuestionEntry"("listId", "questionId"); + +-- AddForeignKey +ALTER TABLE "QuestionsList" ADD CONSTRAINT "QuestionsList_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "QuestionsListQuestionEntry" ADD CONSTRAINT "QuestionsListQuestionEntry_listId_fkey" FOREIGN KEY ("listId") REFERENCES "QuestionsList"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "QuestionsListQuestionEntry" ADD CONSTRAINT "QuestionsListQuestionEntry_questionId_fkey" FOREIGN KEY ("questionId") REFERENCES "QuestionsQuestion"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/portal/prisma/migrations/20221024154046_remove_specialization_and_make_base_bonus_and_stocks_optional/migration.sql b/apps/portal/prisma/migrations/20221024154046_remove_specialization_and_make_base_bonus_and_stocks_optional/migration.sql new file mode 100644 index 00000000..b6002921 --- /dev/null +++ b/apps/portal/prisma/migrations/20221024154046_remove_specialization_and_make_base_bonus_and_stocks_optional/migration.sql @@ -0,0 +1,19 @@ +/* + Warnings: + + - You are about to drop the column `specialization` on the `OffersExperience` table. All the data in the column will be lost. + - You are about to drop the column `specialization` on the `OffersFullTime` table. All the data in the column will be lost. + - You are about to drop the column `specialization` on the `OffersIntern` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "OffersExperience" DROP COLUMN "specialization"; + +-- AlterTable +ALTER TABLE "OffersFullTime" DROP COLUMN "specialization", +ALTER COLUMN "baseSalaryId" DROP NOT NULL, +ALTER COLUMN "bonusId" DROP NOT NULL, +ALTER COLUMN "stocksId" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "OffersIntern" DROP COLUMN "specialization"; diff --git a/apps/portal/prisma/schema.prisma b/apps/portal/prisma/schema.prisma index 7ca71159..1b82f5fd 100644 --- a/apps/portal/prisma/schema.prisma +++ b/apps/portal/prisma/schema.prisma @@ -60,6 +60,7 @@ model User { questionsAnswerCommentVotes QuestionsAnswerCommentVote[] OffersProfile OffersProfile[] offersDiscussion OffersReply[] + questionsLists QuestionsList[] } enum Vote { @@ -234,7 +235,6 @@ model OffersExperience { // Add more fields durationInMonths Int? - specialization String? location String? // FULLTIME fields @@ -340,7 +340,6 @@ model OffersIntern { id String @id @default(cuid()) title String - specialization String internshipCycle String startYear Int monthlySalary OffersCurrency @relation(fields: [monthlySalaryId], references: [id], onDelete: Cascade) @@ -350,18 +349,17 @@ model OffersIntern { } model OffersFullTime { - id String @id @default(cuid()) + id String @id @default(cuid()) title String - specialization String level String - totalCompensation OffersCurrency @relation("OfferTotalCompensation", fields: [totalCompensationId], references: [id], onDelete: Cascade) - totalCompensationId String @unique - baseSalary OffersCurrency @relation("OfferBaseSalary", fields: [baseSalaryId], references: [id], onDelete: Cascade) - baseSalaryId String @unique - bonus OffersCurrency @relation("OfferBonus", fields: [bonusId], references: [id], onDelete: Cascade) - bonusId String @unique - stocks OffersCurrency @relation("OfferStocks", fields: [stocksId], references: [id], onDelete: Cascade) - stocksId String @unique + totalCompensation OffersCurrency @relation("OfferTotalCompensation", fields: [totalCompensationId], references: [id], onDelete: Cascade) + totalCompensationId String @unique + baseSalary OffersCurrency? @relation("OfferBaseSalary", fields: [baseSalaryId], references: [id], onDelete: Cascade) + baseSalaryId String? @unique + bonus OffersCurrency? @relation("OfferBonus", fields: [bonusId], references: [id], onDelete: Cascade) + bonusId String? @unique + stocks OffersCurrency? @relation("OfferStocks", fields: [stocksId], references: [id], onDelete: Cascade) + stocksId String? @unique OffersOffer OffersOffer? } @@ -409,11 +407,12 @@ model QuestionsQuestion { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - user User? @relation(fields: [userId], references: [id], onDelete: SetNull) - encounters QuestionsQuestionEncounter[] - votes QuestionsQuestionVote[] - comments QuestionsQuestionComment[] - answers QuestionsAnswer[] + user User? @relation(fields: [userId], references: [id], onDelete: SetNull) + encounters QuestionsQuestionEncounter[] + votes QuestionsQuestionVote[] + comments QuestionsQuestionComment[] + answers QuestionsAnswer[] + QuestionsListQuestionEntry QuestionsListQuestionEntry[] @@index([lastSeenAt, id]) @@index([upvotes, id]) @@ -535,4 +534,30 @@ model QuestionsAnswerCommentVote { @@unique([answerCommentId, userId]) } +model QuestionsList { + id String @id @default(cuid()) + userId String + name String @db.VarChar(256) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + questionEntries QuestionsListQuestionEntry[] + + @@unique([userId, name]) +} + +model QuestionsListQuestionEntry { + id String @id @default(cuid()) + listId String + questionId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + list QuestionsList @relation(fields: [listId], references: [id], onDelete: Cascade) + question QuestionsQuestion @relation(fields: [questionId], references: [id], onDelete: Cascade) + + @@unique([listId, questionId]) +} + // End of Questions project models. diff --git a/apps/portal/src/components/offers/offerAnalysis/OfferProfileCard.tsx b/apps/portal/src/components/offers/offerAnalysis/OfferProfileCard.tsx index af786c4b..13cbd2d8 100644 --- a/apps/portal/src/components/offers/offerAnalysis/OfferProfileCard.tsx +++ b/apps/portal/src/components/offers/offerAnalysis/OfferProfileCard.tsx @@ -4,6 +4,9 @@ import { } from '@heroicons/react/24/outline'; import { JobType } from '@prisma/client'; +import type { JobTitleType } from '~/components/shared/JobTitles'; +import { getLabelForJobTitleType } from '~/components/shared/JobTitles'; + import { HorizontalDivider } from '~/../../../packages/ui/dist'; import { convertMoneyToString } from '~/utils/offers/currency'; import { formatDate } from '~/utils/offers/time'; @@ -54,7 +57,9 @@ export default function OfferProfileCard({
-

{title}

+

+ {getLabelForJobTitleType(title as JobTitleType)} +

Company: {company.name}, {location}

diff --git a/apps/portal/src/components/offers/offersSubmission/OffersProfileSave.tsx b/apps/portal/src/components/offers/offersSubmission/OffersProfileSave.tsx index 03c77dc9..26d358a4 100644 --- a/apps/portal/src/components/offers/offersSubmission/OffersProfileSave.tsx +++ b/apps/portal/src/components/offers/offersSubmission/OffersProfileSave.tsx @@ -1,15 +1,9 @@ -import { useRouter } from 'next/router'; // Import { useState } from 'react'; // import { setTimeout } from 'timers'; import { DocumentDuplicateIcon } from '@heroicons/react/20/solid'; -import { EyeIcon } from '@heroicons/react/24/outline'; import { Button, TextInput, useToast } from '@tih/ui'; -import { - copyProfileLink, - getProfileLink, - getProfilePath, -} from '~/utils/offers/link'; +import { copyProfileLink, getProfileLink } from '~/utils/offers/link'; type OfferProfileSaveProps = Readonly<{ profileId: string; @@ -23,7 +17,6 @@ export default function OffersProfileSave({ const { showToast } = useToast(); // Const [isSaving, setSaving] = useState(false); // const [isSaved, setSaved] = useState(false); - const router = useRouter(); // Const saveProfile = () => { // setSaving(true); @@ -82,14 +75,6 @@ export default function OffersProfileSave({ onClick={saveProfile} />
*/} -
-
); diff --git a/apps/portal/src/components/offers/offersSubmission/OffersSubmissionAnalysis.tsx b/apps/portal/src/components/offers/offersSubmission/OffersSubmissionAnalysis.tsx new file mode 100644 index 00000000..325cbae0 --- /dev/null +++ b/apps/portal/src/components/offers/offersSubmission/OffersSubmissionAnalysis.tsx @@ -0,0 +1,49 @@ +import { useRouter } from 'next/router'; +import { EyeIcon } from '@heroicons/react/24/outline'; + +import { Button } from '~/../../../packages/ui/dist'; +import { getProfilePath } from '~/utils/offers/link'; + +import OfferAnalysis from '../offerAnalysis/OfferAnalysis'; + +import type { ProfileAnalysis } from '~/types/offers'; + +type Props = Readonly<{ + analysis?: ProfileAnalysis | null; + isError: boolean; + isLoading: boolean; + profileId?: string; + token?: string; +}>; + +export default function OffersSubmissionAnalysis({ + analysis, + isError, + isLoading, + profileId = '', + token = '', +}: Props) { + const router = useRouter(); + + return ( +
+
+ Result +
+ +
+
+
+ ); +} diff --git a/apps/portal/src/components/offers/offersSubmission/OffersSubmissionForm.tsx b/apps/portal/src/components/offers/offersSubmission/OffersSubmissionForm.tsx index 0e1127ab..55f2f756 100644 --- a/apps/portal/src/components/offers/offersSubmission/OffersSubmissionForm.tsx +++ b/apps/portal/src/components/offers/offersSubmission/OffersSubmissionForm.tsx @@ -15,16 +15,17 @@ import type { } from '~/components/offers/types'; import type { Month } from '~/components/shared/MonthYearPicker'; -import { cleanObject, removeInvalidMoneyData } from '~/utils/offers/form'; +import { + cleanObject, + removeEmptyObjects, + removeInvalidMoneyData, +} from '~/utils/offers/form'; import { getCurrentMonth, getCurrentYear } from '~/utils/offers/time'; import { trpc } from '~/utils/trpc'; -import OfferAnalysis from '../offerAnalysis/OfferAnalysis'; +import OffersSubmissionAnalysis from './OffersSubmissionAnalysis'; -import type { - CreateOfferProfileResponse, - ProfileAnalysis, -} from '~/types/offers'; +import type { ProfileAnalysis } from '~/types/offers'; const defaultOfferValues = { comments: '', @@ -73,15 +74,12 @@ type Props = Readonly<{ export default function OffersSubmissionForm({ initialOfferProfileValues = defaultOfferProfileValues, - profileId, - token, + profileId: editProfileId = '', + token: editToken = '', }: Props) { const [formStep, setFormStep] = useState(0); - const [createProfileResponse, setCreateProfileResponse] = - useState({ - id: profileId || '', - token: token || '', - }); + const [profileId, setProfileId] = useState(editProfileId); + const [token, setToken] = useState(editToken); const [analysis, setAnalysis] = useState(null); const pageRef = useRef(null); @@ -125,11 +123,7 @@ export default function OffersSubmissionForm({ }, { component: ( - + ), hasNext: true, hasPrevious: false, @@ -137,17 +131,13 @@ export default function OffersSubmissionForm({ }, { component: ( -
-
- Result -
- -
+ ), hasNext: false, hasPrevious: true, @@ -184,7 +174,8 @@ export default function OffersSubmissionForm({ generateAnalysisMutation.mutate({ profileId: data?.id || '', }); - setCreateProfileResponse(data); + setProfileId(data.id); + setToken(data.token); setFormStep(formStep + 1); scrollToTop(); }, @@ -197,6 +188,7 @@ export default function OffersSubmissionForm({ } data = removeInvalidMoneyData(data); + data.offers = removeEmptyObjects(data.offers); const background = cleanObject(data.background); background.specificYoes = data.background.specificYoes.filter( @@ -236,7 +228,7 @@ export default function OffersSubmissionForm({
{formSteps[formStep].component} -
{JSON.stringify(formMethods.watch(), null, 2)}
+ {/*
{JSON.stringify(formMethods.watch(), null, 2)}
*/} {formSteps[formStep].hasNext && (
) : ( -
+
{RESUME_COMMENTS_SECTIONS.map(({ label, value }) => { const comments = commentsQuery.data ? commentsQuery.data.filter((comment: ResumeComment) => { @@ -65,44 +65,40 @@ export default function ResumeCommentsList({ const commentCount = comments.length; return ( -
-
+
+
{renderIcon(value)}
{label}
-
-
- {commentCount > 0 ? ( - comments.map((comment) => { - return ( - - ); - }) - ) : ( -
- +
+ {commentCount > 0 ? ( + comments.map((comment) => { + return ( + + ); + }) + ) : ( +
+ -
- There are no comments for this section yet! -
+
+ There are no comments for this section yet!
- )} -
+
+ )}
-
-
-
+
); })} diff --git a/apps/portal/src/mappers/offers-mappers.ts b/apps/portal/src/mappers/offers-mappers.ts index eea48397..d012078f 100644 --- a/apps/portal/src/mappers/offers-mappers.ts +++ b/apps/portal/src/mappers/offers-mappers.ts @@ -73,10 +73,6 @@ const analysisOfferDtoMapper = ( ?.filter((exp) => exp.company != null) .map((exp) => exp.company?.name ?? '') ?? [], profileName, - specialization: - offer.jobType === JobType.FULLTIME - ? offer.offersFullTime?.specialization ?? '' - : offer.offersIntern?.specialization ?? '', title: offer.jobType === JobType.FULLTIME ? offer.offersFullTime?.title ?? '' @@ -120,22 +116,14 @@ const analysisDtoMapper = ( OffersOffer & { company: Company; offersFullTime: - | (OffersFullTime & { - totalCompensation: OffersCurrency; - }) - | null; - offersIntern: - | (OffersIntern & { - monthlySalary: OffersCurrency; - }) + | (OffersFullTime & { totalCompensation: OffersCurrency }) | null; + offersIntern: (OffersIntern & { monthlySalary: OffersCurrency }) | null; profile: OffersProfile & { background: | (OffersBackground & { experiences: Array< - OffersExperience & { - company: Company | null; - } + OffersExperience & { company: Company | null } >; }) | null; @@ -168,10 +156,6 @@ const analysisHighestOfferDtoMapper = ( id: offer.id, level: offer.offersFullTime?.level ?? '', location: offer.location, - specialization: - offer.jobType === JobType.FULLTIME - ? offer.offersFullTime?.specialization ?? '' - : offer.offersIntern?.specialization ?? '', totalYoe: offer.profile.background?.totalYoe ?? -1, }; return analysisHighestOfferDto; @@ -327,12 +311,11 @@ export const experienceDtoMapper = ( location: experience.location, monthlySalary: experience.monthlySalary ? valuationDtoMapper(experience.monthlySalary) - : experience.monthlySalary, - specialization: experience.specialization, + : null, title: experience.title, totalCompensation: experience.totalCompensation ? valuationDtoMapper(experience.totalCompensation) - : experience.totalCompensation, + : null, }; return experienceDto; }; @@ -398,9 +381,9 @@ export const profileOfferDtoMapper = ( company: Company; offersFullTime: | (OffersFullTime & { - baseSalary: OffersCurrency; - bonus: OffersCurrency; - stocks: OffersCurrency; + baseSalary: OffersCurrency | null; + bonus: OffersCurrency | null; + stocks: OffersCurrency | null; totalCompensation: OffersCurrency; }) | null; @@ -421,12 +404,20 @@ export const profileOfferDtoMapper = ( if (offer.offersFullTime) { profileOfferDto.offersFullTime = { - baseSalary: valuationDtoMapper(offer.offersFullTime.baseSalary), - bonus: valuationDtoMapper(offer.offersFullTime.bonus), + baseSalary: + offer.offersFullTime?.baseSalary != null + ? valuationDtoMapper(offer.offersFullTime.baseSalary) + : null, + bonus: + offer.offersFullTime?.bonus != null + ? valuationDtoMapper(offer.offersFullTime.bonus) + : null, id: offer.offersFullTime.id, level: offer.offersFullTime.level, - specialization: offer.offersFullTime.specialization, - stocks: valuationDtoMapper(offer.offersFullTime.stocks), + stocks: + offer.offersFullTime?.stocks != null + ? valuationDtoMapper(offer.offersFullTime.stocks) + : null, title: offer.offersFullTime.title, totalCompensation: valuationDtoMapper( offer.offersFullTime.totalCompensation, @@ -437,7 +428,6 @@ export const profileOfferDtoMapper = ( id: offer.offersIntern.id, internshipCycle: offer.offersIntern.internshipCycle, monthlySalary: valuationDtoMapper(offer.offersIntern.monthlySalary), - specialization: offer.offersIntern.specialization, startYear: offer.offersIntern.startYear, title: offer.offersIntern.title, }; @@ -527,9 +517,9 @@ export const profileDtoMapper = ( company: Company; offersFullTime: | (OffersFullTime & { - baseSalary: OffersCurrency; - bonus: OffersCurrency; - stocks: OffersCurrency; + baseSalary: OffersCurrency | null; + bonus: OffersCurrency | null; + stocks: OffersCurrency | null; totalCompensation: OffersCurrency; }) | null; @@ -550,7 +540,7 @@ export const profileDtoMapper = ( }; if (inputToken === profile.editToken) { - profileDto.editToken = profile.editToken; + profileDto.editToken = profile.editToken ?? null; profileDto.isEditable = true; } @@ -587,9 +577,9 @@ export const dashboardOfferDtoMapper = ( company: Company; offersFullTime: | (OffersFullTime & { - baseSalary: OffersCurrency; - bonus: OffersCurrency; - stocks: OffersCurrency; + baseSalary: OffersCurrency | null; + bonus: OffersCurrency | null; + stocks: OffersCurrency | null; totalCompensation: OffersCurrency; }) | null; diff --git a/apps/portal/src/pages/offers/profile/[offerProfileId].tsx b/apps/portal/src/pages/offers/profile/[offerProfileId].tsx index 8933112c..7cf2811d 100644 --- a/apps/portal/src/pages/offers/profile/[offerProfileId].tsx +++ b/apps/portal/src/pages/offers/profile/[offerProfileId].tsx @@ -60,8 +60,14 @@ export default function OfferProfile() { ? data?.offers.map((res: ProfileOffer) => { if (res.offersFullTime) { const filteredOffer: OfferDisplayData = { - base: convertMoneyToString(res.offersFullTime.baseSalary), - bonus: convertMoneyToString(res.offersFullTime.bonus), + base: + res.offersFullTime.baseSalary != null + ? convertMoneyToString(res.offersFullTime.baseSalary) + : undefined, + bonus: + res.offersFullTime.bonus != null + ? convertMoneyToString(res.offersFullTime.bonus) + : undefined, companyName: res.company.name, id: res.offersFullTime.id, jobLevel: res.offersFullTime.level, @@ -72,7 +78,10 @@ export default function OfferProfile() { negotiationStrategy: res.negotiationStrategy, otherComment: res.comments, receivedMonth: formatDate(res.monthYearReceived), - stocks: convertMoneyToString(res.offersFullTime.stocks), + stocks: + res.offersFullTime.stocks != null + ? convertMoneyToString(res.offersFullTime.stocks) + : undefined, totalCompensation: convertMoneyToString( res.offersFullTime.totalCompensation, ), diff --git a/apps/portal/src/pages/offers/profile/edit/[offerProfileId].tsx b/apps/portal/src/pages/offers/profile/edit/[offerProfileId].tsx index 2b9550ae..245c0bb5 100644 --- a/apps/portal/src/pages/offers/profile/edit/[offerProfileId].tsx +++ b/apps/portal/src/pages/offers/profile/edit/[offerProfileId].tsx @@ -34,7 +34,17 @@ export default function OffersEditPage() { experiences: experiences.length === 0 ? [{ jobType: JobType.FULLTIME }] - : experiences, + : experiences.map((exp) => ({ + companyId: exp.company?.id, + durationInMonths: exp.durationInMonths, + id: exp.id, + jobType: exp.jobType, + level: exp.level, + location: exp.location, + monthlySalary: exp.monthlySalary, + title: exp.title, + totalCompensation: exp.totalCompensation, + })), id, specificYoes, totalYoe, diff --git a/apps/portal/src/pages/offers/test/createProfile.tsx b/apps/portal/src/pages/offers/test/createProfile.tsx index 972ba6ee..5f625321 100644 --- a/apps/portal/src/pages/offers/test/createProfile.tsx +++ b/apps/portal/src/pages/offers/test/createProfile.tsx @@ -107,8 +107,7 @@ function Test() { durationInMonths: 24, jobType: 'FULLTIME', level: 'Junior', - specialization: 'Front End', - title: 'Software Engineer', + title: 'software-engineer', totalCompensation: { currency: 'SGD', value: 104100, @@ -146,12 +145,11 @@ function Test() { value: 2222, }, level: 'Junior', - specialization: 'Front End', stocks: { currency: 'SGD', value: 0, }, - title: 'Software Engineer', + title: 'software-engineer', totalCompensation: { currency: 'SGD', value: 4444, @@ -175,12 +173,11 @@ function Test() { value: 20000, }, level: 'Junior', - specialization: 'Front End', stocks: { currency: 'SGD', value: 100, }, - title: 'Software Engineer', + title: 'software-engineer', totalCompensation: { currency: 'SGD', value: 104100, @@ -269,8 +266,7 @@ function Test() { level: 'Junior', monthlySalary: null, monthlySalaryId: null, - specialization: 'Front End', - title: 'Software Engineer', + title: 'software-engineer', totalCompensation: { currency: 'SGD', id: 'cl9i68fvc0005tthj7r1rhvb1', @@ -335,14 +331,13 @@ function Test() { bonusId: 'cl9i68fve000rtthjqo2ktljt', id: 'cl9i68fve000otthjqk0g01k0', level: 'EXPERT', - specialization: 'FRONTEND', stocks: { currency: 'SGD', id: 'cl9i68fvf000ttthjt2ode0cc', value: -558038585, }, stocksId: 'cl9i68fvf000ttthjt2ode0cc', - title: 'Software Engineer', + title: 'software-engineer', totalCompensation: { currency: 'SGD', id: 'cl9i68fvf000vtthjg90s48nj', @@ -355,220 +350,8 @@ function Test() { offersInternId: null, profileId: 'cl9i68fv60000tthj8t3zkox0', }, - // { - // comments: '', - // company: { - // createdAt: new Date('2022-10-12T16:19:05.196Z'), - // description: - // 'Meta Platforms, Inc., doing business as Meta and formerly named Facebook, Inc., and TheFacebook, Inc., is an American multinational technology conglomerate based in Menlo Park, California. The company owns Facebook, Instagram, and WhatsApp, among other products and services.', - // id: 'cl9j4yawz0003utlp1uaa1t8o', - // logoUrl: 'https://logo.clearbit.com/meta.com', - // name: 'Meta', - // slug: 'meta', - // updatedAt: new Date('2022-10-12T16:19:05.196Z'), - // }, - // companyId: 'cl9j4yawz0003utlp1uaa1t8o', - // id: 'cl9i68fvf000ytthj0ltsqt1d', - // jobType: 'FULLTIME', - // location: 'Singapore, Singapore', - // monthYearReceived: new Date('2022-09-30T07:58:54.000Z'), - // negotiationStrategy: 'Leveraged having million offers', - // offersFullTime: { - // baseSalary: { - // currency: 'SGD', - // id: 'cl9i68fvf0010tthj0iym6woh', - // value: 84000, - // }, - // baseSalaryId: 'cl9i68fvf0010tthj0iym6woh', - // bonus: { - // currency: 'SGD', - // id: 'cl9i68fvf0012tthjioltnspk', - // value: 123456789, - // }, - // bonusId: 'cl9i68fvf0012tthjioltnspk', - // id: 'cl9i68fvf000ztthjcovbiehc', - // level: 'Junior', - // specialization: 'Front End', - // stocks: { - // currency: 'SGD', - // id: 'cl9i68fvf0014tthjz2gff3hs', - // value: 100, - // }, - // stocksId: 'cl9i68fvf0014tthjz2gff3hs', - // title: 'Software Engineer', - // totalCompensation: { - // currency: 'SGD', - // id: 'cl9i68fvf0016tthjrtb7iuvj', - // value: 104100, - // }, - // totalCompensationId: 'cl9i68fvf0016tthjrtb7iuvj', - // }, - // offersFullTimeId: 'cl9i68fvf000ztthjcovbiehc', - // offersIntern: null, - // offersInternId: null, - // profileId: 'cl9i68fv60000tthj8t3zkox0', - // }, - // { - // comments: '', - // company: { - // createdAt: new Date('2022-10-12T16:19:05.196Z'), - // description: - // 'Meta Platforms, Inc., doing business as Meta and formerly named Facebook, Inc., and TheFacebook, Inc., is an American multinational technology conglomerate based in Menlo Park, California. The company owns Facebook, Instagram, and WhatsApp, among other products and services.', - // id: 'cl9j4yawz0003utlp1uaa1t8o', - // logoUrl: 'https://logo.clearbit.com/meta.com', - // name: 'Meta', - // slug: 'meta', - // updatedAt: new Date('2022-10-12T16:19:05.196Z'), - // }, - // companyId: 'cl9j4yawz0003utlp1uaa1t8o', - // id: 'cl96stky9003bw32gc3l955vr', - // jobType: 'FULLTIME', - // location: 'Singapore, Singapore', - // monthYearReceived: new Date('2022-09-30T07:58:54.000Z'), - // negotiationStrategy: 'LOst out having multiple offers', - // offersFullTime: { - // baseSalary: { - // currency: 'SGD', - // id: 'cl96stky9003dw32gcvqbijlo', - // value: 1, - // }, - // baseSalaryId: 'cl96stky9003dw32gcvqbijlo', - // bonus: { - // currency: 'SGD', - // id: 'cl96stky9003fw32goc3zqxwr', - // value: 0, - // }, - // bonusId: 'cl96stky9003fw32goc3zqxwr', - // id: 'cl96stky9003cw32g5v10izfu', - // level: 'Senior', - // specialization: 'Front End', - // stocks: { - // currency: 'SGD', - // id: 'cl96stky9003hw32g1lbbkqqr', - // value: 999999, - // }, - // stocksId: 'cl96stky9003hw32g1lbbkqqr', - // title: 'Software Engineer DOG', - // totalCompensation: { - // currency: 'SGD', - // id: 'cl96stky9003jw32gzumcoi7v', - // value: 999999, - // }, - // totalCompensationId: 'cl96stky9003jw32gzumcoi7v', - // }, - // offersFullTimeId: 'cl96stky9003cw32g5v10izfu', - // offersIntern: null, - // offersInternId: null, - // profileId: 'cl96stky5002ew32gx2kale2x', - // }, - // { - // comments: 'this IS SO COOL', - // company: { - // createdAt: new Date('2022-10-12T16:19:05.196Z'), - // description: - // 'Meta Platforms, Inc., doing business as Meta and formerly named Facebook, Inc., and TheFacebook, Inc., is an American multinational technology conglomerate based in Menlo Park, California. The company owns Facebook, Instagram, and WhatsApp, among other products and services.', - // id: 'cl9j4yawz0003utlp1uaa1t8o', - // logoUrl: 'https://logo.clearbit.com/meta.com', - // name: 'Meta', - // slug: 'meta', - // updatedAt: new Date('2022-10-12T16:19:05.196Z'), - // }, - // companyId: 'cl9j4yawz0003utlp1uaa1t8o', - // id: 'cl976wf28000t7iyga4noyz7s', - // jobType: 'FULLTIME', - // location: 'Singapore, Singapore', - // monthYearReceived: new Date('2022-09-30T07:58:54.000Z'), - // negotiationStrategy: 'Charmed the guy with my face', - // offersFullTime: { - // baseSalary: { - // currency: 'SGD', - // id: 'cl976wf28000v7iygmk1b7qaq', - // value: 1999999999, - // }, - // baseSalaryId: 'cl976wf28000v7iygmk1b7qaq', - // bonus: { - // currency: 'SGD', - // id: 'cl976wf28000x7iyg63w7kcli', - // value: 1410065407, - // }, - // bonusId: 'cl976wf28000x7iyg63w7kcli', - // id: 'cl976wf28000u7iyg6euei8e9', - // level: 'EXPERT', - // specialization: 'FRONTEND', - // stocks: { - // currency: 'SGD', - // id: 'cl976wf28000z7iyg9ivun6ap', - // value: 111222333, - // }, - // stocksId: 'cl976wf28000z7iyg9ivun6ap', - // title: 'Software Engineer', - // totalCompensation: { - // currency: 'SGD', - // id: 'cl976wf2800117iygmzsc0xit', - // value: 55555555, - // }, - // totalCompensationId: 'cl976wf2800117iygmzsc0xit', - // }, - // offersFullTimeId: 'cl976wf28000u7iyg6euei8e9', - // offersIntern: null, - // offersInternId: null, - // profileId: 'cl96stky5002ew32gx2kale2x', - // }, - // { - // comments: 'this rocks', - // company: { - // createdAt: new Date('2022-10-12T16:19:05.196Z'), - // description: - // 'Meta Platforms, Inc., doing business as Meta and formerly named Facebook, Inc., and TheFacebook, Inc., is an American multinational technology conglomerate based in Menlo Park, California. The company owns Facebook, Instagram, and WhatsApp, among other products and services.', - // id: 'cl9j4yawz0003utlp1uaa1t8o', - // logoUrl: 'https://logo.clearbit.com/meta.com', - // name: 'Meta', - // slug: 'meta', - // updatedAt: new Date('2022-10-12T16:19:05.196Z'), - // }, - // companyId: 'cl9j4yawz0003utlp1uaa1t8o', - // id: 'cl96tbb3o0051w32gjrpaiiit', - // jobType: 'FULLTIME', - // location: 'Singapore, Singapore', - // monthYearReceived: new Date('2022-09-30T07:58:54.000Z'), - // negotiationStrategy: 'Charmed the guy with my face', - // offersFullTime: { - // baseSalary: { - // currency: 'SGD', - // id: 'cl96tbb3o0053w32gz11paaxu', - // value: 1999999999, - // }, - // baseSalaryId: 'cl96tbb3o0053w32gz11paaxu', - // bonus: { - // currency: 'SGD', - // id: 'cl96tbb3o0055w32gpyqgz5hx', - // value: 1410065407, - // }, - // bonusId: 'cl96tbb3o0055w32gpyqgz5hx', - // id: 'cl96tbb3o0052w32guguajzin', - // level: 'EXPERT', - // specialization: 'FRONTEND', - // stocks: { - // currency: 'SGD', - // id: 'cl96tbb3o0057w32gu4nyxguf', - // value: 500, - // }, - // stocksId: 'cl96tbb3o0057w32gu4nyxguf', - // title: 'Software Engineer', - // totalCompensation: { - // currency: 'SGD', - // id: 'cl96tbb3o0059w32gm3iy1zk4', - // value: 55555555, - // }, - // totalCompensationId: 'cl96tbb3o0059w32gm3iy1zk4', - // }, - // offersFullTimeId: 'cl96tbb3o0052w32guguajzin', - // offersIntern: null, - // offersInternId: null, - // profileId: 'cl96stky5002ew32gx2kale2x', - // }, ], - // ProfileName: 'ailing bryann stuart ziqing', + token: '24bafa6fef803f447d7f2e229b14cb8ee43f0c22dffbe41ee1c1e5e6e870f117', userId: null, }); diff --git a/apps/portal/src/pages/resumes/[resumeId].tsx b/apps/portal/src/pages/resumes/[resumeId].tsx index bc703d4b..38c7cf31 100644 --- a/apps/portal/src/pages/resumes/[resumeId].tsx +++ b/apps/portal/src/pages/resumes/[resumeId].tsx @@ -100,7 +100,7 @@ export default function ResumeReviewPage() { } return ( )}