WarrantPeriodsTable
extends BaseTable
in package
WarrantPeriodsTable - Warrant Period Template Management and Administrative Tools
The WarrantPeriodsTable provides comprehensive data management for warrant period templates within the KMP warrant system. This table manages standardized period definitions that serve as organizational templates for consistent warrant duration management and integration with warrant roster approval workflows.
Core Architecture:
- Extends BaseTable for KMP cache management and branch scoping
- Implements audit trail behaviors for administrative tracking
- Provides temporal validation for period boundary management
- Integrates with warrant system for standardized duration templates
- Supports administrative tools for period lifecycle operations
Period Template System:
- Standardized period definitions for organizational consistency
- Temporal boundary validation (start_date, end_date)
- Administrative tracking with creator identification
- Template-based approach for warrant roster integration
- Reusable period configurations for different warrant types
Business Logic Integration:
- Template storage for warrant roster approval workflows
- Period lifecycle operations and administrative controls
- Temporal validation and business rule enforcement
- Integration with warrant management administrative tools
- Support for organizational period standardization
Data Management Features:
- Comprehensive validation rules for temporal consistency
- Audit trail support with creation tracking
- Administrative accountability through creator identification
- Timestamp behavior for lifecycle management
- Footprint behavior for user action tracking
Usage Examples:
// Creating period templates
$warrantPeriodsTable = $this->getTableLocator()->get('WarrantPeriods');
// Standard annual period template
$annualPeriod = $warrantPeriodsTable->newEntity([
'start_date' => '2024-01-01',
'end_date' => '2024-12-31',
'created_by' => $administratorId
]);
$warrantPeriodsTable->save($annualPeriod);
// Quarterly period template
$quarterlyPeriod = $warrantPeriodsTable->newEntity([
'start_date' => '2024-01-01',
'end_date' => '2024-03-31',
'created_by' => $administratorId
]);
$warrantPeriodsTable->save($quarterlyPeriod);
// Finding available period templates
$availablePeriods = $warrantPeriodsTable->find()
->where(['start_date >=' => date('Y-m-d')])
->orderAsc('start_date')
->toArray();
Administrative Operations:
// Period template management
$periodsQuery = $warrantPeriodsTable->find()
->orderDesc('created')
->contain(['CreatedByMember']);
// Temporal validation queries
$overlappingPeriods = $warrantPeriodsTable->find()
->where([
'OR' => [
['start_date <=' => $newStart, 'end_date >=' => $newStart],
['start_date <=' => $newEnd, 'end_date >=' => $newEnd]
]
])
->toArray();
// Period lifecycle operations
$activePeriods = $warrantPeriodsTable->find()
->where([
'start_date <=' => date('Y-m-d'),
'end_date >=' => date('Y-m-d')
])
->toArray();
Tags
Table of Contents
Constants
- CACHE_GROUPS_TO_CLEAR = []
- CACHES_TO_CLEAR = []
- ID_CACHES_TO_CLEAR = []
Methods
- addBranchScopeQuery() : SelectQuery
- Add branch-based data scoping to a query.
- afterDelete() : void
- After delete hook to capture impersonation audit trail entries.
- afterSave() : void
- After-save handler for automatic cache invalidation.
- deleteMany() : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>|false
- deleteManyOrFail() : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>
- findOrCreate() : WarrantPeriod
- get() : WarrantPeriod
- initialize() : void
- Initialize method - Table Configuration and Behavior Setup
- newEmptyEntity() : WarrantPeriod
- newEntities() : array<string|int, WarrantPeriod>
- newEntity() : WarrantPeriod
- patchEntities() : array<string|int, WarrantPeriod>
- patchEntity() : WarrantPeriod
- save() : WarrantPeriod|false
- saveMany() : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>|false
- saveManyOrFail() : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>
- saveOrFail() : WarrantPeriod
- validationDefault() : Validator
- Default validation rules for warrant period templates
- logImpersonationAction() : void
- Record impersonated writes to audit log table.
Constants
CACHE_GROUPS_TO_CLEAR
protected
array<string|int, string>
CACHE_GROUPS_TO_CLEAR
= []
Cache groups to clear entirely on save
CACHES_TO_CLEAR
protected
array<string|int, array{string, string}>
CACHES_TO_CLEAR
= []
Static cache entries to clear on save
ID_CACHES_TO_CLEAR
protected
array<string|int, array{string, string}>
ID_CACHES_TO_CLEAR
= []
Entity-ID cache prefixes to clear on save
Methods
addBranchScopeQuery()
Add branch-based data scoping to a query.
public
addBranchScopeQuery(SelectQuery $query, array<string|int, int> $branchIDs) : SelectQuery
Child tables should override for custom branch relationships.
Parameters
- $query : SelectQuery
-
The query to modify
- $branchIDs : array<string|int, int>
-
Authorized branch IDs
Return values
SelectQuery —Query with branch filtering
afterDelete()
After delete hook to capture impersonation audit trail entries.
public
afterDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options) : void
Parameters
- $event : EventInterface
-
Delete event
- $entity : EntityInterface
-
Entity being deleted
- $options : ArrayObject
-
Delete options
afterSave()
After-save handler for automatic cache invalidation.
public
afterSave(EventInterface $event, EntityInterface $entity, ArrayObject $options) : void
Parameters
- $event : EventInterface
-
The afterSave event
- $entity : EntityInterface
-
The saved entity
- $options : ArrayObject
-
Save options
deleteMany()
public
deleteMany(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>|false
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>|falsedeleteManyOrFail()
public
deleteManyOrFail(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>findOrCreate()
public
findOrCreate(mixed $search[, callable|null $callback = = 'null' ][, array<string|int, mixed> $options = = '[]' ]) : WarrantPeriod
Parameters
- $search : mixed
- $callback : callable|null = = 'null'
- $options : array<string|int, mixed> = = '[]'
Return values
WarrantPeriodget()
public
get(mixed $primaryKey[, array<string|int, mixed>|string $finder = = '\'all\'' ][, CacheInterface|string|null $cache = = 'null' ][, Closure|string|null $cacheKey = = 'null' ], mixed ...$args) : WarrantPeriod
Parameters
- $primaryKey : mixed
- $finder : array<string|int, mixed>|string = = '\'all\''
- $cache : CacheInterface|string|null = = 'null'
- $cacheKey : Closure|string|null = = 'null'
- $args : mixed
Return values
WarrantPeriodinitialize()
Initialize method - Table Configuration and Behavior Setup
public
initialize(array<string, mixed> $config) : void
Configures the WarrantPeriodsTable with essential behaviors for audit trails, user tracking, and automated timestamp management. This initialization ensures comprehensive tracking of all warrant period template operations and integrates with the KMP administrative framework.
Configuration Details:
- Table name: 'warrant_periods'
- Display field: 'name' (if available) or default primary key
- Primary key: 'id' (auto-incrementing integer)
Behavior Integration:
- Timestamp: Automatic created/modified datetime management
- Footprint: User tracking for created_by/modified_by fields
Administrative Features:
- Audit trail support for all period template operations
- User accountability through creation and modification tracking
- Integration with KMP authentication system for user identification
Parameters
- $config : array<string, mixed>
-
The configuration for the Table.
newEmptyEntity()
public
newEmptyEntity() : WarrantPeriod
Return values
WarrantPeriodnewEntities()
public
newEntities(array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : array<string|int, WarrantPeriod>
Parameters
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
array<string|int, WarrantPeriod>newEntity()
public
newEntity(array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : WarrantPeriod
Parameters
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
WarrantPeriodpatchEntities()
public
patchEntities(iterable<string|int, mixed> $entities, array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : array<string|int, WarrantPeriod>
Parameters
- $entities : iterable<string|int, mixed>
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
array<string|int, WarrantPeriod>patchEntity()
public
patchEntity(EntityInterface $entity, array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : WarrantPeriod
Parameters
- $entity : EntityInterface
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
WarrantPeriodsave()
public
save(EntityInterface $entity[, array<string|int, mixed> $options = = '[]' ]) : WarrantPeriod|false
Parameters
- $entity : EntityInterface
- $options : array<string|int, mixed> = = '[]'
Return values
WarrantPeriod|falsesaveMany()
public
saveMany(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>|false
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>|falsesaveManyOrFail()
public
saveManyOrFail(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, WarrantPeriod>|ResultSetInterface<string|int, WarrantPeriod>saveOrFail()
public
saveOrFail(EntityInterface $entity[, array<string|int, mixed> $options = = '[]' ]) : WarrantPeriod
Parameters
- $entity : EntityInterface
- $options : array<string|int, mixed> = = '[]'
Return values
WarrantPeriodvalidationDefault()
Default validation rules for warrant period templates
public
validationDefault(Validator $validator) : Validator
Implements comprehensive validation for warrant period data to ensure data integrity, business rule compliance, and administrative accountability. These validation rules enforce temporal consistency and organizational requirements for period template management within the KMP warrant system.
Validation Architecture:
- Temporal boundary validation for period consistency
- Required field enforcement for essential period data
- Optional field handling for administrative tracking
- Business rule compliance for warrant system integration
Date Validation Rules:
- start_date: Required date field for period start boundary
- Must be valid date format
- Required on entity creation
- Cannot be empty for new period templates
- end_date: Required date field for period end boundary
- Must be valid date format
- Required on entity creation
- Cannot be empty for new period templates
Administrative Tracking:
- created_by: Optional integer for administrator identification
- Links to Members table for audit trail
- Populated automatically by Footprint behavior
- Can be empty for system-generated periods
Business Rule Considerations:
- Period boundaries must be logically consistent (start <= end)
- Additional business logic validation handled in entity layer
- Integration with warrant roster validation requirements
- Support for administrative period management workflows
Usage Examples:
// Valid period template creation
$period = $warrantPeriodsTable->newEntity([
'start_date' => '2024-01-01',
'end_date' => '2024-12-31',
'created_by' => 123 // Optional administrative tracking
]);
// Validation will enforce required fields and date formats
if ($warrantPeriodsTable->save($period)) {
// Period template created successfully
} else {
// Handle validation errors
$errors = $period->getErrors();
}
Parameters
- $validator : Validator
-
Validator instance.
Return values
ValidatorlogImpersonationAction()
Record impersonated writes to audit log table.
protected
logImpersonationAction(string $defaultOperation, EntityInterface $entity) : void
Parameters
- $defaultOperation : string
-
Operation fallback (save/delete)
- $entity : EntityInterface
-
Affected entity