Add attendance and visit management features with database schema updates

- Introduced new `attendances` and `visits` tables to manage employee attendance and customer visits, including relevant fields for check-in and check-out details.
- Updated `company_settings` to include a `check_in_radius_meters` column for attendance validation.
- Implemented foreign key constraints to ensure data integrity between `attendances`, `visits`, `employees`, `branches`, and other related entities.
- Created new services and controllers for handling attendance and visit operations, including check-in, check-out, and bulk actions.
- Enhanced DTOs for attendance and visit data transfer, including validation for input data.
- Added unit and integration tests to validate the new functionalities and ensure proper handling of attendance and visit records.
- Created migration scripts to apply the necessary database schema changes for the new features.
This commit is contained in:
shancheas
2026-09-01 12:27:51 +07:00
parent 0e73d14381
commit 365a37b8d2
34 changed files with 2771 additions and 13 deletions
+23 -1
View File
@@ -5,6 +5,10 @@ import { EmployeesModule } from '../configuration/employees/employees.module';
import { PrivilegesModule } from '../privileges/privileges.module';
import { PackingSlipsModule } from '../sales/packing-slips/packing-slips.module';
import { SalesInvoicesModule } from '../sales/sales-invoices/sales-invoices.module';
import { AttendancesReadController } from './attendances/attendances-read.controller';
import { AttendancesWriteController } from './attendances/attendances-write.controller';
import { AttendancesRepository } from './attendances/attendances.repository';
import { AttendancesService } from './attendances/attendances.service';
import { CyclesReadController } from './cycles/cycles-read.controller';
import { CyclesWriteController } from './cycles/cycles-write.controller';
import { CyclesRepository } from './cycles/cycles.repository';
@@ -16,6 +20,10 @@ import { PlansService } from './plans/plans.service';
import { CompanySettingsController } from './settings/company-settings.controller';
import { CompanySettingsRepository } from './settings/company-settings.repository';
import { CompanySettingsService } from './settings/company-settings.service';
import { VisitsReadController } from './visits/visits-read.controller';
import { VisitsWriteController } from './visits/visits-write.controller';
import { VisitsRepository } from './visits/visits.repository';
import { VisitsService } from './visits/visits.service';
import { FieldPrivilegeGuard } from './shared/field-privilege.guard';
@Module({
@@ -29,20 +37,34 @@ import { FieldPrivilegeGuard } from './shared/field-privilege.guard';
],
controllers: [
CompanySettingsController,
AttendancesReadController,
AttendancesWriteController,
CyclesReadController,
CyclesWriteController,
PlansReadController,
PlansWriteController,
VisitsReadController,
VisitsWriteController,
],
providers: [
FieldPrivilegeGuard,
CompanySettingsRepository,
CompanySettingsService,
AttendancesRepository,
AttendancesService,
CyclesRepository,
CyclesService,
PlansRepository,
PlansService,
VisitsRepository,
VisitsService,
],
exports: [
CompanySettingsService,
AttendancesService,
CyclesService,
PlansService,
VisitsService,
],
exports: [CompanySettingsService, CyclesService, PlansService],
})
export class FieldModule {}