/** * BitacoraObraService - Bitácora de Obra * * Gestiona el registro diario de bitácora de obra. * Genera automáticamente el número de entrada secuencial. * * @module Progress */ import { Repository } from 'typeorm'; import { BaseService, ServiceContext, PaginatedResult } from '../../../shared/services/base.service'; import { BitacoraObra } from '../entities/bitacora-obra.entity'; export interface CreateBitacoraDto { fraccionamientoId: string; entryDate: Date; weather?: string; temperatureMax?: number; temperatureMin?: number; workersCount?: number; description: string; observations?: string; incidents?: string; } export interface UpdateBitacoraDto { weather?: string; temperatureMax?: number; temperatureMin?: number; workersCount?: number; description?: string; observations?: string; incidents?: string; } export interface BitacoraFilters { dateFrom?: Date; dateTo?: Date; hasIncidents?: boolean; } export declare class BitacoraObraService extends BaseService { constructor(repository: Repository); /** * Crear nueva entrada de bitácora */ createEntry(ctx: ServiceContext, data: CreateBitacoraDto): Promise; /** * Obtener siguiente número de entrada */ private getNextEntryNumber; /** * Obtener bitácora por fraccionamiento */ findByFraccionamiento(ctx: ServiceContext, fraccionamientoId: string, page?: number, limit?: number): Promise>; /** * Obtener bitácora con filtros */ findWithFilters(ctx: ServiceContext, fraccionamientoId: string, filters: BitacoraFilters, page?: number, limit?: number): Promise>; /** * Obtener entrada por fecha */ findByDate(ctx: ServiceContext, fraccionamientoId: string, date: Date): Promise; /** * Obtener última entrada */ findLatest(ctx: ServiceContext, fraccionamientoId: string): Promise; /** * Obtener estadísticas de bitácora */ getStats(ctx: ServiceContext, fraccionamientoId: string): Promise; } interface BitacoraStats { totalEntries: number; entriesWithIncidents: number; avgWorkersCount: number; } export {}; //# sourceMappingURL=bitacora-obra.service.d.ts.map