All files / src/domains/inventory/items/services item.service.ts

0% Statements 0/17
0% Branches 0/8
0% Functions 0/4
0% Lines 0/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                                                                       
import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { InventoryItem } from '../schemas/item.schema';
 
@Injectable()
export class ItemService {
  constructor(
    @InjectModel(InventoryItem.name)
    private readonly itemModel: Model<InventoryItem>
  ) {}
 
  async createItem(tenantId: string, data: any): Promise<InventoryItem> {
    const existing = await this.itemModel.findOne({ tenantId, itemCode: data.itemCode }).exec();
    if (existing) {
      throw new BadRequestException(`Item with code ${data.itemCode} already exists`);
    }
 
    return this.itemModel.create({
      ...data,
      tenantId,
      active: true,
    });
  }
 
  async getItems(tenantId: string): Promise<InventoryItem[]> {
    return this.itemModel.find({ tenantId }).exec();
  }
 
  async getItemByCode(tenantId: string, itemCode: string): Promise<InventoryItem> {
    const item = await this.itemModel.findOne({ tenantId, itemCode }).exec();
    if (!item) throw new NotFoundException(`Item with code ${itemCode} not found`);
    return item;
  }
}