From 1b83ec7c728381f0468853bc1535af6fbcb4bd10 Mon Sep 17 00:00:00 2001 From: authenticeasy-sys Date: Sun, 29 Mar 2026 13:17:09 +0100 Subject: [PATCH] push code updated --- ...n-moderator-account-settings.controller.ts | 44 +++++++++++++++++++ ...admin-moderator-account-settings.module.ts | 9 ++++ ...dmin-moderator-account-settings.service.ts | 41 +++++++++++++++++ backend/menu/badges-nft.controller.ts | 44 +++++++++++++++++++ backend/menu/badges-nft.module.ts | 9 ++++ backend/menu/badges-nft.service.ts | 41 +++++++++++++++++ .../menu/certificate-download.controller.ts | 44 +++++++++++++++++++ backend/menu/certificate-download.module.ts | 9 ++++ backend/menu/certificate-download.service.ts | 41 +++++++++++++++++ backend/menu/controller.js | 6 +++ backend/menu/index.js | 9 ++++ backend/menu/route.js | 7 +++ backend/menu/service.js | 5 +++ 13 files changed, 309 insertions(+) create mode 100644 backend/menu/admin-moderator-account-settings.controller.ts create mode 100644 backend/menu/admin-moderator-account-settings.module.ts create mode 100644 backend/menu/admin-moderator-account-settings.service.ts create mode 100644 backend/menu/badges-nft.controller.ts create mode 100644 backend/menu/badges-nft.module.ts create mode 100644 backend/menu/badges-nft.service.ts create mode 100644 backend/menu/certificate-download.controller.ts create mode 100644 backend/menu/certificate-download.module.ts create mode 100644 backend/menu/certificate-download.service.ts create mode 100644 backend/menu/controller.js create mode 100644 backend/menu/index.js create mode 100644 backend/menu/route.js create mode 100644 backend/menu/service.js diff --git a/backend/menu/admin-moderator-account-settings.controller.ts b/backend/menu/admin-moderator-account-settings.controller.ts new file mode 100644 index 0000000..9add5ff --- /dev/null +++ b/backend/menu/admin-moderator-account-settings.controller.ts @@ -0,0 +1,44 @@ +import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common'; +import { AdminModeratorAccountSettingsService } from './admin-moderator-account-settings.service'; +import { CreateAdminModeratorAccountSettingsDto } from './dto/create-admin-moderator-account-settings.dto'; +import { UpdateAdminModeratorAccountSettingsDto } from './dto/update-admin-moderator-account-settings.dto'; +import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; +import { RolesGuard } from '../common/guards/roles.guard'; +import { Role } from '../common/enums/role.enum'; +import { Roles } from '../common/decorators/roles.decorator'; + +@Controller('admin-moderator/account-settings') +export class AdminModeratorAccountSettingsController { + constructor(private readonly service: AdminModeratorAccountSettingsService) {} + + @Get() + findAll() { + return this.service.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.service.findOne(id); + } + + @Post() + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR, Role.TUTOR) + create(@Body() payload: CreateAdminModeratorAccountSettingsDto) { + return this.service.create(payload); + } + + @Patch(':id') + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR, Role.TUTOR) + update(@Param('id') id: string, @Body() payload: UpdateAdminModeratorAccountSettingsDto) { + return this.service.update(id, payload); + } + + @Delete(':id') + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR) + remove(@Param('id') id: string) { + return this.service.remove(id); + } +} diff --git a/backend/menu/admin-moderator-account-settings.module.ts b/backend/menu/admin-moderator-account-settings.module.ts new file mode 100644 index 0000000..4ddcbc0 --- /dev/null +++ b/backend/menu/admin-moderator-account-settings.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { AdminModeratorAccountSettingsController } from './admin-moderator-account-settings.controller'; +import { AdminModeratorAccountSettingsService } from './admin-moderator-account-settings.service'; + +@Module({ + controllers: [AdminModeratorAccountSettingsController], + providers: [AdminModeratorAccountSettingsService], +}) +export class AdminModeratorAccountSettingsModule {} diff --git a/backend/menu/admin-moderator-account-settings.service.ts b/backend/menu/admin-moderator-account-settings.service.ts new file mode 100644 index 0000000..4baf912 --- /dev/null +++ b/backend/menu/admin-moderator-account-settings.service.ts @@ -0,0 +1,41 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateAdminModeratorAccountSettingsDto } from './dto/create-admin-moderator-account-settings.dto'; +import { UpdateAdminModeratorAccountSettingsDto } from './dto/update-admin-moderator-account-settings.dto'; + +@Injectable() +export class AdminModeratorAccountSettingsService { + private readonly items: Array<{ id: string } & CreateAdminModeratorAccountSettingsDto> = []; + + findAll() { + return this.items; + } + + findOne(id: string) { + const item = this.items.find((entry) => entry.id === id); + if (!item) { + throw new NotFoundException('AdminModeratorAccountSettings item not found'); + } + return item; + } + + create(payload: CreateAdminModeratorAccountSettingsDto) { + const created = { id: crypto.randomUUID(), ...payload }; + this.items.push(created); + return created; + } + + update(id: string, payload: UpdateAdminModeratorAccountSettingsDto) { + const item = this.findOne(id); + Object.assign(item, payload); + return item; + } + + remove(id: string) { + const index = this.items.findIndex((entry) => entry.id === id); + if (index === -1) { + throw new NotFoundException('AdminModeratorAccountSettings item not found'); + } + this.items.splice(index, 1); + return { id, deleted: true }; + } +} diff --git a/backend/menu/badges-nft.controller.ts b/backend/menu/badges-nft.controller.ts new file mode 100644 index 0000000..586664e --- /dev/null +++ b/backend/menu/badges-nft.controller.ts @@ -0,0 +1,44 @@ +import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common'; +import { BadgesNftService } from './badges-nft.service'; +import { CreateBadgesNftDto } from './dto/create-badges-nft.dto'; +import { UpdateBadgesNftDto } from './dto/update-badges-nft.dto'; +import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; +import { RolesGuard } from '../common/guards/roles.guard'; +import { Role } from '../common/enums/role.enum'; +import { Roles } from '../common/decorators/roles.decorator'; + +@Controller('badges-nft') +export class BadgesNftController { + constructor(private readonly service: BadgesNftService) {} + + @Get() + findAll() { + return this.service.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.service.findOne(id); + } + + @Post() + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR, Role.TUTOR) + create(@Body() payload: CreateBadgesNftDto) { + return this.service.create(payload); + } + + @Patch(':id') + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR, Role.TUTOR) + update(@Param('id') id: string, @Body() payload: UpdateBadgesNftDto) { + return this.service.update(id, payload); + } + + @Delete(':id') + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR) + remove(@Param('id') id: string) { + return this.service.remove(id); + } +} diff --git a/backend/menu/badges-nft.module.ts b/backend/menu/badges-nft.module.ts new file mode 100644 index 0000000..f4e229d --- /dev/null +++ b/backend/menu/badges-nft.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { BadgesNftController } from './badges-nft.controller'; +import { BadgesNftService } from './badges-nft.service'; + +@Module({ + controllers: [BadgesNftController], + providers: [BadgesNftService], +}) +export class BadgesNftModule {} diff --git a/backend/menu/badges-nft.service.ts b/backend/menu/badges-nft.service.ts new file mode 100644 index 0000000..786d5c1 --- /dev/null +++ b/backend/menu/badges-nft.service.ts @@ -0,0 +1,41 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateBadgesNftDto } from './dto/create-badges-nft.dto'; +import { UpdateBadgesNftDto } from './dto/update-badges-nft.dto'; + +@Injectable() +export class BadgesNftService { + private readonly items: Array<{ id: string } & CreateBadgesNftDto> = []; + + findAll() { + return this.items; + } + + findOne(id: string) { + const item = this.items.find((entry) => entry.id === id); + if (!item) { + throw new NotFoundException('BadgesNft item not found'); + } + return item; + } + + create(payload: CreateBadgesNftDto) { + const created = { id: crypto.randomUUID(), ...payload }; + this.items.push(created); + return created; + } + + update(id: string, payload: UpdateBadgesNftDto) { + const item = this.findOne(id); + Object.assign(item, payload); + return item; + } + + remove(id: string) { + const index = this.items.findIndex((entry) => entry.id === id); + if (index === -1) { + throw new NotFoundException('BadgesNft item not found'); + } + this.items.splice(index, 1); + return { id, deleted: true }; + } +} diff --git a/backend/menu/certificate-download.controller.ts b/backend/menu/certificate-download.controller.ts new file mode 100644 index 0000000..9b534ef --- /dev/null +++ b/backend/menu/certificate-download.controller.ts @@ -0,0 +1,44 @@ +import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common'; +import { CertificateDownloadService } from './certificate-download.service'; +import { CreateCertificateDownloadDto } from './dto/create-certificate-download.dto'; +import { UpdateCertificateDownloadDto } from './dto/update-certificate-download.dto'; +import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; +import { RolesGuard } from '../common/guards/roles.guard'; +import { Role } from '../common/enums/role.enum'; +import { Roles } from '../common/decorators/roles.decorator'; + +@Controller('certificates/download') +export class CertificateDownloadController { + constructor(private readonly service: CertificateDownloadService) {} + + @Get() + findAll() { + return this.service.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.service.findOne(id); + } + + @Post() + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR, Role.TUTOR) + create(@Body() payload: CreateCertificateDownloadDto) { + return this.service.create(payload); + } + + @Patch(':id') + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR, Role.TUTOR) + update(@Param('id') id: string, @Body() payload: UpdateCertificateDownloadDto) { + return this.service.update(id, payload); + } + + @Delete(':id') + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles(Role.ADMIN, Role.MODERATOR) + remove(@Param('id') id: string) { + return this.service.remove(id); + } +} diff --git a/backend/menu/certificate-download.module.ts b/backend/menu/certificate-download.module.ts new file mode 100644 index 0000000..2dfd5f2 --- /dev/null +++ b/backend/menu/certificate-download.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { CertificateDownloadController } from './certificate-download.controller'; +import { CertificateDownloadService } from './certificate-download.service'; + +@Module({ + controllers: [CertificateDownloadController], + providers: [CertificateDownloadService], +}) +export class CertificateDownloadModule {} diff --git a/backend/menu/certificate-download.service.ts b/backend/menu/certificate-download.service.ts new file mode 100644 index 0000000..b3c687c --- /dev/null +++ b/backend/menu/certificate-download.service.ts @@ -0,0 +1,41 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateCertificateDownloadDto } from './dto/create-certificate-download.dto'; +import { UpdateCertificateDownloadDto } from './dto/update-certificate-download.dto'; + +@Injectable() +export class CertificateDownloadService { + private readonly items: Array<{ id: string } & CreateCertificateDownloadDto> = []; + + findAll() { + return this.items; + } + + findOne(id: string) { + const item = this.items.find((entry) => entry.id === id); + if (!item) { + throw new NotFoundException('CertificateDownload item not found'); + } + return item; + } + + create(payload: CreateCertificateDownloadDto) { + const created = { id: crypto.randomUUID(), ...payload }; + this.items.push(created); + return created; + } + + update(id: string, payload: UpdateCertificateDownloadDto) { + const item = this.findOne(id); + Object.assign(item, payload); + return item; + } + + remove(id: string) { + const index = this.items.findIndex((entry) => entry.id === id); + if (index === -1) { + throw new NotFoundException('CertificateDownload item not found'); + } + this.items.splice(index, 1); + return { id, deleted: true }; + } +} diff --git a/backend/menu/controller.js b/backend/menu/controller.js new file mode 100644 index 0000000..4de1dcb --- /dev/null +++ b/backend/menu/controller.js @@ -0,0 +1,6 @@ +const { createIssueController } = require('../../../common/create-issue-module'); +const { issue_5_course_performance_leaderboardService } = require('./service'); + +const issue_5_course_performance_leaderboardController = createIssueController(issue_5_course_performance_leaderboardService); + +module.exports = { issue_5_course_performance_leaderboardController }; diff --git a/backend/menu/index.js b/backend/menu/index.js new file mode 100644 index 0000000..206aa66 --- /dev/null +++ b/backend/menu/index.js @@ -0,0 +1,9 @@ +const { issue_5_course_performance_leaderboardRoute } = require('./route'); + +const issue_5_course_performance_leaderboardModule = { + key: 'course-performance-leaderboard', + basePath: '/courses/performance-leaderboard', + router: issue_5_course_performance_leaderboardRoute, +}; + +module.exports = { issue_5_course_performance_leaderboardModule }; diff --git a/backend/menu/route.js b/backend/menu/route.js new file mode 100644 index 0000000..394e32a --- /dev/null +++ b/backend/menu/route.js @@ -0,0 +1,7 @@ +const express = require('express'); +const { createIssueRoute } = require('../../../common/create-issue-module'); +const { issue_8_gamification_points_systemController } = require('./controller'); + +const issue_8_gamification_points_systemRoute = createIssueRoute(express, issue_8_gamification_points_systemController); + +module.exports = { issue_8_gamification_points_systemRoute }; diff --git a/backend/menu/service.js b/backend/menu/service.js new file mode 100644 index 0000000..1f67bdf --- /dev/null +++ b/backend/menu/service.js @@ -0,0 +1,5 @@ +const { createIssueService } = require('../../../common/create-issue-module'); + +const issue_5_course_performance_leaderboardService = createIssueService('course-performance-leaderboard'); + +module.exports = { issue_5_course_performance_leaderboardService };