63 lines
2.6 KiB
TypeScript
63 lines
2.6 KiB
TypeScript
/**
|
|
* SubcontractorService - Servicio de gestión de subcontratistas
|
|
*
|
|
* Catálogo de subcontratistas con evaluaciones.
|
|
*
|
|
* @module Contracts
|
|
*/
|
|
import { Repository } from 'typeorm';
|
|
import { Subcontractor, SubcontractorStatus, SubcontractorSpecialty } from '../entities/subcontractor.entity';
|
|
import { ServiceContext, PaginatedResult } from '../../../shared/services/base.service';
|
|
export interface CreateSubcontractorDto {
|
|
businessName: string;
|
|
tradeName?: string;
|
|
rfc: string;
|
|
address?: string;
|
|
phone?: string;
|
|
email?: string;
|
|
contactName?: string;
|
|
contactPhone?: string;
|
|
primarySpecialty: SubcontractorSpecialty;
|
|
secondarySpecialties?: string[];
|
|
bankName?: string;
|
|
bankAccount?: string;
|
|
clabe?: string;
|
|
notes?: string;
|
|
}
|
|
export interface UpdateSubcontractorDto {
|
|
tradeName?: string;
|
|
address?: string;
|
|
phone?: string;
|
|
email?: string;
|
|
contactName?: string;
|
|
contactPhone?: string;
|
|
secondarySpecialties?: string[];
|
|
bankName?: string;
|
|
bankAccount?: string;
|
|
clabe?: string;
|
|
notes?: string;
|
|
}
|
|
export interface SubcontractorFilters {
|
|
specialty?: SubcontractorSpecialty;
|
|
status?: SubcontractorStatus;
|
|
search?: string;
|
|
minRating?: number;
|
|
}
|
|
export declare class SubcontractorService {
|
|
private readonly subcontractorRepository;
|
|
constructor(subcontractorRepository: Repository<Subcontractor>);
|
|
private generateCode;
|
|
findWithFilters(ctx: ServiceContext, filters?: SubcontractorFilters, page?: number, limit?: number): Promise<PaginatedResult<Subcontractor>>;
|
|
findById(ctx: ServiceContext, id: string): Promise<Subcontractor | null>;
|
|
findByRfc(ctx: ServiceContext, rfc: string): Promise<Subcontractor | null>;
|
|
create(ctx: ServiceContext, dto: CreateSubcontractorDto): Promise<Subcontractor>;
|
|
update(ctx: ServiceContext, id: string, dto: UpdateSubcontractorDto): Promise<Subcontractor | null>;
|
|
updateRating(ctx: ServiceContext, id: string, rating: number): Promise<Subcontractor | null>;
|
|
incrementContracts(ctx: ServiceContext, id: string, completed?: boolean): Promise<Subcontractor | null>;
|
|
incrementIncidents(ctx: ServiceContext, id: string): Promise<Subcontractor | null>;
|
|
deactivate(ctx: ServiceContext, id: string): Promise<Subcontractor | null>;
|
|
blacklist(ctx: ServiceContext, id: string, reason: string): Promise<Subcontractor | null>;
|
|
softDelete(ctx: ServiceContext, id: string): Promise<boolean>;
|
|
getBySpecialty(ctx: ServiceContext, specialty: SubcontractorSpecialty): Promise<Subcontractor[]>;
|
|
}
|
|
//# sourceMappingURL=subcontractor.service.d.ts.map
|