fix after review
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
export class UpdateEquipmentTypeDto {
|
||||
id?: string;
|
||||
code?: string | null;
|
||||
name?: string | null;
|
||||
manufacturer?: string | null;
|
||||
maintenanceIntervalHours?: number | null;
|
||||
overhaulIntervalHours?: number | null;
|
||||
code?: string;
|
||||
name?: string;
|
||||
manufacturer?: string;
|
||||
maintenanceIntervalHours?: number;
|
||||
overhaulIntervalHours?: number;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,14 @@ import { PrismaService } from '../../prisma/prisma.service';
|
||||
import { CreateEquipmentTypeDto } from './dto/create-equipment-type.dto';
|
||||
import { UpdateEquipmentTypeDto } from './dto/update-equipment-type.dto';
|
||||
|
||||
function serializeRecord(record: any) {
|
||||
return {
|
||||
...record,
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class EquipmentTypeService {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
@@ -31,6 +39,8 @@ export class EquipmentTypeService {
|
||||
if (query.name) where.name = { contains: query.name, mode: 'insensitive' };
|
||||
if (query.manufacturer) where.manufacturer = { contains: query.manufacturer, mode: 'insensitive' };
|
||||
|
||||
|
||||
|
||||
// Enum multi-value support (e.g. status=A&status=B)
|
||||
|
||||
|
||||
@@ -44,30 +54,37 @@ export class EquipmentTypeService {
|
||||
this.prisma.equipmentType.count({ where }),
|
||||
]);
|
||||
|
||||
const mapped = data.map((r: any) => ({ id: r.code, ...r }));
|
||||
const mapped = data.map((r: any) => ({ id: r.code, ...serializeRecord(r) }));
|
||||
return { data: mapped, total };
|
||||
}
|
||||
|
||||
async findOne(id: string) {
|
||||
const record = await this.prisma.equipmentType.findUniqueOrThrow({ where: { code: id } as any });
|
||||
return { id: (record as any).code, ...record };
|
||||
return { id: (record as any).code, ...serializeRecord(record) };
|
||||
}
|
||||
|
||||
async create(dto: CreateEquipmentTypeDto) {
|
||||
const record = await this.prisma.equipmentType.create({ data: dto as any });
|
||||
return { id: (record as any).code, ...record };
|
||||
const data: any = { ...(dto as any) };
|
||||
|
||||
|
||||
|
||||
const record = await this.prisma.equipmentType.create({ data });
|
||||
return { id: (record as any).code, ...serializeRecord(record) };
|
||||
}
|
||||
|
||||
async update(id: string, dto: UpdateEquipmentTypeDto) {
|
||||
const data: any = { ...(dto as any) };
|
||||
delete data.id;
|
||||
delete data.code;
|
||||
|
||||
|
||||
|
||||
const record = await this.prisma.equipmentType.update({ where: { code: id } as any, data });
|
||||
return { id: (record as any).code, ...record };
|
||||
return { id: (record as any).code, ...serializeRecord(record) };
|
||||
}
|
||||
|
||||
async remove(id: string) {
|
||||
const record = await this.prisma.equipmentType.delete({ where: { code: id } as any });
|
||||
return { id: (record as any).code, ...record };
|
||||
return { id: (record as any).code, ...serializeRecord(record) };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
export class UpdateEquipmentDto {
|
||||
id?: string | null;
|
||||
inventoryNumber?: string | null;
|
||||
serialNumber?: string | null;
|
||||
name?: string | null;
|
||||
equipmentTypeCode?: string | null;
|
||||
status?: string | null;
|
||||
location?: string | null;
|
||||
commissionedAt?: string | null;
|
||||
totalEngineHours?: string | null;
|
||||
engineHoursSinceLastRepair?: string | null;
|
||||
lastRepairAt?: string | null;
|
||||
notes?: string | null;
|
||||
id?: string;
|
||||
inventoryNumber?: string;
|
||||
serialNumber?: string;
|
||||
name?: string;
|
||||
equipmentTypeCode?: string;
|
||||
status?: string;
|
||||
location?: string;
|
||||
commissionedAt?: string;
|
||||
totalEngineHours?: string;
|
||||
engineHoursSinceLastRepair?: string;
|
||||
lastRepairAt?: string;
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,16 @@ import { PrismaService } from '../../prisma/prisma.service';
|
||||
import { CreateEquipmentDto } from './dto/create-equipment.dto';
|
||||
import { UpdateEquipmentDto } from './dto/update-equipment.dto';
|
||||
|
||||
function serializeRecord(record: any) {
|
||||
return {
|
||||
...record,
|
||||
totalEngineHours: record.totalEngineHours?.toString() ?? null,
|
||||
engineHoursSinceLastRepair: record.engineHoursSinceLastRepair?.toString() ?? null,
|
||||
commissionedAt: record.commissionedAt?.toISOString() ?? null,
|
||||
lastRepairAt: record.lastRepairAt?.toISOString() ?? null,
|
||||
};
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class EquipmentService {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
@@ -13,7 +23,7 @@ export class EquipmentService {
|
||||
const end = parseInt(query._end) || 10;
|
||||
const take = end - start;
|
||||
const skip = start;
|
||||
const sortField = query._sort || 'id';
|
||||
const sortField = query._sort || 'inventoryNumber';
|
||||
const sortOrder = (query._order || 'ASC').toLowerCase() as 'asc' | 'desc';
|
||||
|
||||
const where: any = {};
|
||||
@@ -33,10 +43,11 @@ export class EquipmentService {
|
||||
if (query.inventoryNumber) where.inventoryNumber = { contains: query.inventoryNumber, mode: 'insensitive' };
|
||||
if (query.serialNumber) where.serialNumber = { contains: query.serialNumber, mode: 'insensitive' };
|
||||
if (query.name) where.name = { contains: query.name, mode: 'insensitive' };
|
||||
if (query.equipmentTypeCode) where.equipmentTypeCode = { contains: query.equipmentTypeCode, mode: 'insensitive' };
|
||||
if (query.location) where.location = { contains: query.location, mode: 'insensitive' };
|
||||
if (query.notes) where.notes = { contains: query.notes, mode: 'insensitive' };
|
||||
|
||||
if (query.equipmentTypeCode) where.equipmentTypeCode = query.equipmentTypeCode;
|
||||
|
||||
// Enum multi-value support (e.g. status=A&status=B)
|
||||
if (query.status) { const vals = Array.isArray(query.status) ? query.status : [query.status]; where.status = vals.length > 1 ? { in: vals } : vals[0]; }
|
||||
|
||||
@@ -50,30 +61,41 @@ export class EquipmentService {
|
||||
this.prisma.equipment.count({ where }),
|
||||
]);
|
||||
|
||||
const mapped = data;
|
||||
const mapped = data.map(serializeRecord);
|
||||
return { data: mapped, total };
|
||||
}
|
||||
|
||||
async findOne(id: string) {
|
||||
const record = await this.prisma.equipment.findUniqueOrThrow({ where: { id: id } as any });
|
||||
return record;
|
||||
return serializeRecord(record);
|
||||
}
|
||||
|
||||
async create(dto: CreateEquipmentDto) {
|
||||
const record = await this.prisma.equipment.create({ data: dto as any });
|
||||
return record;
|
||||
const data: any = { ...(dto as any) };
|
||||
if (data.commissionedAt) data.commissionedAt = new Date(data.commissionedAt);
|
||||
if (data.lastRepairAt) data.lastRepairAt = new Date(data.lastRepairAt);
|
||||
if (data.totalEngineHours) data.totalEngineHours = new Prisma.Decimal(data.totalEngineHours);
|
||||
if (data.engineHoursSinceLastRepair) data.engineHoursSinceLastRepair = new Prisma.Decimal(data.engineHoursSinceLastRepair);
|
||||
|
||||
const record = await this.prisma.equipment.create({ data });
|
||||
return serializeRecord(record);
|
||||
}
|
||||
|
||||
async update(id: string, dto: UpdateEquipmentDto) {
|
||||
const data: any = { ...(dto as any) };
|
||||
delete data.id;
|
||||
delete data.id;
|
||||
if (data.commissionedAt) data.commissionedAt = new Date(data.commissionedAt);
|
||||
if (data.lastRepairAt) data.lastRepairAt = new Date(data.lastRepairAt);
|
||||
if (data.totalEngineHours !== undefined && data.totalEngineHours !== null) data.totalEngineHours = new Prisma.Decimal(data.totalEngineHours);
|
||||
if (data.engineHoursSinceLastRepair !== undefined && data.engineHoursSinceLastRepair !== null) data.engineHoursSinceLastRepair = new Prisma.Decimal(data.engineHoursSinceLastRepair);
|
||||
|
||||
const record = await this.prisma.equipment.update({ where: { id: id } as any, data });
|
||||
return record;
|
||||
return serializeRecord(record);
|
||||
}
|
||||
|
||||
async remove(id: string) {
|
||||
const record = await this.prisma.equipment.delete({ where: { id: id } as any });
|
||||
return record;
|
||||
return serializeRecord(record);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
export class UpdateRepairOrderDto {
|
||||
id?: string | null;
|
||||
number?: string | null;
|
||||
equipmentId?: string | null;
|
||||
repairKind?: string | null;
|
||||
status?: string | null;
|
||||
plannedAt?: string | null;
|
||||
startedAt?: string | null;
|
||||
completedAt?: string | null;
|
||||
contractor?: string | null;
|
||||
engineHoursAtRepair?: string | null;
|
||||
description?: string | null;
|
||||
notes?: string | null;
|
||||
id?: string;
|
||||
number?: string;
|
||||
equipmentId?: string;
|
||||
repairKind?: string;
|
||||
status?: string;
|
||||
plannedAt?: string;
|
||||
startedAt?: string;
|
||||
completedAt?: string;
|
||||
contractor?: string;
|
||||
engineHoursAtRepair?: string;
|
||||
description?: string;
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,16 @@ import { PrismaService } from '../../prisma/prisma.service';
|
||||
import { CreateRepairOrderDto } from './dto/create-repair-order.dto';
|
||||
import { UpdateRepairOrderDto } from './dto/update-repair-order.dto';
|
||||
|
||||
function serializeRecord(record: any) {
|
||||
return {
|
||||
...record,
|
||||
engineHoursAtRepair: record.engineHoursAtRepair?.toString() ?? null,
|
||||
plannedAt: record.plannedAt?.toISOString() ?? null,
|
||||
startedAt: record.startedAt?.toISOString() ?? null,
|
||||
completedAt: record.completedAt?.toISOString() ?? null,
|
||||
};
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class RepairOrderService {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
@@ -13,7 +23,7 @@ export class RepairOrderService {
|
||||
const end = parseInt(query._end) || 10;
|
||||
const take = end - start;
|
||||
const skip = start;
|
||||
const sortField = query._sort || 'id';
|
||||
const sortField = query._sort || 'number';
|
||||
const sortOrder = (query._order || 'ASC').toLowerCase() as 'asc' | 'desc';
|
||||
|
||||
const where: any = {};
|
||||
@@ -33,6 +43,8 @@ export class RepairOrderService {
|
||||
if (query.description) where.description = { contains: query.description, mode: 'insensitive' };
|
||||
if (query.notes) where.notes = { contains: query.notes, mode: 'insensitive' };
|
||||
|
||||
if (query.equipmentId) where.equipmentId = query.equipmentId;
|
||||
|
||||
// Enum multi-value support (e.g. status=A&status=B)
|
||||
if (query.repairKind) { const vals = Array.isArray(query.repairKind) ? query.repairKind : [query.repairKind]; where.repairKind = vals.length > 1 ? { in: vals } : vals[0]; }
|
||||
if (query.status) { const vals = Array.isArray(query.status) ? query.status : [query.status]; where.status = vals.length > 1 ? { in: vals } : vals[0]; }
|
||||
@@ -47,30 +59,41 @@ export class RepairOrderService {
|
||||
this.prisma.repairOrder.count({ where }),
|
||||
]);
|
||||
|
||||
const mapped = data;
|
||||
const mapped = data.map(serializeRecord);
|
||||
return { data: mapped, total };
|
||||
}
|
||||
|
||||
async findOne(id: string) {
|
||||
const record = await this.prisma.repairOrder.findUniqueOrThrow({ where: { id: id } as any });
|
||||
return record;
|
||||
return serializeRecord(record);
|
||||
}
|
||||
|
||||
async create(dto: CreateRepairOrderDto) {
|
||||
const record = await this.prisma.repairOrder.create({ data: dto as any });
|
||||
return record;
|
||||
const data: any = { ...(dto as any) };
|
||||
if (data.plannedAt) data.plannedAt = new Date(data.plannedAt);
|
||||
if (data.startedAt) data.startedAt = new Date(data.startedAt);
|
||||
if (data.completedAt) data.completedAt = new Date(data.completedAt);
|
||||
if (data.engineHoursAtRepair) data.engineHoursAtRepair = new Prisma.Decimal(data.engineHoursAtRepair);
|
||||
|
||||
const record = await this.prisma.repairOrder.create({ data });
|
||||
return serializeRecord(record);
|
||||
}
|
||||
|
||||
async update(id: string, dto: UpdateRepairOrderDto) {
|
||||
const data: any = { ...(dto as any) };
|
||||
delete data.id;
|
||||
delete data.id;
|
||||
if (data.plannedAt) data.plannedAt = new Date(data.plannedAt);
|
||||
if (data.startedAt) data.startedAt = new Date(data.startedAt);
|
||||
if (data.completedAt) data.completedAt = new Date(data.completedAt);
|
||||
if (data.engineHoursAtRepair !== undefined && data.engineHoursAtRepair !== null) data.engineHoursAtRepair = new Prisma.Decimal(data.engineHoursAtRepair);
|
||||
|
||||
const record = await this.prisma.repairOrder.update({ where: { id: id } as any, data });
|
||||
return record;
|
||||
return serializeRecord(record);
|
||||
}
|
||||
|
||||
async remove(id: string) {
|
||||
const record = await this.prisma.repairOrder.delete({ where: { id: id } as any });
|
||||
return record;
|
||||
return serializeRecord(record);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user