Service
System: Equipment and Service Management
1. Purpose
The Equipment and Service Management System is designed to manage reservations, services, and associated components for equipment and modules. It provides functionality for reservation handling, service property management, user permissions, notifications, and email communication.
This document outlines the key functional elements, dependencies, and workflows of the system based on its codebase.
2. Scope
The document covers the following modules and services:
Service Module (
/module/service
)ServiceService
: Manages service operations tied to equipment and service properties.
3. Feature Description
3.1 Equipment Reservation (ReservationService)
The system provides advanced reservation management for equipment.
Functionalities
Setting up services
Key Entities and Attributes
Events:
Each intance of a service (execution, planning) is called a service event
3.2 Service Handling (Service Service)
Manages core operations related to service and its components.
Functionalities
Service Management:
CRUD Operations: Adding, retrieving, parsing, and updating services.
Handles related components such as events and checklists.
Method:
findServiceById(int $id): ?Service
Property Management:
Retrieves visible service properties for display, filtered by type.
Assigns properties to services, correctly mapping property type to expected data.
Methods:
updateServiceProperties(Service $service, array $formDetails): void
parseServiceProperties(Service $service): array
Deletion Validations:
Prevents deletion of services or properties that are in use, providing reasons.
Method:
cannotDeleteServiceReasons(Service $service): array
4. Dependencies
Internal Dependencies:
Equipment Module:
Primary relationships betweenSerivceService
andEquipmentService
:Fetch equipment
Entity Management:
All modules rely on Doctrine ORM:Entities such as
Service
,Event
, andTeam
are persisted and retrieved using repositories.
Services:
ServiceService
: For managing reservation-related queue impacts.EventService
: For emails related to reservation approvals or rejections.
External Dependencies:
Email Service:
Used extensively for sending transactional emails, invitations (iCal), and notifications to impacted users.
Service:
EmailService
.
TypeScript APIs:
Frontend interaction with reservations and modules handled by APIs (e.g.,
getService.ts
).
5. Non-Functional Requirements
Performance:
Reservation query operations handle multiple date ranges and equipment filters efficiently using optimized database queries.
Scalability:
System allows dynamic addition of modules, properties, and categories.
Robust scheduler integration ensures handling of high volumes of overlapping jobs or queues.
Security:
User access controlled through permission levels (
edit
,view
,approve
).Email addresses validated before sending notifications.
6. Open Issues & Future Enhancements
Conflict Resolution Enhancements:
Refine overlapping reservation handling for scenarios involving multiple users and schedules.
Logging & Auditing:
Implement detailed logging for reservation status changes, including emails sent and user actions.
7. Key API Endpoints
Reservation Endpoints:
POST /new/service/event
: Create a new service event.GET /service/event/:id
: Retrieve service event by ID.
This document provides an overview of the functional requirements and behavior of the equipment and service management system. Further refinements can be made as the system evolves.