Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions backend/menu/admin-moderator-account-settings.controller.ts
Original file line number Diff line number Diff line change
@@ -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);
}
}
9 changes: 9 additions & 0 deletions backend/menu/admin-moderator-account-settings.module.ts
Original file line number Diff line number Diff line change
@@ -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 {}
41 changes: 41 additions & 0 deletions backend/menu/admin-moderator-account-settings.service.ts
Original file line number Diff line number Diff line change
@@ -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 };
}
}
44 changes: 44 additions & 0 deletions backend/menu/badges-nft.controller.ts
Original file line number Diff line number Diff line change
@@ -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);
}
}
9 changes: 9 additions & 0 deletions backend/menu/badges-nft.module.ts
Original file line number Diff line number Diff line change
@@ -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 {}
41 changes: 41 additions & 0 deletions backend/menu/badges-nft.service.ts
Original file line number Diff line number Diff line change
@@ -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 };
}
}
44 changes: 44 additions & 0 deletions backend/menu/certificate-download.controller.ts
Original file line number Diff line number Diff line change
@@ -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);
}
}
9 changes: 9 additions & 0 deletions backend/menu/certificate-download.module.ts
Original file line number Diff line number Diff line change
@@ -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 {}
41 changes: 41 additions & 0 deletions backend/menu/certificate-download.service.ts
Original file line number Diff line number Diff line change
@@ -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 };
}
}
6 changes: 6 additions & 0 deletions backend/menu/controller.js
Original file line number Diff line number Diff line change
@@ -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 };
9 changes: 9 additions & 0 deletions backend/menu/index.js
Original file line number Diff line number Diff line change
@@ -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 };
7 changes: 7 additions & 0 deletions backend/menu/route.js
Original file line number Diff line number Diff line change
@@ -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 };
5 changes: 5 additions & 0 deletions backend/menu/service.js
Original file line number Diff line number Diff line change
@@ -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 };
Loading