Handout management
This commit is contained in:
13
api/src/model/dto/handover-key.dto.ts
Normal file
13
api/src/model/dto/handover-key.dto.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { IsNotEmpty } from 'class-validator';
|
||||
import { Customer, Key } from '../entitites';
|
||||
|
||||
export class HandoverKeyDto {
|
||||
@IsNotEmpty()
|
||||
key: Key;
|
||||
|
||||
@IsNotEmpty()
|
||||
customer: Customer;
|
||||
|
||||
@IsNotEmpty()
|
||||
direction: 'out' | 'return';
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from './login.dto';
|
||||
export * from './auth-code.dto';
|
||||
export * from './create-key-system.dto';
|
||||
export * from './handover-key.dto';
|
||||
|
||||
33
api/src/model/entitites/customer.entity.ts
Normal file
33
api/src/model/entitites/customer.entity.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import { Key } from './key.entity';
|
||||
import { KeySystem } from './system.entity';
|
||||
import { ICustomer } from '../interface';
|
||||
|
||||
@Entity()
|
||||
export class Customer implements ICustomer {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ nullable: false, unique: false })
|
||||
name: string;
|
||||
|
||||
@OneToMany(() => Key, (key) => key.customer)
|
||||
keys: Key[];
|
||||
|
||||
@ManyToOne(() => KeySystem)
|
||||
system: KeySystem;
|
||||
|
||||
@CreateDateColumn({ name: 'created_at' })
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn({ name: 'updatet_at' })
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -4,3 +4,5 @@ export * from './role.entity';
|
||||
export * from './cylinder.entity';
|
||||
export * from './key.entity';
|
||||
export * from './key_activity.entity';
|
||||
export * from './customer.entity';
|
||||
export * from './key-handout.entity';
|
||||
|
||||
38
api/src/model/entitites/key-handout.entity.ts
Normal file
38
api/src/model/entitites/key-handout.entity.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import {
|
||||
BeforeInsert,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
import { Key } from './key.entity';
|
||||
import { Customer } from './customer.entity';
|
||||
|
||||
@Entity()
|
||||
export class KeyHandout {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@ManyToOne(() => Key)
|
||||
key: Key;
|
||||
|
||||
@Column()
|
||||
direction: 'out' | 'return';
|
||||
|
||||
@ManyToOne(() => Customer)
|
||||
customer: Customer;
|
||||
|
||||
@Column()
|
||||
timestamp: Date;
|
||||
|
||||
@CreateDateColumn()
|
||||
created: Date;
|
||||
|
||||
@BeforeInsert()
|
||||
insertTimestamp() {
|
||||
if (this.timestamp == null) {
|
||||
this.timestamp = new Date();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
} from 'typeorm';
|
||||
import { Cylinder } from './cylinder.entity';
|
||||
import { IKey } from '../interface/key.interface';
|
||||
import { Customer } from './customer.entity';
|
||||
|
||||
@Entity()
|
||||
export class Key implements IKey {
|
||||
@@ -26,6 +27,9 @@ export class Key implements IKey {
|
||||
@ManyToOne(() => Cylinder, (cylinder) => cylinder.keys)
|
||||
cylinder: Cylinder;
|
||||
|
||||
@ManyToOne(() => Customer, (customer) => customer.keys)
|
||||
customer: Customer;
|
||||
|
||||
@CreateDateColumn({ name: 'created_at' })
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
import { User } from './user.entity';
|
||||
import { IKey } from '../interface/key.interface';
|
||||
import { Cylinder } from './cylinder.entity';
|
||||
import { Customer } from './customer.entity';
|
||||
|
||||
@Entity()
|
||||
export class KeyActivity implements IKey {
|
||||
@@ -29,6 +30,9 @@ export class KeyActivity implements IKey {
|
||||
@ManyToOne(() => Cylinder)
|
||||
cylinder: Cylinder;
|
||||
|
||||
@ManyToOne(() => Customer)
|
||||
customer: Customer;
|
||||
|
||||
@CreateDateColumn({ name: 'created_at' })
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
11
api/src/model/interface/customer.interface.ts
Normal file
11
api/src/model/interface/customer.interface.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { Key } from 'readline';
|
||||
import { KeySystem } from '../entitites/system.entity';
|
||||
|
||||
export interface ICustomer {
|
||||
id: string;
|
||||
name: string;
|
||||
keys: Key[];
|
||||
system: KeySystem;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -2,3 +2,4 @@ export * from './user.interface';
|
||||
export * from './external-access-token.payload.interface';
|
||||
export * from './payload.interface';
|
||||
export * from './key-system.interface';
|
||||
export * from './customer.interface';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Cylinder } from '../entitites';
|
||||
import { Customer, Cylinder } from '../entitites';
|
||||
|
||||
export interface IKey {
|
||||
id: string;
|
||||
@@ -6,5 +6,6 @@ export interface IKey {
|
||||
nr: number;
|
||||
handedOut: boolean;
|
||||
cylinder: Cylinder;
|
||||
customer: Customer;
|
||||
createdAt: Date;
|
||||
}
|
||||
|
||||
10
api/src/model/repositories/customer.repository.ts
Normal file
10
api/src/model/repositories/customer.repository.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Repository, DataSource } from 'typeorm';
|
||||
import { Customer } from '../entitites';
|
||||
|
||||
@Injectable()
|
||||
export class CustomerRepository extends Repository<Customer> {
|
||||
constructor(dataSource: DataSource) {
|
||||
super(Customer, dataSource.createEntityManager());
|
||||
}
|
||||
}
|
||||
@@ -5,3 +5,4 @@ export * from './system.repository';
|
||||
export * from './cylinder.repository';
|
||||
export * from './key.repository';
|
||||
export * from './key_activity.repository';
|
||||
export * from './customer.repository';
|
||||
|
||||
10
api/src/model/repositories/key-handout.repository.ts
Normal file
10
api/src/model/repositories/key-handout.repository.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Repository, DataSource } from 'typeorm';
|
||||
import { KeyHandout } from '../entitites';
|
||||
|
||||
@Injectable()
|
||||
export class KeyHandoutRepository extends Repository<KeyHandout> {
|
||||
constructor(dataSource: DataSource) {
|
||||
super(KeyHandout, dataSource.createEntityManager());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user