# Implementation Plan: Phase 1 & 2 Features This document outlines the implementation plan for Phase 1 & 2 features of the HVAC Community Events Management System. ## Goal Implement Phase 1 features: Community Login Page, Registration Page, Basic Dashboard, Create/Modify Event Pages, Event Summary Page. Implement Phase 2 features: Zoho CRM API Integration, Email Attendees functionality, Enhanced event management, and Comprehensive transaction reporting. ## Tasks - [ ] **Phase 1: Core Functionality** - [ ] **1. Implement Community Registration Page** - [ ] 1.1. Create a custom registration form with the required fields as specified in `docs/REQUIREMENTS.md`. - [ ] 1.2. Implement input validation and sanitization as specified in `docs/REQUIREMENTS.md`. - [ ] 1.3. Implement logic to create a new user with the "hvac_trainer" role. - [ ] 1.4. Implement logic to create a Training Venue Profile if the user selects "Yes". - [ ] 1.5. Implement logic to add custom fields to the user's profile, including mapping to The Events Calendar organizer fields. - [ ] 1.6. Implement email notification to admin upon new registration. - [ ] 1.7. Add unit tests for registration form validation. - [ ] 1.8. Add integration tests to verify user creation, profile updates, and organizer mapping. - [ ] **2. Implement Community Login Page** - [ ] 2.1. Create a custom login form. - [ ] 2.2. Implement authentication logic. - [ ] 2.3. Implement "Remember me" option. - [ ] 2.4. Implement password reset functionality. - [ ] 2.5. Redirect to Trainer Dashboard after successful login. - [ ] 2.6. Add unit tests for authentication logic. - [ ] 2.7. Add integration tests to verify login and redirection. - [ ] **3. Implement Trainer Dashboard** - [ ] 3.1. Create a custom dashboard page. - [ ] 3.2. Add navigation buttons for Create Event, View Trainer Profile, and Logout. - [ ] 3.3. Implement Overall Statistics Summary (Total events, Upcoming events, Past events, Tickets sold, Revenue generated) as specified in `docs/REQUIREMENTS.md`. - [ ] 3.4. Implement Events Table with Event Status, Event name, Event date, Event organizer, Total capacity, Tickets sold, and Total revenue as specified in `docs/REQUIREMENTS.md`. - [ ] 3.5. Add sorting/filtering capabilities to the Events Table. - [ ] 3.6. Add unit tests for dashboard statistics calculations. - [ ] 3.7. Add integration tests to verify dashboard data is displayed correctly. - [ ] **4. Implement Create/Modify Event Pages** - [ ] 4.1. Create custom event creation and modification pages. - [ ] 4.2. Leverage functionality from The Events Calendar Community Events plugin. - [ ] 4.3. Add instructions section to the pages. - [ ] 4.4. Add Return to Dashboard button. - [ ] 4.5. Add unit tests for event creation and modification logic. - [ ] 4.6. Add integration tests to verify events are created and modified correctly in The Events Calendar. - [ ] **5. Implement Event Summary Page** - [ ] 5.1. Create a custom event summary page. - [ ] 5.2. Display Event Details (Time & Date, Location, Organizers, Tickets information, Event description). - [ ] 5.3. Implement Transactions Table with Purchaser Name, Purchaser Organization, Purchase Date/Time, Number of Tickets, and Total Revenue. - [ ] 5.4. Add unit tests for event summary data retrieval. - [ ] 5.5. Add integration tests to verify event summary data is displayed correctly. - [ ] **Phase 2: Enhanced Features** - [ ] **1. Implement Zoho CRM API Integration** - [ ] 1.1. Research Zoho CRM API and identify relevant endpoints. - [ ] 1.2. Create a Zoho CRM API client class in PHP. - [ ] 1.3. Implement authentication with Zoho CRM API. - [ ] 1.4. Implement function to create records for each training event in the "Campaigns" table. - [ ] 1.5. Implement function to update each Campaign record with ticket sales, attendance & certificate activities. - [ ] 1.6. Create settings page to configure Zoho CRM API credentials. - [ ] 1.7. Add unit tests for Zoho CRM API client class. - [ ] 1.8. Add integration tests to verify data is synced to Zoho CRM. - [ ] **2. Implement Email Attendees Functionality** - [ ] 2.1. Create an "Email Attendees" page in the trainer dashboard. - [ ] 2.2. Add filtering options for event selector, ticket type, and attendee filter. - [ ] 2.3. Implement a rich-text editor for email body. - [ ] 2.4. Add CC field and subject line. - [ ] 2.5. Implement function to send emails to selected attendees. - [ ] 2.6. Add unit tests for email sending functionality. - [ ] 2.7. Add integration tests to verify emails are sent correctly. - [ ] **3. Implement Enhanced Event Management** - [ ] 3.1. Review existing event management features and identify areas for enhancement. - [ ] 3.2. Implement new features based on trainer feedback and requirements. (Details TBD) - [ ] 3.3. Add unit tests for new event management features. - [ ] 3.4. Add integration tests to verify new features work correctly with The Events Calendar. - [ ] **4. Implement Comprehensive Transaction Reporting** - [ ] 4.1. Create an "Order Summary" page with basic details. - [ ] 4.2. Display order number, purchaser name and email, date of purchase, number of tickets, and total price. - [ ] 4.3. Display attendee information for each ticket purchased. - [ ] 4.4. Add filtering and sorting capabilities to the transaction table. - [ ] 4.5. Add unit tests for transaction reporting functionality. - [ ] 4.6. Add integration tests to verify transaction data is displayed correctly. ## Testing and Deployment - **Development Environment:** All development and testing should be performed within the Docker-based development environment as described in the `wordpress-dev` directory. - **Production Data:** The production website should only be accessed to download all of the production server data as a reference and to import into the dev server so that the dev server environment mirrors the production server. - **Testing:** - **Unit Tests:** Use PHPUnit to test individual classes and functions. - **Integration Tests:** Use WordPress testing framework to test integration with WordPress and The Events Calendar. - **E2E Tests:** Use Playwright to test user journeys and UI interactions. - **Deployment:** Follow the configuration-based deployment process outlined in `docs/deployment.md`. ## Status - [ ] Not Started - [ ] In Progress - [ ] Complete