Notifications

This commit is contained in:
Bastian Wagner
2025-01-20 15:15:41 +01:00
parent adca81444e
commit 2674ec0d24
25 changed files with 126 additions and 35 deletions

View File

@@ -6,8 +6,8 @@ import {
OneToMany,
PrimaryGeneratedColumn,
} from 'typeorm';
import { User } from './user.entity';
import { KeySystem } from './system.entity';
import { User } from './user';
@Entity()
export class Activity {

View File

@@ -1,8 +1,7 @@
export * from './sso.user.entity';
export * from './user.entity';
export * from './role.entity';
export * from './cylinder.entity';
export * from './key.entity';
export * from './customer.entity';
export * from './key-handout.entity';
export * from './activity.entity';
export * from './user';

View File

@@ -8,7 +8,7 @@ import {
} from 'typeorm';
import { Key } from './key.entity';
import { Customer } from './customer.entity';
import { User } from './user.entity';
import { User } from './user';
@Entity()
export class KeyHandout {

View File

@@ -1,4 +1,5 @@
import {
AfterLoad,
Column,
CreateDateColumn,
Entity,
@@ -25,9 +26,16 @@ export class EmailLog {
@Column({ name: 'type', type: 'text',})
type: EmailEvent;
eventName: string;
@ManyToOne(() => KeySystem, { nullable: true })
system: KeySystem;
@Column({type: 'boolean'})
success: boolean;
@AfterLoad()
setType() {
this.eventName = EmailEvent[this.type]
}
}

View File

@@ -4,7 +4,7 @@ import {
OneToMany,
PrimaryGeneratedColumn,
} from 'typeorm';
import { User } from './user.entity';
import { User } from './user';
@Entity()
export class Role {

View File

@@ -9,8 +9,8 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { IKeySystem } from '../interface';
import { User } from './user.entity';
import { Cylinder } from './cylinder.entity';
import { User } from './user';
@Entity()
export class KeySystem implements IKeySystem {

View File

@@ -0,0 +1,2 @@
export * from './sso.user.entity';
export * from './user.entity';

View File

@@ -1,5 +1,9 @@
import { Exclude, Transform } from 'class-transformer';
import { IsEmail } from 'class-validator';
import { IUser } from 'src/model/interface';
import {
BeforeInsert,
BeforeUpdate,
Column,
CreateDateColumn,
DeleteDateColumn,
@@ -10,11 +14,10 @@ import {
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { IUser } from '../interface';
import { Role } from '../role.entity';
import { KeySystem } from '../system.entity';
import { SSOUser } from './sso.user.entity';
import { IsEmail } from 'class-validator';
import { Role } from './role.entity';
import { KeySystem } from './system.entity';
import { UserSettings } from './user.settings.entity';
@Entity()
export class User implements IUser {
@@ -55,6 +58,18 @@ export class User implements IUser {
@DeleteDateColumn()
deletedAt: Date;
@OneToOne(() => UserSettings, (settings) => settings.user, { cascade: true })
settings: UserSettings;
accessToken?: string;
refreshToken?: string;
@BeforeInsert()
@BeforeUpdate()
createSettings() {
if (this.settings == null) {
this.settings = {} as any;
}
}
}

View File

@@ -0,0 +1,25 @@
import { Column, Entity, JoinColumn, OneToOne, PrimaryGeneratedColumn } from "typeorm";
import { User } from "./user.entity";
@Entity()
export class UserSettings {
@PrimaryGeneratedColumn('uuid')
id: string;
@OneToOne(() => User, (user) => user.settings)
@JoinColumn()
user: User;
@Column({ name: 'send_system_access_notification', default: true, type: 'boolean'})
sendSystemAccessMails: boolean;
@Column({ name: 'send_user_disabled_notification', default: true, type: 'boolean'})
sendUserDisabledMails: boolean;
@Column({ name: 'send_system_update_notification', default: true, type: 'boolean'})
sendSystemUpdateMails: boolean;
}

View File

@@ -1,4 +1,5 @@
import { Role } from '../entitites';
import { UserSettings } from '../entitites/user/user.settings.entity';
export interface IUser {
id: string;
@@ -13,4 +14,6 @@ export interface IUser {
deletedAt?: Date;
role?: string | Role;
settings?: UserSettings;
}

View File

@@ -6,3 +6,4 @@ export * from './cylinder.repository';
export * from './key.repository';
export * from './customer.repository';
export * from './activity.repository';
export * from './user.settings.repository';

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { UserSettings } from '../entitites/user/user.settings.entity';
@Injectable()
export class UserSettingsRepository extends Repository<UserSettings> {
constructor(dataSource: DataSource) {
super(UserSettings, dataSource.createEntityManager());
}
}