Add functionality to retrieve invoices by user in invoice module

master
nicekid1 2 months ago
parent cb3eaeb425
commit be0f01bc1a
  1. 20
      src/invoice/invoice.controller.ts
  2. 26
      src/invoice/invoice.service.ts

@ -1,13 +1,17 @@
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { InvoiceService } from './invoice.service';
import { Invoice } from './entities/invoice.entity';
import { Controller, Get, Post, Body, Patch, Param, Delete } from "@nestjs/common";
import { InvoiceService } from "./invoice.service";
import { Invoice } from "./entities/invoice.entity";
@Controller('invoice')
@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)
@Post("create")
async createInvoice(@Body() body: { userId: number; totalAmount: number }): Promise<Invoice> {
const { userId, totalAmount } = body;
return this.invoiceService.createInvoice(userId, totalAmount);
}
@Get(":userId")
async getInvoices(@Param("userId") userId: number): Promise<any> {
return this.invoiceService.getInvoicesByUser(userId);
}
}

@ -1,6 +1,7 @@
import { HttpException, HttpStatus, Injectable } from "@nestjs/common";
import { InjectModel } from "@nestjs/sequelize";
import { Invoice } from "./entities/invoice.entity";
import { where } from "sequelize";
@Injectable()
export class InvoiceService {
@ -23,4 +24,29 @@ export class InvoiceService {
throw new HttpException("An error occurred while creating the invoice.", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
async getInvoicesByUser(userId: number): Promise<Invoice[]> {
try {
if (!userId) {
throw new HttpException('User ID is required.', HttpStatus.BAD_REQUEST);
}
const invoices = await this.invoiceModel.findAll({
where: { userId },
});
if (!invoices || invoices.length === 0) {
throw new HttpException('No invoices found for this user.', HttpStatus.NOT_FOUND);
}
return invoices;
} catch (error) {
if (error instanceof HttpException) {
throw error;
}
throw new HttpException(
'An error occurred while retrieving invoices.',
HttpStatus.INTERNAL_SERVER_ERROR,
);
}
}
}

Loading…
Cancel
Save