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