mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-07-28 04:33:42 +08:00
[offers][fix] Prevent user's offers from appearing in his own analysis
This commit is contained in:
@ -232,7 +232,7 @@ export const offersAnalysisRouter = createRouter()
|
|||||||
const monthYearReceived = new Date(overallHighestOffer.monthYearReceived);
|
const monthYearReceived = new Date(overallHighestOffer.monthYearReceived);
|
||||||
monthYearReceived.setFullYear(monthYearReceived.getFullYear() - 1);
|
monthYearReceived.setFullYear(monthYearReceived.getFullYear() - 1);
|
||||||
|
|
||||||
let similarOffers = await ctx.prisma.offersOffer.findMany({
|
const similarOffers = await ctx.prisma.offersOffer.findMany({
|
||||||
include: {
|
include: {
|
||||||
company: true,
|
company: true,
|
||||||
offersFullTime: {
|
offersFullTime: {
|
||||||
@ -326,7 +326,7 @@ export const offersAnalysisRouter = createRouter()
|
|||||||
const companyAnalysis = Array.from(companyMap.values()).map(
|
const companyAnalysis = Array.from(companyMap.values()).map(
|
||||||
(companyOffer) => {
|
(companyOffer) => {
|
||||||
// TODO: Refactor calculating analysis into a function
|
// TODO: Refactor calculating analysis into a function
|
||||||
let similarCompanyOffers = similarOffers.filter(
|
const similarCompanyOffers = similarOffers.filter(
|
||||||
(offer) => offer.companyId === companyOffer.companyId,
|
(offer) => offer.companyId === companyOffer.companyId,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -340,21 +340,23 @@ export const offersAnalysisRouter = createRouter()
|
|||||||
: 100 - (100 * companyIndex) / (similarCompanyOffers.length - 1);
|
: 100 - (100 * companyIndex) / (similarCompanyOffers.length - 1);
|
||||||
|
|
||||||
// Get top offers (excluding user's offer)
|
// Get top offers (excluding user's offer)
|
||||||
similarCompanyOffers = similarCompanyOffers.filter(
|
const similarCompanyOffersWithoutUsersOffers =
|
||||||
(offer) => offer.id !== companyOffer.id,
|
similarCompanyOffers.filter(
|
||||||
);
|
(offer) => offer.profileId !== input.profileId,
|
||||||
|
);
|
||||||
|
|
||||||
const noOfSimilarCompanyOffers = similarCompanyOffers.length;
|
const noOfSimilarCompanyOffers =
|
||||||
|
similarCompanyOffersWithoutUsersOffers.length;
|
||||||
const similarCompanyOffers90PercentileIndex = Math.ceil(
|
const similarCompanyOffers90PercentileIndex = Math.ceil(
|
||||||
noOfSimilarCompanyOffers * 0.1,
|
noOfSimilarCompanyOffers * 0.1,
|
||||||
);
|
);
|
||||||
const topPercentileCompanyOffers =
|
const topPercentileCompanyOffers =
|
||||||
noOfSimilarCompanyOffers > 2
|
noOfSimilarCompanyOffers > 2
|
||||||
? similarCompanyOffers.slice(
|
? similarCompanyOffersWithoutUsersOffers.slice(
|
||||||
similarCompanyOffers90PercentileIndex,
|
similarCompanyOffers90PercentileIndex,
|
||||||
similarCompanyOffers90PercentileIndex + 2,
|
similarCompanyOffers90PercentileIndex + 2,
|
||||||
)
|
)
|
||||||
: similarCompanyOffers;
|
: similarCompanyOffersWithoutUsersOffers;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
companyName: companyOffer.company.name,
|
companyName: companyOffer.company.name,
|
||||||
@ -375,19 +377,19 @@ export const offersAnalysisRouter = createRouter()
|
|||||||
? 100
|
? 100
|
||||||
: 100 - (100 * overallIndex) / (similarOffers.length - 1);
|
: 100 - (100 * overallIndex) / (similarOffers.length - 1);
|
||||||
|
|
||||||
similarOffers = similarOffers.filter(
|
const similarOffersWithoutUsersOffers = similarOffers.filter(
|
||||||
(offer) => offer.id !== overallHighestOffer.id,
|
(similarOffer) => similarOffer.profileId !== input.profileId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const noOfSimilarOffers = similarOffers.length;
|
const noOfSimilarOffers = similarOffersWithoutUsersOffers.length;
|
||||||
const similarOffers90PercentileIndex = Math.ceil(noOfSimilarOffers * 0.1);
|
const similarOffers90PercentileIndex = Math.ceil(noOfSimilarOffers * 0.1);
|
||||||
const topPercentileOffers =
|
const topPercentileOffers =
|
||||||
noOfSimilarOffers > 2
|
noOfSimilarOffers > 2
|
||||||
? similarOffers.slice(
|
? similarOffersWithoutUsersOffers.slice(
|
||||||
similarOffers90PercentileIndex,
|
similarOffers90PercentileIndex,
|
||||||
similarOffers90PercentileIndex + 2,
|
similarOffers90PercentileIndex + 2,
|
||||||
)
|
)
|
||||||
: similarOffers;
|
: similarOffersWithoutUsersOffers;
|
||||||
|
|
||||||
const analysis = await ctx.prisma.offersAnalysis.create({
|
const analysis = await ctx.prisma.offersAnalysis.create({
|
||||||
data: {
|
data: {
|
||||||
|
Reference in New Issue
Block a user