diff --git a/src/modules/notifications/entities/notification.entity.ts b/src/modules/notifications/entities/notification.entity.ts new file mode 100644 index 0000000..b960421 --- /dev/null +++ b/src/modules/notifications/entities/notification.entity.ts @@ -0,0 +1,18 @@ +import { BaseEntity } from "src/common/entities/base.entity"; +import { Organ } from "src/modules/organ/entities/organ.entity"; +import { User } from "src/modules/users/entities/user.entity"; +import { Column, Entity, ManyToOne } from "typeorm"; + +@Entity('notifications') +export class AppNotification extends BaseEntity { + @Column({ + type: 'boolean' + }) + isRead: boolean; + + @ManyToOne(() => User, (user) => user.notifications) + receiver: User; + + @ManyToOne(() => Organ, (organ) => organ.sentNotifications) + senderOrgan: Organ; +} \ No newline at end of file diff --git a/src/modules/notifications/notification.controller.ts b/src/modules/notifications/notification.controller.ts new file mode 100644 index 0000000..7d38a03 --- /dev/null +++ b/src/modules/notifications/notification.controller.ts @@ -0,0 +1,4 @@ +import { Controller } from "@nestjs/common"; + +@Controller('notification') +export class NotificationController {} \ No newline at end of file diff --git a/src/modules/notifications/notification.module.ts b/src/modules/notifications/notification.module.ts index c458ecf..a08230e 100644 --- a/src/modules/notifications/notification.module.ts +++ b/src/modules/notifications/notification.module.ts @@ -6,6 +6,8 @@ import { SmsProcessor } from './processors/sms.processor'; import { SMS_CONFIG, SMS_QUEUE } from './constants'; import { smsConfigsProvider } from 'src/config/sms.config'; import { HttpModule } from '@nestjs/axios'; +import { NotificationController } from './notification.controller'; +import { NotificationService } from './providers/notification.service'; @Module({ imports: [ @@ -14,10 +16,16 @@ import { HttpModule } from '@nestjs/axios'; name: SMS_QUEUE, }), ], - providers: [SmsService, smsConfigsProvider, SmsProducer, SmsProcessor], - exports: [SmsProducer, SMS_CONFIG], + controllers: [NotificationController], + providers: [ + SmsService, + smsConfigsProvider, + SmsProducer, + SmsProcessor, + NotificationService, + ], + exports: [SmsProducer, SMS_CONFIG, NotificationService], }) export class NotificationModule {} export { SMS_QUEUE }; - diff --git a/src/modules/notifications/providers/notification.service.ts b/src/modules/notifications/providers/notification.service.ts new file mode 100644 index 0000000..9418d47 --- /dev/null +++ b/src/modules/notifications/providers/notification.service.ts @@ -0,0 +1,4 @@ +import { Injectable } from "@nestjs/common"; + +@Injectable() +export class NotificationService {} \ No newline at end of file diff --git a/src/modules/organ/entities/organ.entity.ts b/src/modules/organ/entities/organ.entity.ts index 6551589..b2a10e4 100644 --- a/src/modules/organ/entities/organ.entity.ts +++ b/src/modules/organ/entities/organ.entity.ts @@ -1,5 +1,6 @@ import { BaseEntity } from 'src/common/entities/base.entity'; import { Complaint } from 'src/modules/complaint/entities/complaint.entity'; +import { AppNotification } from 'src/modules/notifications/entities/notification.entity'; import { Column, Entity, OneToMany } from 'typeorm'; @Entity('organs') @@ -17,4 +18,7 @@ export class Organ extends BaseEntity { @OneToMany(() => Complaint, (complaint) => complaint.organ) complaints: Complaint[]; + + @OneToMany(() => AppNotification, (notif) => notif.senderOrgan) + sentNotifications: AppNotification; } diff --git a/src/modules/users/entities/user.entity.ts b/src/modules/users/entities/user.entity.ts index 67d48f4..8cc55a0 100644 --- a/src/modules/users/entities/user.entity.ts +++ b/src/modules/users/entities/user.entity.ts @@ -1,8 +1,9 @@ -import { Entity, Column, ManyToMany, JoinTable, OneToMany } from 'typeorm'; +import { Entity, Column, OneToMany } from 'typeorm'; import { BaseEntity } from 'src/common/entities/base.entity'; import { Exclude } from 'class-transformer'; import { UserRole } from './user-role.entity'; import { Complaint } from 'src/modules/complaint/entities/complaint.entity'; +import { AppNotification } from 'src/modules/notifications/entities/notification.entity'; @Entity('users') export class User extends BaseEntity { @@ -39,4 +40,7 @@ export class User extends BaseEntity { cascade: true }) complaints: Complaint[]; + + @OneToMany(() => AppNotification, (notif) => notif.receiver) + notifications: AppNotification[]; }