feat: agencies

This commit is contained in:
Nevo David 2024-08-09 21:51:33 +07:00
parent 1fc47a00dd
commit cdfa62958f
6 changed files with 105 additions and 0 deletions

View File

@ -26,6 +26,7 @@ import { OpenaiService } from '@gitroom/nestjs-libraries/openai/openai.service';
import { ExtractContentService } from '@gitroom/nestjs-libraries/openai/extract.content.service';
import { CodesService } from '@gitroom/nestjs-libraries/services/codes.service';
import { CopilotController } from '@gitroom/backend/api/routes/copilot.controller';
import { AgenciesController } from '@gitroom/backend/api/routes/agencies.controller';
const authenticatedController = [
UsersController,
@ -40,6 +41,7 @@ const authenticatedController = [
MarketplaceController,
MessagesController,
CopilotController,
AgenciesController,
];
@Module({
imports: [

View File

@ -0,0 +1,15 @@
import { Controller, Get } from '@nestjs/common';
import { User } from '@prisma/client';
import { ApiTags } from '@nestjs/swagger';
import { AgenciesService } from '@gitroom/nestjs-libraries/database/prisma/agencies/agencies.service';
import { GetUserFromRequest } from '@gitroom/nestjs-libraries/user/user.from.request';
@ApiTags('Agencies')
@Controller('/agencies')
export class AgenciesController {
constructor(private _agenciesService: AgenciesService) {}
@Get('/')
async generateImage(@GetUserFromRequest() user: User) {
return this._agenciesService.getAgencyByUser(user);
}
}

View File

@ -0,0 +1,19 @@
import { PrismaRepository } from '@gitroom/nestjs-libraries/database/prisma/prisma.service';
import { Injectable } from '@nestjs/common';
import { User } from '@prisma/client';
@Injectable()
export class AgenciesRepository {
constructor(
private _socialMediaAgencies: PrismaRepository<'socialMediaAgency'>
) {}
getAgencyByUser(user: User) {
return this._socialMediaAgencies.model.socialMediaAgency.findFirst({
where: {
userId: user.id,
deletedAt: null,
},
});
}
}

View File

@ -0,0 +1,11 @@
import { Injectable } from '@nestjs/common';
import { AgenciesRepository } from '@gitroom/nestjs-libraries/database/prisma/agencies/agencies.repository';
import { User } from '@prisma/client';
@Injectable()
export class AgenciesService {
constructor(private _agenciesRepository: AgenciesRepository) {}
getAgencyByUser(user: User) {
return this._agenciesRepository.getAgencyByUser(user);
}
}

View File

@ -27,6 +27,8 @@ import { MessagesRepository } from '@gitroom/nestjs-libraries/database/prisma/ma
import { StripeService } from '@gitroom/nestjs-libraries/services/stripe.service';
import { ExtractContentService } from '@gitroom/nestjs-libraries/openai/extract.content.service';
import { OpenaiService } from '@gitroom/nestjs-libraries/openai/openai.service';
import { AgenciesService } from '@gitroom/nestjs-libraries/database/prisma/agencies/agencies.service';
import { AgenciesRepository } from '@gitroom/nestjs-libraries/database/prisma/agencies/agencies.repository';
@Global()
@Module({
@ -55,6 +57,8 @@ import { OpenaiService } from '@gitroom/nestjs-libraries/openai/openai.service';
MediaRepository,
CommentsRepository,
ItemUserRepository,
AgenciesService,
AgenciesRepository,
ItemUserService,
MessagesService,
CommentsService,

View File

@ -62,6 +62,7 @@ model User {
orderSeller Orders[] @relation("orderSeller")
payoutProblems PayoutProblems[]
lastOnline DateTime @default(now())
agencies SocialMediaAgency[]
@@unique([email, providerName])
@@index([lastReadNotifications])
@ -165,10 +166,63 @@ model Media {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userPicture User[]
agencies SocialMediaAgency[]
@@index([organizationId])
}
model SocialMediaAgency {
id String @id @default(uuid())
user User @relation(fields: [userId], references: [id])
userId String
name String
logoId String?
logo Media? @relation(fields: [logoId], references: [id])
tagline String?
address String?
phoneNumber String?
emailAddress String?
website String?
facebook String?
instagram String?
twitter String?
linkedIn String?
youtube String?
otherSocialMedia String?
primaryServices String
specialties String?
packages String?
caseStudies String?
yearEstablished Int?
teamSize Int?
languagesSupported String?
clientTypes String?
clientTestimonials String?
certifications String?
awards String?
blog String?
faqs String?
events String?
freeConsultation Boolean @default(false)
businessHours String?
serviceArea String?
termsAndConditions String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
@@index([userId])
@@index([deletedAt])
@@index([id])
}
model Credits {
id String @id @default(uuid())
organization Organization @relation(fields: [organizationId], references: [id])