admin
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-07-21 16:04:39 +03:30
parent 17a9c08989
commit d4212ac5e4
3 changed files with 38 additions and 2 deletions
@@ -2,6 +2,7 @@ import { Controller, Post, Body, Get, UseGuards, Patch, Param, Delete } from '@n
import { AdminService } from '../providers/admin.service';
import { CreateAdminDto } from '../dto/create-admin.dto';
import { UpdateAdminDto } from '../dto/update-admin.dto';
import { UpdateAdminMeDto } from '../dto/update-admin-me.dto';
import { ApiTags, ApiOperation, ApiBearerAuth } from '@nestjs/swagger';
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
import { AdminId } from 'src/common/decorators/admin-id.decorator';
@@ -38,13 +39,18 @@ export class AdminController {
}
@Get('admin/admins/me')
@Permissions(PermissionEnum.MANAGE_ADMINS)
@ApiOperation({ summary: 'admin' })
@ApiOperation({ summary: 'Get current authenticated admin profile' })
async getMe(@AdminId() adminId: string,) {
const admin = await this.adminService.findById(adminId,);
return admin;
}
@Patch('admin/admins/me')
@ApiOperation({ summary: 'Update current authenticated admin profile' })
updateMe(@AdminId() adminId: string, @Body() dto: UpdateAdminMeDto,): Promise<Admin> {
return this.adminService.updateMe(adminId, dto);
}
@Get('admin/dashboard/counts')
@ApiOperation({ summary: 'Get dashboard entity counts for admin panel' })
getDashboardCounts() {
@@ -0,0 +1,25 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsMobilePhone, IsOptional, IsString } from 'class-validator';
export class UpdateAdminMeDto {
@ApiProperty({ description: 'Mobile phone number', required: false })
@IsOptional()
@IsString()
@IsMobilePhone('fa-IR')
phone?: string;
@ApiProperty({ description: 'First name', required: false })
@IsOptional()
@IsString()
firstName?: string;
@ApiProperty({ description: 'Last name', required: false })
@IsOptional()
@IsString()
lastName?: string;
@ApiProperty({ description: 'Avatar S3 key', required: false })
@IsOptional()
@IsString()
avatarUrl?: string;
}
@@ -3,6 +3,7 @@ import { Admin } from '../entities/admin.entity';
import { Role } from '../../roles/entities/role.entity';
import { EntityManager } from '@mikro-orm/postgresql';
import { UpdateAdminDto } from '../dto/update-admin.dto';
import { UpdateAdminMeDto } from '../dto/update-admin-me.dto';
import { CreateAdminDto } from '../dto/create-admin.dto';
import { AdminRepository } from '../repositories/admin.repository';
import { RoleRepository } from 'src/modules/roles/respository/role.repository';
@@ -73,6 +74,10 @@ export class AdminService {
return this.adminRepository.find({}, { populate: ['role'] });
}
async updateMe(adminId: string, dto: UpdateAdminMeDto): Promise<Admin> {
return this.update(adminId, dto);
}
async update(adminId: string, dto: UpdateAdminDto): Promise<Admin> {
const admin = await this.adminRepository.findOne(
{ id: adminId },