diff --git a/database/migrations/1773307633674-AddCountToPlan.ts b/database/migrations/1773307633674-AddCountToPlan.ts new file mode 100644 index 0000000..0f2846c --- /dev/null +++ b/database/migrations/1773307633674-AddCountToPlan.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddCountToPlan1773307633674 implements MigrationInterface { + name = 'AddCountToPlan1773307633674' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "subscription_plan" ADD "count" integer`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "subscription_plan" DROP COLUMN "count"`); + } + +} diff --git a/database/migrations/1773343159070-DpagePermissionAdded.ts b/database/migrations/1773343159070-DpagePermissionAdded.ts new file mode 100644 index 0000000..dddc580 --- /dev/null +++ b/database/migrations/1773343159070-DpagePermissionAdded.ts @@ -0,0 +1,20 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class DpagePermissionAdded1773343159070 implements MigrationInterface { + name = 'DpagePermissionAdded1773343159070' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TYPE "public"."permission_name_enum" RENAME TO "permission_name_enum_old"`); + await queryRunner.query(`CREATE TYPE "public"."permission_name_enum" AS ENUM('services', 'customers', 'agents', 'developers', 'invoices', 'transactions', 'discounts', 'admins', 'tickets', 'criticisms', 'contacts_us', 'advertisements', 'announcements', 'blogs', 'learnings', 'logs', 'settings', 'bank_accounts', 'payments', 'manage_sso_clients', 'support_plan', 'dmenu', 'dkala', 'dpage')`); + await queryRunner.query(`ALTER TABLE "permission" ALTER COLUMN "name" TYPE "public"."permission_name_enum" USING "name"::"text"::"public"."permission_name_enum"`); + await queryRunner.query(`DROP TYPE "public"."permission_name_enum_old"`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TYPE "public"."permission_name_enum_old" AS ENUM('services', 'customers', 'agents', 'developers', 'invoices', 'transactions', 'discounts', 'admins', 'tickets', 'criticisms', 'contacts_us', 'advertisements', 'announcements', 'blogs', 'learnings', 'logs', 'settings', 'bank_accounts', 'payments', 'manage_sso_clients', 'support_plan', 'dmenu', 'dkala')`); + await queryRunner.query(`ALTER TABLE "permission" ALTER COLUMN "name" TYPE "public"."permission_name_enum_old" USING "name"::"text"::"public"."permission_name_enum_old"`); + await queryRunner.query(`DROP TYPE "public"."permission_name_enum"`); + await queryRunner.query(`ALTER TYPE "public"."permission_name_enum_old" RENAME TO "permission_name_enum"`); + } + +} diff --git a/src/modules/dpage/dpage.controller.ts b/src/modules/dpage/dpage.controller.ts index e9b477f..f6cfbc1 100644 --- a/src/modules/dpage/dpage.controller.ts +++ b/src/modules/dpage/dpage.controller.ts @@ -5,6 +5,9 @@ import { UserDec } from '../../common/decorators/user.decorator'; import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'; import { AuthGuards } from '../../common/decorators/auth-guard.decorator'; import { FindBusinessesDto } from './dto/find-businesses.dto'; +import { AdminRoute } from '../../common/decorators/admin.decorator'; +import { PermissionsDec } from '../../common/decorators/permission.decorator'; +import { PermissionEnum } from '../users/enums/permission.enum'; @Controller('dpage') @ApiTags('d-page') @@ -13,13 +16,19 @@ import { FindBusinessesDto } from './dto/find-businesses.dto'; export class DpageController { constructor(private readonly dpageService: DPageService) { } + //----------- user routes ------------------ + @Post('login') @ApiOperation({ summary: 'direct login' }) login(@Body() dto: LoginDto, @UserDec("id") userId: string) { return this.dpageService.loginToDpage(dto, userId); } + //------------------admin routes ------------------ + @Get('business/list') + @AdminRoute() + @PermissionsDec(PermissionEnum.DMENU) findAll(@Query() dto: FindBusinessesDto) { return this.dpageService.findAll(dto); } diff --git a/src/modules/subscriptions/entities/subscription.entity.ts b/src/modules/subscriptions/entities/subscription.entity.ts index 4ef88e6..dd59997 100755 --- a/src/modules/subscriptions/entities/subscription.entity.ts +++ b/src/modules/subscriptions/entities/subscription.entity.ts @@ -19,6 +19,9 @@ export class SubscriptionPlan extends BaseEntity { @Column({ type: "int", nullable: false }) duration: number; + @Column({ type: "int", nullable: true }) // برای پلن هایی که غیر زمانی هستن مثلا دی پیج + count?: number; + @Column({ type: "boolean", default: false }) isFree: boolean; diff --git a/src/modules/users/enums/permission.enum.ts b/src/modules/users/enums/permission.enum.ts index 2040139..73b8134 100755 --- a/src/modules/users/enums/permission.enum.ts +++ b/src/modules/users/enums/permission.enum.ts @@ -22,4 +22,5 @@ export enum PermissionEnum { SUPPORT_PLAN = "support_plan", DMENU = "dmenu", DKALA = "dkala", + DPAGE = "dpage" }