Use Case Documentation
Overview
This document describes the business use cases and application layer logic for the Business Profile Management module. Each use case encapsulates business rules, permissions, and orchestrates the interaction between domain entities, repositories, media services, and external integrations.
Architecture Pattern
The module follows the CQRS (Command Query Responsibility Segregation) pattern with the following structure:
Use Cases: Application layer orchestrating business logic
Commands: Write operations (Create, Update, Media Operations)
Queries: Read operations (Get Profile, Get Settings)
Domain Entities: Business logic and validation
Value Objects: Settings and configuration objects
Media Management: File upload and storage operations
Core Use Cases
1. GetBusinessProfileUseCase
Purpose: Retrieves the complete business profile for the authenticated tenant.
Input: GetBusinessProfileParams
Output: BusinessProfileDto
Business Rules:
User must have
READ_BUSINESS_PROFILEpermissionReturns null if profile not found or access denied
Profile includes all related media assets
Populates nested settings objects
Process Flow:
Validate user permissions using
PermissionValidatorUseCaseExecute
GetBusinessProfileByIdentifierQueryvia query busTransform persistence model to DTO
Return complete profile with all nested objects
Permission Matrix:
Any scope: Can read business profile they have access to
Tenant isolation enforced at query level
Error Scenarios:
Insufficient permissions โ Returns
nullwith warning logProfile not found โ Returns
nullDatabase errors โ Logged and re-thrown
Caching: Results are cached using BusinessCacheKeys.GET_BUSINESS_PROFILE
2. UpdateBusinessProfileUseCase
Purpose: Updates the complete business profile with comprehensive validation.
Input: UpdateBusinessProfileParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionValidates all nested settings objects
Preserves existing media references if not provided
Updates only provided fields (partial updates supported)
Validates business name if provided
Validates addresses, contacts, and schedules
Process Flow:
Validate user permissions
Execute
UpdateBusinessProfileCommandvia command busCommand handler validates domain rules
Transform DTO to domain entity
Validate nested value objects (BookingSettings, BusinessSettings, etc.)
Persist changes to database
Clear relevant cache entries
Domain Validation Rules:
Cache Invalidation: Clears BusinessCacheKeys.GET_BUSINESS_PROFILE
3. UpdateBusinessPaymentSettingsUseCase
Purpose: Updates only the payment settings portion of the business profile.
Input: UpdateBusinessPaymentSettingsParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionValidates payment gateway configurations
Tests payment gateway connections if credentials provided
Supports multiple payment providers (Stripe, PayPal, Square)
Validates currency settings and tax configurations
Process Flow:
Validate user permissions
Execute
UpdateBusinessPaymentSettingsCommandValidate payment provider settings
Test gateway connections (optional)
Update payment settings in profile
Clear relevant caches
Payment Gateway Validation:
Stripe: Validates API keys and webhook secrets
PayPal: Validates client ID and secret
Square: Validates application ID and access token
Error Scenarios:
Invalid payment credentials โ
PaymentSettingsValidationExceptionGateway connection test failure โ Warning logged, settings saved
Unsupported currency โ
InvalidCurrencyException
Media Management Use Cases
4. UpdateClientLogoUseCase
Purpose: Uploads and sets a new business logo image.
Input: UpdateClientLogoParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionFile must be valid image format (JPEG, PNG, WebP)
File size must not exceed configured limits (5MB)
Deletes existing logo if present
Generates thumbnails automatically
Updates business profile with new media reference
Process Flow:
Validate user permissions
Validate file format and size
Upload file to media service
Generate thumbnail variants
Execute
UpsertClientLogoCommandDelete previous logo media
Update business profile reference
Clear media and profile caches
File Validation:
5. DeleteClientLogoUseCase
Purpose: Removes the current business logo.
Input: DeleteClientLogoParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionRemoves logo reference from business profile
Deletes media files from storage
Maintains audit trail of deletion
Process Flow:
Validate user permissions
Get current business profile
Execute
DeleteClientLogoCommandRemove media files from storage
Update business profile (remove logo reference)
Clear relevant caches
6. UpdateClientBannerUseCase
Purpose: Uploads and updates a specific banner image.
Input: UpdateClientBannerParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionFile must be valid image format
File size must not exceed banner limits (10MB)
Supports multiple banners per business
Banner dimensions optimized for promotional display
Process Flow:
Validate user permissions
Validate file and banner item ID
Upload new banner image
Execute
UpsertClientBannerItemCommandUpdate banner in business profile
Clear relevant caches
Banner Specifications:
Recommended dimensions: 1200x400px (landscape)
Maximum file size: 10MB
Supported formats: JPEG, PNG, WebP
Use cases: Promotional content, service showcases
7. UpdateClientGalleryUseCase
Purpose: Uploads and updates a specific gallery image.
Input: UpdateClientGalleryParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionSupports various image dimensions
File size limit of 8MB
Gallery images showcase business work
Maintains original aspect ratios
Process Flow:
Validate user permissions
Validate file and gallery item ID
Upload new gallery image
Generate multiple thumbnail sizes
Execute
UpsertClientGalleryItemCommandUpdate gallery in business profile
Clear relevant caches
8. DeleteClientBannerItemUseCase
Purpose: Removes a specific banner image from the business profile.
Input: DeleteClientBannerItemParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionBanner item must exist in the business profile
Removes both file and reference
Maintains banner ordering after deletion
Process Flow:
Validate user permissions
Verify banner item exists
Execute
DeleteClientBannerItemCommandRemove media files from storage
Update business profile (remove banner reference)
Clear relevant caches
9. DeleteClientGalleryItemUseCase
Purpose: Removes a specific gallery image from the business profile.
Input: DeleteClientGalleryItemParams
Output: void
Business Rules:
User must have
EDIT_BUSINESS_PROFILEpermissionGallery item must exist in the business profile
Removes both file and reference
Maintains gallery organization after deletion
Process Flow:
Validate user permissions
Verify gallery item exists
Execute
DeleteClientGalleryItemCommandRemove media files from storage
Update business profile (remove gallery reference)
Clear relevant caches
Customer-Facing Use Cases
10. GetPublicBusinessProfileUseCase
Purpose: Retrieves public business profile information for customers browsing or booking services.
Input: GetPublicBusinessProfileParams
Output: PublicBusinessProfileDto
Business Rules:
No authentication required (public endpoint)
Only returns published business profiles
Filters sensitive internal information
Includes customer-relevant information only
Respects privacy settings configured by business
Returns operating hours and contact information
Includes public media assets (logo, banners, gallery)
Process Flow:
Identify business by username or ID
Execute
GetPublicBusinessProfileQueryVerify profile is published and active
Filter sensitive business information
Include only customer-facing data
Transform to public DTO format
Apply privacy settings filter
Return sanitized profile data
Public Data Included:
Business name and description
Public contact information
Business addresses and locations
Operating hours and schedules
Public media assets (logo, banners, gallery)
Published services and features
Public social media links
Customer booking settings
Excluded Data:
Internal business settings
Payment gateway configurations
Administrative panel settings
Internal notification settings
Private contact information
Financial information
Analytics data
Caching: Results cached using PublicBusinessCacheKeys.GET_PUBLIC_PROFILE
11. GetBusinessAvailabilityInfoUseCase
Purpose: Retrieves business availability information for customer booking interface.
Input: GetBusinessAvailabilityInfoParams
Output: BusinessAvailabilityDto
Business Rules:
No authentication required (public endpoint)
Returns current operating status
Includes regular and special schedules
Considers business timezone settings
Shows next available booking times
Respects booking advance time limits
Considers booking settings and rules
Process Flow:
Validate business ID and date range
Execute
GetBusinessAvailabilityQueryCalculate current operating status
Process regular and special schedules
Apply booking time restrictions
Calculate next available slots
Transform to availability DTO
Apply customer timezone conversion
Availability Information:
Current operating status (open/closed)
Today's operating hours
Weekly schedule summary
Special hours and holidays
Next available booking time
Booking advance time limits
Break periods and unavailable times
12. GetBusinessContactInfoUseCase
Purpose: Retrieves public contact information for customer communication.
Input: GetBusinessContactInfoParams
Output: BusinessContactInfoDto
Business Rules:
No authentication required (public endpoint)
Returns only public contact information
Respects privacy settings
Includes preferred contact methods
Shows business addresses and locations
Includes social media links
Process Flow:
Validate business ID
Execute
GetBusinessContactInfoQueryFilter for public contact information
Apply privacy settings
Include location and address data
Transform to contact DTO format
Contact Information Included:
Public phone numbers
Public email addresses
Business addresses with maps integration
Website and social media links
Preferred contact methods
Business hours for contact
13. GetBusinessMediaGalleryUseCase
Purpose: Retrieves business media gallery for customer viewing.
Input: GetBusinessMediaGalleryParams
Output: BusinessMediaGalleryDto
Business Rules:
No authentication required (public endpoint)
Returns published media only
Includes optimized images for web display
Supports multiple thumbnail sizes
Maintains image aspect ratios
Includes alt text for accessibility
Process Flow:
Validate business ID and parameters
Execute
GetBusinessMediaGalleryQueryFilter for published media assets
Generate appropriate thumbnail URLs
Include metadata if requested
Transform to media gallery DTO
Media Assets Included:
Business logo with multiple sizes
Published banner images
Gallery images with thumbnails
Optimized URLs for different screen sizes
Alt text and descriptions
Image metadata (if requested)
14. SearchPublicBusinessProfilesUseCase
Purpose: Allows customers to search for businesses by various criteria.
Input: SearchPublicBusinessProfilesParams
Output: SearchBusinessProfilesResultDto
Business Rules:
No authentication required (public endpoint)
Only searches published business profiles
Supports location-based search with radius
Filters by business type and services
Can filter for currently open businesses
Supports pagination for large result sets
Includes distance calculation for location searches
Process Flow:
Validate search parameters
Execute
SearchPublicBusinessProfilesQueryApply published profile filter
Process location-based filtering
Apply business type and service filters
Filter for operating hours if requested
Sort results by specified criteria
Apply pagination
Transform to search results DTO
Search Capabilities:
Text search across business names and descriptions
Geographic search with radius filtering
Business type and category filtering
Service-based filtering
Operating hours filtering
Distance-based sorting
Relevance-based result ranking
15. GetBusinessBookingSettingsUseCase
Purpose: Retrieves customer-relevant booking settings for the booking interface.
Input: GetBusinessBookingSettingsParams
Output: CustomerBookingSettingsDto
Business Rules:
No authentication required (public endpoint)
Returns customer-facing booking settings only
Excludes internal business configuration
Includes booking rules and restrictions
Shows payment requirements
Includes mandatory customer information fields
Process Flow:
Validate business ID
Execute
GetBusinessBookingSettingsQueryFilter for customer-relevant settings
Exclude internal configuration
Transform to customer booking settings DTO
Customer Booking Settings:
Advance booking time limits
Payment requirements and methods
Mandatory customer information fields
Booking confirmation settings
Cancellation policies
Special booking rules and restrictions
16. ValidateBusinessAccessUseCase
Purpose: Validates customer access to business profile and services.
Input: ValidateBusinessAccessParams
Output: BusinessAccessValidationDto
Business Rules:
No authentication required (public endpoint)
Validates business profile is published and active
Checks for any access restrictions
Validates business operating status
Considers geographic restrictions if applicable
Process Flow:
Validate business ID
Execute
ValidateBusinessAccessQueryCheck business publication status
Verify business is active
Check for access restrictions
Validate geographic limitations
Transform to access validation DTO
Access Validation:
Business profile published status
Business active/inactive status
Geographic access restrictions
Operating hours validation
Service availability status
Customer eligibility checks
Command Handlers
CreateBusinessProfileHandler
Responsibilities:
Domain entity creation and validation
Settings object validation (BookingSettings, BusinessSettings)
Database persistence with tenant ID
Cache invalidation
Key Operations:
UpdateBusinessProfileHandler
Responsibilities:
Profile validation and transformation
Nested settings validation
Partial update handling
Cache invalidation
UpdateBusinessPaymentSettingsHandler
Responsibilities:
Payment settings validation
Gateway configuration testing
Selective payment settings update
Financial compliance validation
Media Command Handlers
UpsertClientLogoHandler
Responsibilities:
Media reference management
Previous logo cleanup
Profile reference update
Cache invalidation
DeleteClientLogoHandler
Responsibilities:
Media file deletion
Profile reference removal
Cleanup operations
Query Handlers
GetBusinessProfileHandler
Responsibilities:
Profile retrieval with population
Media reference resolution
Nested settings population
Cache management
Population Strategy:
GetBusinessProfileByIdentifierHandler
Responsibilities:
Identifier-based lookup
Username or tenant ID resolution
Profile transformation
Cache optimization
GetBusinessSettingsHandler
Responsibilities:
Settings-specific queries
Lightweight responses
Settings validation
Performance optimization
Customer-Facing Query Handlers
GetPublicBusinessProfileHandler
Responsibilities:
Public profile data filtering
Privacy settings application
Customer-safe data transformation
Public cache management
Data Filtering Strategy:
SearchPublicBusinessProfilesHandler
Responsibilities:
Complex search query processing
Geospatial distance calculations
Multi-criteria filtering
Result ranking and pagination
Search Implementation:
GetBusinessAvailabilityHandler
Responsibilities:
Real-time availability calculation
Schedule processing and validation
Timezone conversion
Booking rules application
Availability Calculation:
Domain Validation Rules
Business Profile Entity Validation
Name Validation: Required for profile identification
Settings Validation: All nested settings must pass validation
Media Validation: File format and size constraints
Address Validation: Complete address requirements
Contact Validation: Email, phone format validation
Schedule Validation: Time format and logic validation
Social Network Validation: URL format and platform validation
Settings Management
Business Settings Value Object
Responsibilities:
Timezone and locale configuration
Currency and language settings
Date/time format preferences
Email language configuration
Validation Rules:
Valid IANA timezone identifiers
Supported currency codes
Available language codes
Consistent base language settings
Booking Settings Value Object
Responsibilities:
Customer booking configuration
Auto-action settings
Payment requirements
Mandatory attendee properties
Validation Rules:
Logical earliest/latest booking times
Valid payment requirement configurations
Supported attendee property combinations
Payment Settings Value Object
Responsibilities:
Payment gateway configurations
Supported payment methods
Currency and tax settings
Provider-specific settings
Validation Rules:
Valid API credentials for each provider
Supported currency combinations
Tax rate and calculation validations
Media Management Integration
Media Service Integration
File Upload Process:
File validation (format, size, dimensions)
Upload to cloud storage
Thumbnail generation
Database reference creation
Cache invalidation
File Deletion Process:
Database reference removal
Storage file deletion
Thumbnail cleanup
Cache invalidation
Media Types:
Logo: Single square image, multiple sizes generated
Banners: Multiple landscape images for promotions
Gallery: Multiple images showcasing business work
Cache Management
Cache Keys and Strategy
GET_BUSINESS_PROFILE: Complete profile cacheGET_BUSINESS_SETTINGS: Settings-specific cacheGET_CLIENT_LOGO: Logo media cacheGET_CLIENT_BANNERS: Banner collection cacheGET_CLIENT_GALLERY: Gallery collection cacheGET_PUBLIC_PROFILE: Public business profile cacheGET_PUBLIC_AVAILABILITY: Business availability cacheGET_PUBLIC_CONTACT_INFO: Public contact information cacheSEARCH_PUBLIC_PROFILES: Business search results cache
Invalidation Strategy
Profile Updates: Invalidates
GET_BUSINESS_PROFILEandGET_PUBLIC_PROFILESettings Updates: Invalidates specific settings caches and public availability
Media Updates: Invalidates media-specific caches and public profile
Publication Changes: Invalidates all public-facing caches
Cascade Invalidation: Profile changes invalidate related public caches
Cache Decorators
Public Cache Strategies
Public Profile Cache:
Longer TTL (30 minutes) for stable public data
Invalidated on profile publication changes
Separate cache namespace for public data
Availability Cache:
Shorter TTL (5 minutes) for real-time data
Invalidated on schedule changes
Time-based cache keys for different time periods
Search Cache:
Medium TTL (15 minutes) for search results
Location-based cache partitioning
Invalidated on new business publications
Permission Integration
Permission Validation
All use cases integrate with the PermissionValidatorUseCase:
Required Permissions
READ_BUSINESS_PROFILE: View business profile information
EDIT_BUSINESS_PROFILE: Modify any aspect of business profile
PUBLIC_ACCESS: No authentication required (customer-facing endpoints)
Access Patterns
Read Operations: Require READ permission (internal) or PUBLIC_ACCESS (customer)
Update Operations: Require EDIT permission
Media Operations: Require EDIT permission
Settings Updates: Require EDIT permission
Public Operations: No authentication required but respect privacy settings
Customer Access Patterns
Public Endpoints (No Authentication):
Get public business profile
Search public business profiles
Get business availability information
Get public contact information
Get business media gallery
Get customer booking settings
Validate business access
Privacy Filtering:
Public endpoints automatically filter sensitive data
Respect business privacy settings
Only show published and active content
Geographic restrictions applied when configured
Error Handling
Exception Types
BusinessProfileNotFoundException: Profile not found
BusinessClientCreationException: Profile creation errors
PaymentSettingsValidationException: Payment configuration errors
MediaUploadException: File upload errors
SettingsValidationException: Settings validation errors
BusinessNotPublishedException: Business profile not published for public access
BusinessAccessDeniedException: Geographic or other access restrictions
InvalidSearchCriteriaException: Invalid search parameters
PublicDataFilterException: Error filtering public data
Error Logging
All use cases implement comprehensive error logging:
Customer-Specific Error Handling
Public Endpoint Errors:
Return sanitized error messages to customers
Log detailed errors for internal monitoring
Graceful degradation for partial data availability
Fallback mechanisms for unavailable services
Privacy Error Handling:
Never expose internal business data in errors
Return generic "not found" for inaccessible data
Respect privacy settings in error responses
Testing Considerations
Unit Testing
Mock dependencies (CommandBus, QueryBus, MediaService)
Test permission scenarios
Validate business rules
Test file upload/deletion scenarios
Validate settings objects independently
Integration Testing
Test with real database and file storage
Verify cache behavior
Test multi-tenant isolation
Validate media file operations
Example Test Scenarios
Profile Management: Create, update, retrieve profiles
Settings Validation: Test all settings objects validation
Media Operations: Upload, update, delete media files
Permission Tests: Verify access control
Cache Tests: Verify cache invalidation works correctly
Error Handling: Test exception scenarios
Multi-tenant: Verify tenant isolation
Public Access: Test customer-facing endpoints without authentication
Privacy Filtering: Verify sensitive data is filtered in public responses
Search Functionality: Test business search with various criteria
Availability Calculation: Test real-time availability logic
Geographic Search: Test location-based business discovery
Customer Use Case Testing
Public Endpoint Testing:
Search Testing:
Business Workflow Integration
Profile Setup Workflow
Initial Creation: Create basic profile during business registration
Information Completion: Add addresses, contacts, schedules
Settings Configuration: Configure booking and business settings
Media Upload: Add logo, banners, gallery images
Publication: Set profile as published for client visibility
Settings Management Workflow
Business Settings: Core operational parameters
Booking Settings: Customer interaction configuration
Payment Settings: Financial transaction setup
Notification Settings: Communication preferences
Panel Settings: Administrative interface customization
Media Management Workflow
Logo Management: Single primary business identifier
Banner Management: Multiple promotional images
Gallery Management: Portfolio of business work
Media Optimization: Automatic resizing and compression
Storage Management: Cloud storage with CDN delivery
Performance Considerations
Query Optimization
Use selective field projection
Implement proper indexing
Optimize media population queries
Cache frequently accessed data
Media Optimization
Automatic image compression
Multiple thumbnail sizes
CDN delivery for global performance
Lazy loading for large galleries
Cache Strategy
Profile-level caching for complete data
Component-level caching for settings
Media-specific caching for assets
Intelligent cache invalidation
Last updated
Was this helpful?