update models and create consumer domain accounts permissions

This commit is contained in:
2026-04-11 14:47:05 +03:30
parent 89726c8904
commit 9cef733370
87 changed files with 2967 additions and 3352 deletions
@@ -9,9 +9,9 @@ import { CreateConsumerAccountDto, UpdateAccountDto } from './dto/account.dto'
export class AccountsService {
constructor(private readonly prisma: PrismaService) {}
async findAll(consumerId: string) {
async findAll(consumer_id: string) {
const accounts = await this.prisma.consumerAccount.findMany({
where: { user_id: consumerId },
where: { consumer_id },
select: {
id: true,
role: true,
@@ -57,11 +57,14 @@ export class AccountsService {
username: data.username,
},
},
user: {
consumer: {
connect: {
id: consumerId,
},
},
permission: {
create: {},
},
},
})
return ResponseMapper.create(account)
@@ -1,24 +0,0 @@
import { ApiProperty, PartialType } from '@nestjs/swagger'
import { IsEnum, IsOptional, IsString } from 'class-validator'
import { AccountStatus, AccountType } from 'generated/prisma/enums'
export class CreateAccountDto {
@IsString()
@ApiProperty()
username: string
@IsString()
@ApiProperty()
password: string
@IsEnum(AccountType)
@ApiProperty({ enum: AccountType })
type: AccountType
}
export class UpdateAccountDto extends PartialType(CreateAccountDto) {
@IsOptional()
@IsEnum(AccountStatus)
@ApiProperty({ enum: AccountStatus })
status?: AccountStatus
}
@@ -1,20 +0,0 @@
import { Body, Controller, Get, Param, Post } from '@nestjs/common'
import { ApiTags } from '@nestjs/swagger'
import { CreateAccountDto } from './dto/permission.dto'
import { AccountsService } from './permissions.service'
@ApiTags('AdminAccounts')
@Controller('admin/users/:userId/accounts/:accountId/permissions')
export class AccountPermissionsController {
constructor(private readonly service: AccountsService) {}
@Get()
async findAll(@Param('userId') userId: string, @Param('accountId') accountId: string) {
return this.service.findAll(userId, accountId)
}
@Post()
async create(@Param('userId') userId: string, @Body() data: CreateAccountDto) {
return this.service.create(userId, data)
}
}
@@ -1,12 +0,0 @@
import { PrismaModule } from '@/prisma/prisma.module'
import { Module } from '@nestjs/common'
import { AccountPermissionsController } from './permissions.controller'
import { AccountsService } from './permissions.service'
@Module({
imports: [PrismaModule],
controllers: [AccountPermissionsController],
providers: [AccountsService],
exports: [AccountsService],
})
export class AdminAccountPermissionsModule {}
@@ -1,116 +0,0 @@
import { PrismaService } from '@/prisma/prisma.service'
import { Injectable } from '@nestjs/common'
import { ResponseMapper } from 'common/response/response-mapper'
import { CreateAccountDto } from './dto/permission.dto'
@Injectable()
export class AccountsService {
constructor(private readonly prisma: PrismaService) {}
async findAll(userId: string, account_id: string) {
const businessActivities = await this.prisma.businessActivity.findMany({
where: {
user_id: userId,
},
select: {
id: true,
name: true,
complexes: {
select: {
id: true,
name: true,
pos_list: {
select: {
id: true,
name: true,
},
},
},
},
},
})
const permissions = await this.prisma.permissionConsumer.findMany({
where: {
account_id,
},
select: {
posPermissions: {
select: {
pos_id: true,
role: true,
},
},
businessPermissions: {
select: {
business_id: true,
role: true,
},
},
complexPermissions: {
select: {
complex_id: true,
role: true,
},
},
},
})
const businesses = [] as any
const complexes = [] as any
const poses = [] as any
businessActivities.forEach(businessActivity => {
businesses.push({
id: businessActivity.id,
name: businessActivity.name,
hasAccess: false,
role: null,
})
businessActivity.complexes.forEach(complex => {
complexes.push({
id: complex.id,
name: complex.name,
hasAccess: false,
role: null,
})
complex.pos_list.forEach(pos => {
poses.push({
id: pos.id,
name: pos.name,
hasAccess: false,
role: null,
})
})
})
})
permissions.forEach(permission => {
permission.posPermissions.forEach(posPermission => {
poses.map(pos => {
if (pos.id === posPermission.pos_id) {
return {
...pos,
role: posPermission.role,
hasAccess: true,
}
}
return pos
})
})
})
}
async findOne(id: string) {
const account = await this.prisma.account.findUnique({
where: { id },
})
return ResponseMapper.single(account)
}
async create(userId: string, data: CreateAccountDto) {
return ResponseMapper.create({})
}
}
@@ -21,25 +21,25 @@ export class BusinessActivitiesService {
created_at: true,
} as BusinessActivitySelect
async findAll(userId: string) {
async findAll(consumer_id: string) {
const businessActivities = await this.prisma.businessActivity.findMany({
where: {
user_id: userId,
consumer_id,
},
select: this.defaultSelect,
})
return ResponseMapper.list(businessActivities)
}
async findOne(userId: string, id: string) {
async findOne(consumer_id: string, id: string) {
const businessActivity = await this.prisma.businessActivity.findUnique({
where: { user_id: userId, id },
where: { consumer_id, id },
select: this.defaultSelect,
})
return ResponseMapper.single(businessActivity)
}
async create(userId: string, data: CreateBusinessActivitiesDto) {
async create(consumer_id: string, data: CreateBusinessActivitiesDto) {
const businessActivity = await this.prisma.businessActivity.create({
data: {
name: data.name,
@@ -48,9 +48,9 @@ export class BusinessActivitiesService {
id: data.guild_id,
},
},
user: {
consumer: {
connect: {
id: userId,
id: consumer_id,
},
},
},
@@ -59,9 +59,9 @@ export class BusinessActivitiesService {
return ResponseMapper.create(businessActivity)
}
async update(user_id: string, id: string, data: any) {
async update(consumer_id: string, id: string, data: any) {
const businessActivity = await this.prisma.businessActivity.update({
where: { id, user_id },
where: { id, consumer_id },
data,
select: this.defaultSelect,
})
@@ -16,13 +16,13 @@ export class BusinessActivityComplexesService {
created_at: true,
} as ComplexSelect
async findAll(user_id: string, business_activity_id: string) {
async findAll(consumer_id: string, business_activity_id: string) {
const accounts = await this.prisma.complex.findMany({
where: {
business_activity: {
id: business_activity_id,
user: {
id: user_id,
consumer: {
id: consumer_id,
},
},
},
@@ -31,13 +31,13 @@ export class BusinessActivityComplexesService {
return ResponseMapper.list(accounts)
}
async findOne(user_id: string, business_activity_id: string, id: string) {
async findOne(consumer_id: string, business_activity_id: string, id: string) {
const account = await this.prisma.complex.findUnique({
where: {
business_activity: {
id: business_activity_id,
user: {
id: user_id,
consumer: {
id: consumer_id,
},
},
id,
@@ -62,7 +62,7 @@ export class BusinessActivityComplexesService {
}
async update(
user_id: string,
consumer_id: string,
business_activity_id: string,
id: string,
data: UpdateComplexDto,
@@ -71,8 +71,8 @@ export class BusinessActivityComplexesService {
where: {
business_activity: {
id: business_activity_id,
user: {
id: user_id,
consumer: {
id: consumer_id,
},
},
id,
@@ -74,7 +74,7 @@ export class AdminUsersService {
const { username, password, license, ...rest } = data
const dataToCreate: ConsumerCreateInput = {
...rest,
accounts: {
consumer_accounts: {
create: {
role: ConsumerRole.OWNER,
account: {
@@ -22,9 +22,9 @@ export class AccountsService {
},
} as PartnerAccountSelect
async findAll(partnerId: string) {
async findAll(partner_id: string) {
const accounts = await this.prisma.partnerAccount.findMany({
where: { user_id: partnerId },
where: { partner_id },
select: this.defaultSelect,
})
return ResponseMapper.list(accounts)
@@ -55,7 +55,7 @@ export class AccountsService {
type: AccountType.PARTNER,
},
},
user: {
partner: {
connect: {
id: partnerId,
},
@@ -46,7 +46,7 @@ export class PartnersService {
data: {
...rest,
status: PartnerStatus.ACTIVE,
accounts: {
partner_accounts: {
create: {
role: PartnerRole.OWNER,
account: {
@@ -27,7 +27,7 @@ export class ProvidersService {
const provider = await this.prisma.provider.create({
data: {
...rest,
accounts: {
provider_accounts: {
create: {
role: ProviderRole.OWNER,
account: {
@@ -1,24 +0,0 @@
import { ApiProperty, PartialType } from '@nestjs/swagger'
import { IsEnum, IsOptional, IsString } from 'class-validator'
import { AccountStatus, AccountType } from 'generated/prisma/enums'
export class CreateAccountDto {
@IsString()
@ApiProperty()
username: string
@IsString()
@ApiProperty()
password: string
@IsEnum(AccountType)
@ApiProperty({ enum: AccountType })
type: AccountType
}
export class UpdateAccountDto extends PartialType(CreateAccountDto) {
@IsOptional()
@IsEnum(AccountStatus)
@ApiProperty({ enum: AccountStatus })
status?: AccountStatus
}
@@ -1,20 +0,0 @@
import { Body, Controller, Get, Param, Post } from '@nestjs/common'
import { ApiTags } from '@nestjs/swagger'
import { CreateAccountDto } from './dto/permission.dto'
import { AccountsService } from './permissions.service'
@ApiTags('AdminAccounts')
@Controller('admin/users/:userId/accounts/:accountId/permissions')
export class AccountPermissionsController {
constructor(private readonly service: AccountsService) {}
@Get()
async findAll(@Param('userId') userId: string, @Param('accountId') accountId: string) {
return this.service.findAll(userId, accountId)
}
@Post()
async create(@Param('userId') userId: string, @Body() data: CreateAccountDto) {
return this.service.create(userId, data)
}
}
@@ -1,12 +0,0 @@
import { PrismaModule } from '@/prisma/prisma.module'
import { Module } from '@nestjs/common'
import { AccountPermissionsController } from './permissions.controller'
import { AccountsService } from './permissions.service'
@Module({
imports: [PrismaModule],
controllers: [AccountPermissionsController],
providers: [AccountsService],
exports: [AccountsService],
})
export class AdminAccountPermissionsModule {}
@@ -1,116 +0,0 @@
import { PrismaService } from '@/prisma/prisma.service'
import { Injectable } from '@nestjs/common'
import { ResponseMapper } from 'common/response/response-mapper'
import { CreateAccountDto } from './dto/permission.dto'
@Injectable()
export class AccountsService {
constructor(private readonly prisma: PrismaService) {}
async findAll(userId: string, account_id: string) {
const businessActivities = await this.prisma.businessActivity.findMany({
where: {
user_id: userId,
},
select: {
id: true,
name: true,
complexes: {
select: {
id: true,
name: true,
pos_list: {
select: {
id: true,
name: true,
},
},
},
},
},
})
const permissions = await this.prisma.permissionConsumer.findMany({
where: {
account_id,
},
select: {
posPermissions: {
select: {
pos_id: true,
role: true,
},
},
businessPermissions: {
select: {
business_id: true,
role: true,
},
},
complexPermissions: {
select: {
complex_id: true,
role: true,
},
},
},
})
const businesses = [] as any
const complexes = [] as any
const poses = [] as any
businessActivities.forEach(businessActivity => {
businesses.push({
id: businessActivity.id,
name: businessActivity.name,
hasAccess: false,
role: null,
})
businessActivity.complexes.forEach(complex => {
complexes.push({
id: complex.id,
name: complex.name,
hasAccess: false,
role: null,
})
complex.pos_list.forEach(pos => {
poses.push({
id: pos.id,
name: pos.name,
hasAccess: false,
role: null,
})
})
})
})
permissions.forEach(permission => {
permission.posPermissions.forEach(posPermission => {
poses.map(pos => {
if (pos.id === posPermission.pos_id) {
return {
...pos,
role: posPermission.role,
hasAccess: true,
}
}
return pos
})
})
})
}
async findOne(id: string) {
const account = await this.prisma.account.findUnique({
where: { id },
})
return ResponseMapper.single(account)
}
async create(userId: string, data: CreateAccountDto) {
return ResponseMapper.create({})
}
}