diff --git a/apps/portal/prisma/migrations/20221103031927_change_company_in_analysis_unit/migration.sql b/apps/portal/prisma/migrations/20221103031927_change_company_in_analysis_unit/migration.sql new file mode 100644 index 00000000..cf185e47 --- /dev/null +++ b/apps/portal/prisma/migrations/20221103031927_change_company_in_analysis_unit/migration.sql @@ -0,0 +1,13 @@ +/* + Warnings: + + - You are about to drop the column `companyName` on the `OffersAnalysisUnit` table. All the data in the column will be lost. + - Added the required column `companyId` to the `OffersAnalysisUnit` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "OffersAnalysisUnit" DROP COLUMN "companyName", +ADD COLUMN "companyId" TEXT NOT NULL; + +-- AddForeignKey +ALTER TABLE "OffersAnalysisUnit" ADD CONSTRAINT "OffersAnalysisUnit_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/portal/prisma/schema.prisma b/apps/portal/prisma/schema.prisma index 8b0fcbd9..135ca1d7 100644 --- a/apps/portal/prisma/schema.prisma +++ b/apps/portal/prisma/schema.prisma @@ -104,6 +104,7 @@ model Company { questionsQuestionEncounter QuestionsQuestionEncounter[] OffersExperience OffersExperience[] OffersOffer OffersOffer[] + OffersAnalysisUnit OffersAnalysisUnit[] } model Country { @@ -418,7 +419,9 @@ model OffersAnalysis { model OffersAnalysisUnit { id String @id @default(cuid()) - companyName String + company Company @relation(fields: [companyId], references: [id]) + companyId String + percentile Float noOfSimilarOffers Int topSimilarOffers OffersOffer[] diff --git a/apps/portal/src/mappers/offers-mappers.ts b/apps/portal/src/mappers/offers-mappers.ts index 504e9400..07b37bb0 100644 --- a/apps/portal/src/mappers/offers-mappers.ts +++ b/apps/portal/src/mappers/offers-mappers.ts @@ -126,6 +126,7 @@ const analysisOfferDtoMapper = ( const analysisUnitDtoMapper = ( analysisUnit: OffersAnalysisUnit & { + company: Company; topSimilarOffers: Array< OffersOffer & { company: Company; @@ -153,7 +154,7 @@ const analysisUnitDtoMapper = ( }, ) => { const analysisDto: AnalysisUnit = { - companyName: analysisUnit.companyName, + companyName: analysisUnit.company.name, noOfOffers: analysisUnit.noOfSimilarOffers, percentile: analysisUnit.percentile, topPercentileOffers: analysisUnit.topSimilarOffers.map((offer) => @@ -189,6 +190,7 @@ export const profileAnalysisDtoMapper = ( | (OffersAnalysis & { companyAnalysis: Array< OffersAnalysisUnit & { + company: Company; topSimilarOffers: Array< OffersOffer & { company: Company; @@ -218,6 +220,7 @@ export const profileAnalysisDtoMapper = ( } >; overallAnalysis: OffersAnalysisUnit & { + company: Company; topSimilarOffers: Array< OffersOffer & { company: Company; @@ -501,6 +504,7 @@ export const profileDtoMapper = ( | (OffersAnalysis & { companyAnalysis: Array< OffersAnalysisUnit & { + company: Company; topSimilarOffers: Array< OffersOffer & { company: Company; @@ -532,6 +536,7 @@ export const profileDtoMapper = ( } >; overallAnalysis: OffersAnalysisUnit & { + company: Company; topSimilarOffers: Array< OffersOffer & { company: Company; 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 4ae5241f..ded20869 100644 --- a/apps/portal/src/server/router/offers/offers-analysis-router.ts +++ b/apps/portal/src/server/router/offers/offers-analysis-router.ts @@ -16,6 +16,7 @@ export const offersAnalysisRouter = createRouter() include: { companyAnalysis: { include: { + company: true, topSimilarOffers: { include: { company: true, @@ -66,6 +67,7 @@ export const offersAnalysisRouter = createRouter() }, overallAnalysis: { include: { + company: true, topSimilarOffers: { include: { company: true, 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 3899fb97..39cd0d4f 100644 --- a/apps/portal/src/server/router/offers/offers-profile-router.ts +++ b/apps/portal/src/server/router/offers/offers-profile-router.ts @@ -168,6 +168,7 @@ export const offersProfileRouter = createRouter() include: { companyAnalysis: { include: { + company: true, topSimilarOffers: { include: { company: true, @@ -218,6 +219,7 @@ export const offersProfileRouter = createRouter() }, overallAnalysis: { include: { + company: true, topSimilarOffers: { include: { company: true, diff --git a/apps/portal/src/utils/offers/analysisGeneration.ts b/apps/portal/src/utils/offers/analysisGeneration.ts index a2594079..ad0fb428 100644 --- a/apps/portal/src/utils/offers/analysisGeneration.ts +++ b/apps/portal/src/utils/offers/analysisGeneration.ts @@ -292,7 +292,7 @@ export const generateAnalysis = async (params: { : similarCompanyOffers; return { - companyName: companyOffer.company.name, + companyId: companyOffer.companyId, noOfSimilarOffers: noOfSimilarCompanyOffers, percentile: companyPercentile, topSimilarOffers: topPercentileCompanyOffers, @@ -329,7 +329,11 @@ export const generateAnalysis = async (params: { companyAnalysis: { create: companyAnalysis.map((analysisUnit) => { return { - companyName: analysisUnit.companyName, + company: { + connect: { + id: analysisUnit.companyId, + }, + }, noOfSimilarOffers: analysisUnit.noOfSimilarOffers, percentile: analysisUnit.percentile, topSimilarOffers: { @@ -342,7 +346,11 @@ export const generateAnalysis = async (params: { }, overallAnalysis: { create: { - companyName: overallHighestOffer.company.name, + company: { + connect: { + id: overallHighestOffer.companyId, + }, + }, noOfSimilarOffers, percentile: overallPercentile, topSimilarOffers: { @@ -366,6 +374,7 @@ export const generateAnalysis = async (params: { include: { companyAnalysis: { include: { + company: true, topSimilarOffers: { include: { company: true, @@ -416,6 +425,7 @@ export const generateAnalysis = async (params: { }, overallAnalysis: { include: { + company: true, topSimilarOffers: { include: { company: true,