parent
e18858fd60
commit
cb3eaeb425
5 changed files with 67 additions and 0 deletions
@ -0,0 +1,14 @@ |
||||
import { Table, Model, Column, BelongsTo, ForeignKey } from "sequelize-typescript"; |
||||
import { User } from "../../users/entities/user.entity"; |
||||
import { Product } from "../../products/entities/product.entity"; |
||||
|
||||
@Table |
||||
export class Invoice extends Model<Invoice> { |
||||
@ForeignKey(() => User) |
||||
@Column |
||||
userId: number; |
||||
@BelongsTo(() => User) |
||||
user: User; |
||||
@Column |
||||
totalAmount: number; |
||||
} |
@ -0,0 +1,13 @@ |
||||
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; |
||||
import { InvoiceService } from './invoice.service'; |
||||
import { Invoice } from './entities/invoice.entity'; |
||||
|
||||
@Controller('invoice') |
||||
export class InvoiceController { |
||||
constructor(private readonly invoiceService: InvoiceService) {} |
||||
@Post('create') |
||||
async createInvoice(@Body() body:{userId:number, totalAmount:number}):Promise<Invoice>{ |
||||
const { userId, totalAmount} = body |
||||
return this.invoiceService.createInvoice(userId, totalAmount) |
||||
} |
||||
} |
@ -0,0 +1,12 @@ |
||||
import { Module } from '@nestjs/common'; |
||||
import { InvoiceService } from './invoice.service'; |
||||
import { InvoiceController } from './invoice.controller'; |
||||
import { SequelizeModule } from '@nestjs/sequelize'; |
||||
import { Invoice } from './entities/invoice.entity'; |
||||
|
||||
@Module({ |
||||
imports : [SequelizeModule.forFeature([Invoice])], |
||||
controllers: [InvoiceController], |
||||
providers: [InvoiceService], |
||||
}) |
||||
export class InvoiceModule {} |
@ -0,0 +1,26 @@ |
||||
import { HttpException, HttpStatus, Injectable } from "@nestjs/common"; |
||||
import { InjectModel } from "@nestjs/sequelize"; |
||||
import { Invoice } from "./entities/invoice.entity"; |
||||
|
||||
@Injectable() |
||||
export class InvoiceService { |
||||
constructor(@InjectModel(Invoice) private readonly invoiceModel: typeof Invoice) {} |
||||
|
||||
async createInvoice(userId: number, totalAmount: number): Promise<Invoice> { |
||||
try { |
||||
if (!userId) { |
||||
throw new HttpException("User id not found!", HttpStatus.BAD_REQUEST); |
||||
} |
||||
|
||||
const newInvoice = await this.invoiceModel.create({ userId, totalAmount }); |
||||
return newInvoice; |
||||
} catch (error) { |
||||
|
||||
if (error instanceof HttpException) { |
||||
throw error; |
||||
} |
||||
|
||||
throw new HttpException("An error occurred while creating the invoice.", HttpStatus.INTERNAL_SERVER_ERROR); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue