Base / year: {base} ⋅ Stocks / year: {stocks} ⋅ Bonus / year:{' '}
{bonus}
diff --git a/apps/portal/src/components/offers/profile/ProfileDetails.tsx b/apps/portal/src/components/offers/profile/ProfileDetails.tsx
index 38eecd5c..14b585cd 100644
--- a/apps/portal/src/components/offers/profile/ProfileDetails.tsx
+++ b/apps/portal/src/components/offers/profile/ProfileDetails.tsx
@@ -121,7 +121,7 @@ function ProfileAnalysis({
generateAnalysisMutation.mutate({ profileId })}
/>
diff --git a/apps/portal/src/components/offers/types.ts b/apps/portal/src/components/offers/types.ts
index b790bd40..c09b8da2 100644
--- a/apps/portal/src/components/offers/types.ts
+++ b/apps/portal/src/components/offers/types.ts
@@ -51,7 +51,6 @@ type ExperiencePostData = {
level?: string | null;
location?: string | null;
monthlySalary?: Money | null;
- specialization?: string | null;
title?: string | null;
totalCompensation?: Money | null;
totalCompensationId?: string | null;
@@ -91,12 +90,11 @@ export type OfferFormData = Omit & {
};
export type OfferFullTimePostData = {
- baseSalary: Money;
- bonus: Money;
+ baseSalary: Money | null;
+ bonus: Money | null;
id?: string;
level: string;
- specialization: string;
- stocks: Money;
+ stocks: Money | null;
title: string;
totalCompensation: Money;
};
@@ -105,7 +103,6 @@ export type OfferInternPostData = {
id?: string;
internshipCycle: string;
monthlySalary: Money;
- specialization: string;
startYear: number;
title: string;
};
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/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/server/router/offers/offers-analysis-router.ts b/apps/portal/src/server/router/offers/offers-analysis-router.ts
index 751e6cd2..9ee081cd 100644
--- a/apps/portal/src/server/router/offers/offers-analysis-router.ts
+++ b/apps/portal/src/server/router/offers/offers-analysis-router.ts
@@ -19,9 +19,9 @@ const searchOfferPercentile = (
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/server/router/offers/offers-profile-router.ts b/apps/portal/src/server/router/offers/offers-profile-router.ts
index 9cac7feb..bf86613a 100644
--- a/apps/portal/src/server/router/offers/offers-profile-router.ts
+++ b/apps/portal/src/server/router/offers/offers-profile-router.ts
@@ -10,7 +10,10 @@ import {
} from '~/mappers/offers-mappers';
import { baseCurrencyString } from '~/utils/offers/currency';
import { convert } from '~/utils/offers/currency/currencyExchange';
-import { generateRandomName, generateRandomStringForToken } from '~/utils/offers/randomGenerator';
+import {
+ generateRandomName,
+ generateRandomStringForToken,
+} from '~/utils/offers/randomGenerator';
import { createValidationRegex } from '~/utils/offers/zodRegex';
import { createRouter } from '../context';
@@ -48,7 +51,6 @@ const offer = z.object({
bonusId: z.string().nullish(),
id: z.string().optional(),
level: z.string().nullish(),
- specialization: z.string(),
stocks: valuation.nullish(),
stocksId: z.string().nullish(),
title: z.string(),
@@ -62,7 +64,6 @@ const offer = z.object({
id: z.string().optional(),
internshipCycle: z.string().nullish(),
monthlySalary: valuation.nullish(),
- specialization: z.string(),
startYear: z.number().nullish(),
title: z.string(),
totalCompensation: valuation.nullish(), // Full time
@@ -86,7 +87,6 @@ const experience = z.object({
location: z.string().nullish(),
monthlySalary: valuation.nullish(),
monthlySalaryId: z.string().nullish(),
- specialization: z.string().nullish(),
title: z.string().nullish(),
totalCompensation: valuation.nullish(),
totalCompensationId: z.string().nullish(),
@@ -300,7 +300,6 @@ export const offersProfileRouter = createRouter()
durationInMonths: x.durationInMonths,
jobType: x.jobType,
level: x.level,
- specialization: x.specialization,
title: x.title,
totalCompensation: {
create: {
@@ -321,7 +320,6 @@ export const offersProfileRouter = createRouter()
jobType: x.jobType,
level: x.level,
location: x.location,
- specialization: x.specialization,
title: x.title,
totalCompensation: {
create: {
@@ -363,7 +361,6 @@ export const offersProfileRouter = createRouter()
value: x.monthlySalary.value,
},
},
- specialization: x.specialization,
title: x.title,
};
}
@@ -382,7 +379,6 @@ export const offersProfileRouter = createRouter()
value: x.monthlySalary.value,
},
},
- specialization: x.specialization,
title: x.title,
};
}
@@ -442,7 +438,6 @@ export const offersProfileRouter = createRouter()
value: x.offersIntern.monthlySalary.value,
},
},
- specialization: x.offersIntern.specialization,
startYear: x.offersIntern.startYear,
title: x.offersIntern.title,
},
@@ -452,17 +447,10 @@ export const offersProfileRouter = createRouter()
if (
x.jobType === JobType.FULLTIME &&
x.offersFullTime &&
- x.offersFullTime.baseSalary?.currency != null &&
- x.offersFullTime.baseSalary?.value != null &&
- x.offersFullTime.bonus?.currency != null &&
- x.offersFullTime.bonus?.value != null &&
- x.offersFullTime.stocks?.currency != null &&
- x.offersFullTime.stocks?.value != null &&
x.offersFullTime.totalCompensation?.currency != null &&
x.offersFullTime.totalCompensation?.value != null &&
x.offersFullTime.level != null &&
- x.offersFullTime.title != null &&
- x.offersFullTime.specialization != null
+ x.offersFullTime.title != null
) {
return {
comments: x.comments,
@@ -477,44 +465,53 @@ export const offersProfileRouter = createRouter()
negotiationStrategy: x.negotiationStrategy,
offersFullTime: {
create: {
- baseSalary: {
- create: {
- baseCurrency: baseCurrencyString,
- baseValue: await convert(
- x.offersFullTime.baseSalary.value,
- x.offersFullTime.baseSalary.currency,
- baseCurrencyString,
- ),
- currency: x.offersFullTime.baseSalary.currency,
- value: x.offersFullTime.baseSalary.value,
- },
- },
- bonus: {
- create: {
- baseCurrency: baseCurrencyString,
- baseValue: await convert(
- x.offersFullTime.bonus.value,
- x.offersFullTime.bonus.currency,
- baseCurrencyString,
- ),
- currency: x.offersFullTime.bonus.currency,
- value: x.offersFullTime.bonus.value,
- },
- },
+ baseSalary:
+ x.offersFullTime?.baseSalary != null
+ ? {
+ create: {
+ baseCurrency: baseCurrencyString,
+ baseValue: await convert(
+ x.offersFullTime.baseSalary.value,
+ x.offersFullTime.baseSalary.currency,
+ baseCurrencyString,
+ ),
+ currency:
+ x.offersFullTime.baseSalary.currency,
+ value: x.offersFullTime.baseSalary.value,
+ },
+ }
+ : undefined,
+ bonus:
+ x.offersFullTime?.bonus != null
+ ? {
+ create: {
+ baseCurrency: baseCurrencyString,
+ baseValue: await convert(
+ x.offersFullTime.bonus.value,
+ x.offersFullTime.bonus.currency,
+ baseCurrencyString,
+ ),
+ currency: x.offersFullTime.bonus.currency,
+ value: x.offersFullTime.bonus.value,
+ },
+ }
+ : undefined,
level: x.offersFullTime.level,
- specialization: x.offersFullTime.specialization,
- stocks: {
- create: {
- baseCurrency: baseCurrencyString,
- baseValue: await convert(
- x.offersFullTime.stocks.value,
- x.offersFullTime.stocks.currency,
- baseCurrencyString,
- ),
- currency: x.offersFullTime.stocks.currency,
- value: x.offersFullTime.stocks.value,
- },
- },
+ stocks:
+ x.offersFullTime?.stocks != null
+ ? {
+ create: {
+ baseCurrency: baseCurrencyString,
+ baseValue: await convert(
+ x.offersFullTime.stocks.value,
+ x.offersFullTime.stocks.currency,
+ baseCurrencyString,
+ ),
+ currency: x.offersFullTime.stocks.currency,
+ value: x.offersFullTime.stocks.value,
+ },
+ }
+ : undefined,
title: x.offersFullTime.title,
totalCompensation: {
create: {
@@ -714,7 +711,6 @@ export const offersProfileRouter = createRouter()
companyId: exp.companyId, // TODO: check if can change with connect or whether there is a difference
durationInMonths: exp.durationInMonths,
level: exp.level,
- specialization: exp.specialization,
},
where: {
id: exp.id,
@@ -821,7 +817,6 @@ export const offersProfileRouter = createRouter()
jobType: exp.jobType,
level: exp.level,
location: exp.location,
- specialization: exp.specialization,
title: exp.title,
totalCompensation: {
create: {
@@ -851,7 +846,6 @@ export const offersProfileRouter = createRouter()
jobType: exp.jobType,
level: exp.level,
location: exp.location,
- specialization: exp.specialization,
title: exp.title,
totalCompensation: {
create: {
@@ -887,7 +881,6 @@ export const offersProfileRouter = createRouter()
jobType: exp.jobType,
level: exp.level,
location: exp.location,
- specialization: exp.specialization,
title: exp.title,
},
},
@@ -905,7 +898,6 @@ export const offersProfileRouter = createRouter()
jobType: exp.jobType,
level: exp.level,
location: exp.location,
- specialization: exp.specialization,
title: exp.title,
},
},
@@ -945,7 +937,6 @@ export const offersProfileRouter = createRouter()
value: exp.monthlySalary.value,
},
},
- specialization: exp.specialization,
title: exp.title,
},
},
@@ -974,7 +965,6 @@ export const offersProfileRouter = createRouter()
value: exp.monthlySalary.value,
},
},
- specialization: exp.specialization,
title: exp.title,
},
},
@@ -997,7 +987,6 @@ export const offersProfileRouter = createRouter()
durationInMonths: exp.durationInMonths,
jobType: exp.jobType,
location: exp.location,
- specialization: exp.specialization,
title: exp.title,
},
},
@@ -1014,7 +1003,6 @@ export const offersProfileRouter = createRouter()
durationInMonths: exp.durationInMonths,
jobType: exp.jobType,
location: exp.location,
- specialization: exp.specialization,
title: exp.title,
},
},
@@ -1121,7 +1109,6 @@ export const offersProfileRouter = createRouter()
data: {
internshipCycle:
offerToUpdate.offersIntern.internshipCycle ?? undefined,
- specialization: offerToUpdate.offersIntern.specialization,
startYear: offerToUpdate.offersIntern.startYear ?? undefined,
title: offerToUpdate.offersIntern.title,
},
@@ -1150,7 +1137,6 @@ export const offersProfileRouter = createRouter()
await ctx.prisma.offersFullTime.update({
data: {
level: offerToUpdate.offersFullTime.level ?? undefined,
- specialization: offerToUpdate.offersFullTime.specialization,
title: offerToUpdate.offersFullTime.title,
},
where: {
@@ -1174,7 +1160,7 @@ export const offersProfileRouter = createRouter()
},
});
}
- if (offerToUpdate.offersFullTime.bonus) {
+ if (offerToUpdate.offersFullTime.bonus != null) {
await ctx.prisma.offersCurrency.update({
data: {
baseCurrency: baseCurrencyString,
@@ -1191,7 +1177,7 @@ export const offersProfileRouter = createRouter()
},
});
}
- if (offerToUpdate.offersFullTime.stocks) {
+ if (offerToUpdate.offersFullTime.stocks != null) {
await ctx.prisma.offersCurrency.update({
data: {
baseCurrency: baseCurrencyString,
@@ -1269,8 +1255,6 @@ export const offersProfileRouter = createRouter()
offerToUpdate.offersIntern.monthlySalary.value,
},
},
- specialization:
- offerToUpdate.offersIntern.specialization,
startYear: offerToUpdate.offersIntern.startYear,
title: offerToUpdate.offersIntern.title,
},
@@ -1286,12 +1270,6 @@ export const offersProfileRouter = createRouter()
if (
offerToUpdate.jobType === JobType.FULLTIME &&
offerToUpdate.offersFullTime &&
- offerToUpdate.offersFullTime.baseSalary?.currency != null &&
- offerToUpdate.offersFullTime.baseSalary?.value != null &&
- offerToUpdate.offersFullTime.bonus?.currency != null &&
- offerToUpdate.offersFullTime.bonus?.value != null &&
- offerToUpdate.offersFullTime.stocks?.currency != null &&
- offerToUpdate.offersFullTime.stocks?.value != null &&
offerToUpdate.offersFullTime.totalCompensation?.currency !=
null &&
offerToUpdate.offersFullTime.totalCompensation?.value != null &&
@@ -1313,51 +1291,66 @@ export const offersProfileRouter = createRouter()
negotiationStrategy: offerToUpdate.negotiationStrategy,
offersFullTime: {
create: {
- baseSalary: {
- create: {
- baseCurrency: baseCurrencyString,
- baseValue: await convert(
- offerToUpdate.offersFullTime.baseSalary.value,
- offerToUpdate.offersFullTime.baseSalary
- .currency,
- baseCurrencyString,
- ),
- currency:
- offerToUpdate.offersFullTime.baseSalary
- .currency,
- value:
- offerToUpdate.offersFullTime.baseSalary.value,
- },
- },
- bonus: {
- create: {
- baseCurrency: baseCurrencyString,
- baseValue: await convert(
- offerToUpdate.offersFullTime.bonus.value,
- offerToUpdate.offersFullTime.bonus.currency,
- baseCurrencyString,
- ),
- currency:
- offerToUpdate.offersFullTime.bonus.currency,
- value: offerToUpdate.offersFullTime.bonus.value,
- },
- },
+ baseSalary:
+ offerToUpdate.offersFullTime?.baseSalary != null
+ ? {
+ create: {
+ baseCurrency: baseCurrencyString,
+ baseValue: await convert(
+ offerToUpdate.offersFullTime.baseSalary
+ .value,
+ offerToUpdate.offersFullTime.baseSalary
+ .currency,
+ baseCurrencyString,
+ ),
+ currency:
+ offerToUpdate.offersFullTime.baseSalary
+ .currency,
+ value:
+ offerToUpdate.offersFullTime.baseSalary
+ .value,
+ },
+ }
+ : undefined,
+ bonus:
+ offerToUpdate.offersFullTime?.bonus != null
+ ? {
+ create: {
+ baseCurrency: baseCurrencyString,
+ baseValue: await convert(
+ offerToUpdate.offersFullTime.bonus.value,
+ offerToUpdate.offersFullTime.bonus
+ .currency,
+ baseCurrencyString,
+ ),
+ currency:
+ offerToUpdate.offersFullTime.bonus
+ .currency,
+ value:
+ offerToUpdate.offersFullTime.bonus.value,
+ },
+ }
+ : undefined,
level: offerToUpdate.offersFullTime.level,
- specialization:
- offerToUpdate.offersFullTime.specialization,
- stocks: {
- create: {
- baseCurrency: baseCurrencyString,
- baseValue: await convert(
- offerToUpdate.offersFullTime.stocks.value,
- offerToUpdate.offersFullTime.stocks.currency,
- baseCurrencyString,
- ),
- currency:
- offerToUpdate.offersFullTime.stocks.currency,
- value: offerToUpdate.offersFullTime.stocks.value,
- },
- },
+ stocks:
+ offerToUpdate.offersFullTime?.stocks != null
+ ? {
+ create: {
+ baseCurrency: baseCurrencyString,
+ baseValue: await convert(
+ offerToUpdate.offersFullTime.stocks.value,
+ offerToUpdate.offersFullTime.stocks
+ .currency,
+ baseCurrencyString,
+ ),
+ currency:
+ offerToUpdate.offersFullTime.stocks
+ .currency,
+ value:
+ offerToUpdate.offersFullTime.stocks.value,
+ },
+ }
+ : undefined,
title: offerToUpdate.offersFullTime.title,
totalCompensation: {
create: {
diff --git a/apps/portal/src/server/router/offers/offers.ts b/apps/portal/src/server/router/offers/offers.ts
index b333fa66..84756179 100644
--- a/apps/portal/src/server/router/offers/offers.ts
+++ b/apps/portal/src/server/router/offers/offers.ts
@@ -317,27 +317,36 @@ export const offersRouter = createRouter().query('list', {
offer.offersFullTime.totalCompensation.updatedAt,
);
offer.offersFullTime.totalCompensation.currency = currency;
- offer.offersFullTime.baseSalary.value = await convertWithDate(
- offer.offersFullTime.baseSalary.value,
- offer.offersFullTime.baseSalary.currency,
- currency,
- offer.offersFullTime.baseSalary.updatedAt,
- );
- offer.offersFullTime.baseSalary.currency = currency;
- offer.offersFullTime.stocks.value = await convertWithDate(
- offer.offersFullTime.stocks.value,
- offer.offersFullTime.stocks.currency,
- currency,
- offer.offersFullTime.stocks.updatedAt,
- );
- offer.offersFullTime.stocks.currency = currency;
- offer.offersFullTime.bonus.value = await convertWithDate(
- offer.offersFullTime.bonus.value,
- offer.offersFullTime.bonus.currency,
- currency,
- offer.offersFullTime.bonus.updatedAt,
- );
- offer.offersFullTime.bonus.currency = currency;
+
+ if (offer.offersFullTime?.baseSalary != null) {
+ offer.offersFullTime.baseSalary.value = await convertWithDate(
+ offer.offersFullTime.baseSalary.value,
+ offer.offersFullTime.baseSalary.currency,
+ currency,
+ offer.offersFullTime.baseSalary.updatedAt,
+ );
+ offer.offersFullTime.baseSalary.currency = currency;
+ }
+
+ if (offer.offersFullTime?.stocks != null) {
+ offer.offersFullTime.stocks.value = await convertWithDate(
+ offer.offersFullTime.stocks.value,
+ offer.offersFullTime.stocks.currency,
+ currency,
+ offer.offersFullTime.stocks.updatedAt,
+ );
+ offer.offersFullTime.stocks.currency = currency;
+ }
+
+ if (offer.offersFullTime?.bonus != null) {
+ offer.offersFullTime.bonus.value = await convertWithDate(
+ offer.offersFullTime.bonus.value,
+ offer.offersFullTime.bonus.currency,
+ currency,
+ offer.offersFullTime.bonus.updatedAt,
+ );
+ offer.offersFullTime.bonus.currency = currency;
+ }
} else if (offer.offersIntern?.monthlySalary != null) {
offer.offersIntern.monthlySalary.value = await convertWithDate(
offer.offersIntern.monthlySalary.value,
diff --git a/apps/portal/src/types/offers.d.ts b/apps/portal/src/types/offers.d.ts
index 487ae0c9..f2b26332 100644
--- a/apps/portal/src/types/offers.d.ts
+++ b/apps/portal/src/types/offers.d.ts
@@ -26,7 +26,6 @@ export type Experience = {
level: string?;
location: string?;
monthlySalary: Valuation?;
- specialization: string?;
title: string?;
totalCompensation: Valuation?;
};
@@ -87,12 +86,11 @@ export type ProfileOffer = {
};
export type FullTime = {
- baseSalary: Valuation;
- bonus: Valuation;
+ baseSalary: Valuation?;
+ bonus: Valuation?;
id: string;
level: string;
- specialization: string;
- stocks: Valuation;
+ stocks: Valuation?;
title: string;
totalCompensation: Valuation;
};
@@ -101,7 +99,6 @@ export type Intern = {
id: string;
internshipCycle: string;
monthlySalary: Valuation;
- specialization: string;
startYear: number;
title: string;
};
@@ -163,7 +160,6 @@ export type AnalysisHighestOffer = {
id: string;
level: string;
location: string;
- specialization: string;
totalYoe: number;
};
@@ -178,7 +174,6 @@ export type AnalysisOffer = {
negotiationStrategy: string;
previousCompanies: Array;
profileName: string;
- specialization: string;
title: string;
totalYoe: number;
};
From ce906c0470bbd4454ddc39c8c39ab0f0c3d35246 Mon Sep 17 00:00:00 2001
From: Keane Chan
Date: Tue, 25 Oct 2022 00:27:54 +0800
Subject: [PATCH 12/12] [ui][text input] change pl to px for startAddOn
---
packages/ui/src/TextInput/TextInput.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/ui/src/TextInput/TextInput.tsx b/packages/ui/src/TextInput/TextInput.tsx
index 98b150f2..81f64190 100644
--- a/packages/ui/src/TextInput/TextInput.tsx
+++ b/packages/ui/src/TextInput/TextInput.tsx
@@ -154,14 +154,14 @@ function TextInput(
switch (startAddOnType) {
case 'label':
return (
-
+
{startAddOn}
);
case 'icon': {
const StartAddOn = startAddOn;
return (
-