- Refactored cooperation workflow to include manual status transitions.
- Implemented payment tracking with CooperationPayment model and PayAction.
- Updated UpdateCooperationStatusCommand for automatic assignment and verification transitions.
- Removed deprecated date columns (assignment_deadline, verification_deadline).
- Enhanced Filament UI with new actions (Complete, Proceed to Payment, Pay).
- Added CooperationSeeder for testing purposes.
- Introduce `CheerfulNotification` utility class to standardize cheerful and expressive notifications across the application.
- Refactor custom "Cheerful" actions (Create, Edit, Delete, etc.) and `DefaultBulkActions` to utilize the new utility class.
- Update all `ToggleColumn` status updates in Master Data modules to use `CheerfulNotification::statusUpdated()`.
- Replace inline `Notification::make()` calls in custom actions (Reply, Crawl News, Cooperation actions) and Resource Pages with `CheerfulNotification` methods.
- Address various lint errors by standardizing the use of the `Auth` facade and improving type hinting for the authenticated `User` model.
- Added detailed notifications for users and admins upon acceptance, rejection, and submission of proposals, verifications, and reports.
- Improved user experience with personalized messages and actionable links in notifications.
- Refactored notification logic across various actions to ensure consistent messaging and clarity.
- Introduced new notification titles and bodies to better reflect the status of actions taken.
- Removed the autocomplete option from date picker components in CreateTaskAssignmentAction and CooperationForm to enhance user experience and ensure consistent behavior across forms.
- Added type hinting for the Set utility in CooperationForm for improved clarity and type safety.
- Added comprehensive parameter and return type hinting to closures across various Filament resources, actions, and relation managers to improve type safety and static analysis.
- Fixed logic in ReportRelationManager where report count was incorrectly compared, preventing the 'Buat Laporan' button from showing correctly.
- Corrected namespaces for RepeatableEntry and TextEntry in ViewCooperation (changed from Filament\Schemas to Filament\Infolists).
- Fixed component rendering in JournalistResource form by ensuring sections are correctly returned in the mapping.
- Added @var docblocks to resolve lint errors related to auth()->user() and verified query builder return types.
- Standardized file retrieval logic in PartnerResource and improved overall code reliability."
- Refactor custom Filament actions into resource-specific subfolders (Cooperation, Proposal, Report).
- Standardize all action identifiers to snake_case for consistency.
- Move action identifiers directly into ::make('name') calls.
- Remove getDefaultName() from custom action classes to favor explicit naming.
- Update relation managers and resources to use the new namespaced action classes.
- Standardize closure syntax (fn) and string formatting across schemas and actions.
- Added local scopes for Enum-based fields (status, type, decision) in models: Cooperation, VerificationRequest, PartnerMedia, CooperationProposal, CooperationMedia, and VerificationReview.
- Refactored query logic in Commands, Services, and Filament Resources to use the new scopes for better readability and maintainability.
- Added specific pivot status scopes in PartnerMedia model for cleaner relationship filtering.
- Fixed incorrect Enum usage in ViewCooperation.php during the refactoring process.
- Standardized code style for closures and string concatenation in the modified files.
- Removed debug statement from CreateCooperation.php.
- Updated CooperationProposalRelationManager to include a detailed infolist schema with media and status information.
- Improved proposal creation logic in CooperationsTable to handle proposal attachments and store them in the media library.
- Implemented media handling in CooperationProposal model for better integration with file uploads.
- Updated JournalistResource to conditionally display actions based on user roles and verification status.
- Modified ManageJournalists page to hide header actions if verification request status is not NEED_REVISION.
- Changed CategoryResource navigation label from 'Kategori Berita' to 'Kategori'.
- Adjusted ManageCategories page to reflect the new category label and modal headings.
- Refactored Company model to change verificationRequest relationship from MorphOne to HasOne.
- Removed verificationRequest method from Journalist and PartnerMedia models.
- Updated VerificationRequest model to change verifiable relationship from MorphTo to BelongsTo.
- Introduced VerificationService to handle verification logic, including data completeness checks and submission processes.
- Created a new migration to adjust the verification_requests table structure.
- Enhanced admin verification view to display detailed verification progress and review history.
- Updated company and media forms to conditionally show the save button based on verification request status.
- Introduced the AnnouncementMedia model, removing soft deletes for a simplified structure.
- Added AnnouncementMediaFactory for generating test data with relationships to Announcement and PartnerMedia.
- Created migration for the announcement_media table without soft deletes.
- Added the Heroicon import to ContentRecapsTable, IssueManagementTable, MediaMonitoringsTable, and NewsTable for consistency in icon usage across various resources.
- Replaced the default empty state icon 'heroicon-o-bookmark' with specific Heroicon variants for improved visual representation in the Journalist, Partner, Classification, Department, Location, SubClassification, SubLocation, Theme, User, ContentRecaps, IssueManagements, MediaMonitorings, Announcement, and News resources.
- Updated the empty state description to ensure consistency across resources.
- Introduced a many-to-many relationship in PartnerMedia for announcements.
- Added a has-many relationship in User for news authored by the user.
- Implemented an active scope in User for filtering active users.
- Created NewsResource for managing news entries.
- Added pages for creating, editing, and listing news.
- Defined NewsForm schema for news entry forms.
- Configured NewsTable for displaying news records with actions.
- Implemented News model with relationships and soft deletes.
- Added factories for generating test data for news and tags.
- Created migrations for news and tags tables.
- Add HasFactory trait to all model classes for factory support
- Create factory classes for all models (Classification, Company, ContentRecap, Department, IssueManagement, Journalist, Location, MediaMonitoring, MediaMonitoringTheme, PartnerMedia, SubClassification, SubLocation, Theme, User)
- Add unit tests for all models with relationship and attribute validation
- Add unit tests for all enums (Channel, ContentType, IsActive, IssueSentiment, MediaClassification, MediaType, SocialMedia)
- Add feature tests for factory integration and basic application functionality
- Add tests for Filament actions, columns, and media library utilities
- Add tests for model policies (Classification, Theme) and traits (WithComment, WithValue)
- Update phpunit.xml configuration for test environment
- Add test documentation and working tests reference guide
- Add ContentType enum casting to ContentRecap model
- Add MediaMonitoringTheme relationships and factory support
- Establish comprehensive testing infrastructure for improved code quality and reliability
- Introduced CSS styles for .fi-simple-layout and .fi-simple-main classes.
- Implemented background image, gradient overlays, and responsive design features.
- Added support for dark mode and backdrop filters to enhance visual aesthetics.
- Created SubClassificationPolicy to manage authorization for SubClassification actions.
- Created SubLocationPolicy to manage authorization for SubLocation actions.
- Created UserPolicy to manage authorization for User actions.
- Integrate Filament Shield for role and permission management
- Updated DashboardPanelProvider to include FilamentShieldPlugin.
- Added filament-shield package to composer.json and updated composer.lock.
- Created filament-shield.php configuration file for Shield settings.
- Created permission.php configuration file for Spatie permissions.
- Added migration for creating permission tables.
- Created ShieldSeeder to seed roles and permissions.
- Updated DatabaseSeeder to include ShieldSeeder.
- Updated UserSeeder to assign the Developer role to the created user.