Add timeline tracking features with database schema updates
- Introduced new tables `timeline_footprints` and `timeline_activities` to manage employee location data and activity records. - Updated `company_settings` to include `gps_interval_seconds` and `checkout_warning_radius_meters` for enhanced tracking configuration. - Implemented foreign key constraints to ensure data integrity between new tables and existing `employees`, `customers`, and `visits` tables. - Created services and controllers for handling timeline activities and footprints, including ingestion and retrieval of data. - Enhanced DTOs and validation logic to support new fields and ensure correct data formats in API requests. - Added unit and integration tests to validate the new functionalities and ensure proper handling of timeline records. - Created migration scripts to apply the necessary database schema changes for the new features.
This commit is contained in:
@@ -34,6 +34,8 @@ export class CompanySettingsRepository {
|
||||
.values({
|
||||
cycleStartDate: input.cycleStartDate.value,
|
||||
checkInRadiusMeters: input.checkInRadiusMeters ?? 100,
|
||||
gpsIntervalSeconds: input.gpsIntervalSeconds ?? 5,
|
||||
checkoutWarningRadiusMeters: input.checkoutWarningRadiusMeters ?? 200,
|
||||
status: Status.create(Status.DEFAULT).value,
|
||||
createdAt: now.value,
|
||||
updatedAt: now.value,
|
||||
@@ -50,6 +52,12 @@ export class CompanySettingsRepository {
|
||||
...(input.checkInRadiusMeters !== undefined
|
||||
? { checkInRadiusMeters: input.checkInRadiusMeters }
|
||||
: {}),
|
||||
...(input.gpsIntervalSeconds !== undefined
|
||||
? { gpsIntervalSeconds: input.gpsIntervalSeconds }
|
||||
: {}),
|
||||
...(input.checkoutWarningRadiusMeters !== undefined
|
||||
? { checkoutWarningRadiusMeters: input.checkoutWarningRadiusMeters }
|
||||
: {}),
|
||||
updatedAt: now.value,
|
||||
updatedBy: input.userId,
|
||||
})
|
||||
@@ -63,6 +71,8 @@ export class CompanySettingsRepository {
|
||||
id: row.id,
|
||||
cycleStartDate: DateTime.fromUnixMs(row.cycleStartDate),
|
||||
checkInRadiusMeters: row.checkInRadiusMeters,
|
||||
gpsIntervalSeconds: row.gpsIntervalSeconds,
|
||||
checkoutWarningRadiusMeters: row.checkoutWarningRadiusMeters,
|
||||
status: Status.create(row.status),
|
||||
createdAt: DateTime.fromUnixMs(row.createdAt),
|
||||
updatedAt: DateTime.fromUnixMs(row.updatedAt),
|
||||
|
||||
Reference in New Issue
Block a user