add: commission setting

This commit is contained in:
ilham 2021-12-11 11:24:28 +07:00
parent 38dedebae7
commit d332935e85
8 changed files with 140 additions and 24 deletions

View File

@ -0,0 +1,48 @@
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { EntityNotFoundError, Repository } from 'typeorm';
import { Roles } from './entities/roles.entity';
import { InjectRepository } from '@nestjs/typeorm';
import { UpdateUserDto } from '../users/dto/update-user.dto';
import { CommissionSetting } from './entities/commission_setting.entity';
@Injectable()
export class CommissionService {
constructor(
@InjectRepository(CommissionSetting)
private commissionRepository: Repository<CommissionSetting>,
) {}
findAllRoles(page) {
return this.commissionRepository.findAndCount({
skip: page * 10,
take: 10,
order: {
version: 'DESC',
},
});
}
async updateCommission(id: string, request) {
try {
await this.commissionRepository.findOneOrFail(id);
} catch (e) {
if (e instanceof EntityNotFoundError) {
throw new HttpException(
{
statusCode: HttpStatus.NOT_FOUND,
error: 'Data not found',
},
HttpStatus.NOT_FOUND,
);
} else {
throw e;
}
}
const result = await this.commissionRepository.update(id, {
commission: request.value,
});
return this.commissionRepository.findOneOrFail(id);
}
}

View File

@ -11,13 +11,17 @@ import {
Query,
} from '@nestjs/common';
import { RoleService } from './roles.service';
import { CommissionService } from './commission.service';
@Controller({
path: 'config',
version: '1',
})
export class ConfigurableController {
constructor(private readonly roleService: RoleService) {}
constructor(
private readonly roleService: RoleService,
private readonly commissionService: CommissionService,
) {}
@Get('/roles')
async findAll(@Query('page') page: number) {
@ -31,6 +35,18 @@ export class ConfigurableController {
};
}
@Get('/commission')
async findCommission(@Query('page') page: number) {
const [data, count] = await this.commissionService.findAllRoles(page);
return {
data,
count,
statusCode: HttpStatus.OK,
message: 'success',
};
}
@Get(':id')
async findOne(@Param('id', ParseUUIDPipe) id: string) {
return {
@ -39,4 +55,16 @@ export class ConfigurableController {
message: 'success',
};
}
@Put('/commission/:id')
async updateCommission(
@Param('id', ParseUUIDPipe) id: string,
@Body() request,
) {
return {
data: await this.commissionService.updateCommission(id, request),
statusCode: HttpStatus.OK,
message: 'success',
};
}
}

View File

@ -3,11 +3,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { Roles } from './entities/roles.entity';
import { ConfigurableController } from './configurable.controller';
import { RoleService } from './roles.service';
import { CommissionService } from './commission.service';
import { CommissionSetting } from './entities/commission_setting.entity';
@Module({
imports: [TypeOrmModule.forFeature([Roles])],
imports: [TypeOrmModule.forFeature([Roles, CommissionSetting])],
controllers: [ConfigurableController],
providers: [RoleService],
exports: [RoleService]
providers: [RoleService, CommissionService],
exports: [RoleService],
})
export class ConfigurableModule {}

View File

@ -0,0 +1,16 @@
import { Entity, Column, OneToOne, JoinColumn } from 'typeorm';
import { BaseModel } from '../../config/basemodel.entity';
import { Roles } from './roles.entity';
@Entity()
export class CommissionSetting extends BaseModel {
@Column()
name: string;
@Column()
commission: number;
@OneToOne(() => Roles)
@JoinColumn()
role: Roles;
}

View File

@ -24,10 +24,15 @@ export enum coaType {
BANK,
EXPENSE,
ACCOUNT_RECEIVABLE,
ACCOUNT_PAYABLE
ACCOUNT_PAYABLE,
}
export enum balanceType {
DEBIT,
CREDIT,
}
export enum accountType {
PARTNER,
CUSTOMER,
}

View File

@ -0,0 +1,13 @@
import { Roles } from 'src/configurable/entities/roles.entity';
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm';
import { BaseModel } from '../../config/basemodel.entity';
import { hashPassword } from '../../helper/hash_password';
@Entity()
export class User extends BaseModel {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
}

View File

@ -1,18 +0,0 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
UpdateDateColumn,
DeleteDateColumn,
VersionColumn,
CreateDateColumn,
} from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
firstName: string;
}

View File

@ -0,0 +1,22 @@
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
import { accountType } from '../../helper/enum-list';
@Entity()
export class UserDetail {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@Column()
first_name: string;
@Column()
phone_number: string;
@Column({
nullable: true,
})
type: accountType;
}