# CuraHealthLine Admin Backend - Implementation Guide

## Overview
This guide provides a complete blueprint for implementing the CuraHealthLine admin backend. Follow the steps in order for best results.

## Phase 1: Foundation (PRIORITY - START HERE)

### 1.1 Run Migrations
```bash
php artisan migrate
```

### 1.2 Create First Admin User
```bash
php artisan tinker
```
```php
App\Models\Admin::create([
    'name' => 'Super Admin',
    'email' => 'admin@curahealthline.com',
    'password' => bcrypt('password'),
    'role' => 'super_admin',
    'status' => 'active'
]);
```

### 1.3 Configure Admin Guard
Add to `config/auth.php`:

```php
'guards' => [
    // ...existing guards
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    // ...existing providers
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],
```

### 1.4 Create Admin Middleware
File: `app/Http/Middleware/AdminAuth.php`
```php
<?php
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class AdminAuth
{
    public function handle(Request $request, Closure $next, ...$roles)
    {
        if (!auth('admin')->check()) {
            return redirect()->route('admin.login');
        }

        $admin = auth('admin')->user();

        if ($admin->status !== 'active') {
            auth('admin')->logout();
            return redirect()->route('admin.login')
                ->withErrors(['Your account has been suspended.']);
        }

        if (!empty($roles) && !in_array($admin->role, $roles)) {
            abort(403, 'Unauthorized action.');
        }

        return $next($request);
    }
}
```

Register in `app/Http/Kernel.php`:
```php
protected $middlewareAliases = [
    // ...
    'admin' => \App\Http\Middleware\AdminAuth::class,
];
```

## Phase 2: Authentication & Layout

### 2.1 Admin Authentication Controller
File: `app/Http/Controllers/Admin/AuthController.php`

### 2.2 Admin Routes
File: `routes/admin.php` (create new file)
```php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\AuthController;
use App\Http\Controllers\Admin\DashboardController;

// Guest routes
Route::middleware('guest:admin')->group(function () {
    Route::get('/login', [AuthController::class, 'showLogin'])->name('admin.login');
    Route::post('/login', [AuthController::class, 'login'])->name('admin.login.post');
});

// Authenticated admin routes
Route::middleware('admin')->group(function () {
    Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout');
    Route::get('/', [DashboardController::class, 'index'])->name('admin.dashboard');
    
    // Nurses
    Route::prefix('nurses')->name('admin.nurses.')->group(function () {
        // Routes will be added
    });
    
    // Employers
    Route::prefix('employers')->name('admin.employers.')->group(function () {
        // Routes will be added
    });
    
    // Jobs
    Route::prefix('jobs')->name('admin.jobs.')->group(function () {
        // Routes will be added
    });
    
    // ... more route groups
});
```

Add to `bootstrap/app.php` or `RouteServiceProvider`:
```php
Route::prefix('admin')
    ->middleware('web')
    ->group(base_path('routes/admin.php'));
```

### 2.3 Admin Layout
File: `resources/views/admin/layouts/app.blade.php`
Structure:
- Top navbar with logo, admin name, dropdown
- Left sidebar with navigation menu
- Main content area with breadcrumbs
- TailwindCSS styling

### 2.4 Login View
File: `resources/views/admin/auth/login.blade.php`

## Phase 3: Dashboard

### 3.1 Dashboard Controller
File: `app/Http/Controllers/Admin/DashboardController.php`
Methods:
- `index()` - Main dashboard with KPIs

### 3.2 Dashboard Service
File: `app/Services/Admin/DashboardStatsService.php`
Methods:
- `getKpiCards()` - Total/new nurses, employers, jobs, posts
- `getChartsData()` - Growth charts
- `getPendingItems()` - Approvals, verifications, reports

### 3.3 Dashboard View
File: `resources/views/admin/dashboard.blade.php`
Sections:
- KPI cards grid (4 columns)
- Charts row (2 charts)
- Pending items tables

## Phase 4: Nurses Management

### 4.1 Nurses Controller
File: `app/Http/Controllers/Admin/NurseController.php`
Methods:
- `index()` - List with filters
- `show($id)` - Detail page
- `update($id)` - Update status/notes
- `suspend($id)` - Suspend account
- `activate($id)` - Activate account

### 4.2 Nurses Views
Files:
- `resources/views/admin/nurses/index.blade.php` - Table with filters
- `resources/views/admin/nurses/show.blade.php` - Profile detail
- `resources/views/admin/nurses/partials/filters.blade.php`
- `resources/views/admin/nurses/partials/stats-card.blade.php`

### 4.3 Form Requests
File: `app/Http/Requests/Admin/UpdateNurseRequest.php`

## Phase 5: Employers Management

### 5.1 Employers Controller
File: `app/Http/Controllers/Admin/EmployerController.php`
Methods:
- `index()` - List with filters
- `show($id)` - Detail with stats, ratings, reports
- `update($id)` - Update info/status
- `toggleVerification($id)` - Verify/unverify
- `updateStatus($id)` - Change status
- `recomputeScores($id)` - Trigger reputation/risk recalc

### 5.2 Employers Views
Files:
- `resources/views/admin/employers/index.blade.php`
- `resources/views/admin/employers/show.blade.php`
- `resources/views/admin/employers/partials/ratings-summary.blade.php`
- `resources/views/admin/employers/partials/reports-summary.blade.php`

## Phase 6: Jobs Management

### 6.1 Jobs Controller
File: `app/Http/Controllers/Admin/JobController.php`
Methods:
- `index()` - List with filters
- `show($id)` - Detail
- `approve($id)` - Approve job
- `reject($id)` - Reject job
- `toggleFeatured($id)` - Feature/unfeature
- `unpublish($id)` - Unpublish job

### 6.2 Jobs Views
Files:
- `resources/views/admin/jobs/index.blade.php`
- `resources/views/admin/jobs/show.blade.php`

## Phase 7: NurseConnect - Posts & Categories

### 7.1 Posts Controller
File: `app/Http/Controllers/Admin/PostController.php`

### 7.2 Categories Controller
File: `app/Http/Controllers/Admin/PostCategoryController.php`

### 7.3 Posts Views
Files:
- `resources/views/admin/posts/index.blade.php`
- `resources/views/admin/posts/show.blade.php`
- `resources/views/admin/categories/index.blade.php`
- `resources/views/admin/categories/create.blade.php`

## Phase 8: Messaging & Reports

### 8.1 Messaging Abuse Controller
File: `app/Http/Controllers/Admin/MessagingAbuseController.php`

### 8.2 Employer Reports Controller
File: `app/Http/Controllers/Admin/EmployerReportController.php`

### 8.3 Content Reports Controller
File: `app/Http/Controllers/Admin/ContentReportController.php`

### 8.4 Reports Views
Files:
- `resources/views/admin/reports/messaging-abuse/index.blade.php`
- `resources/views/admin/reports/employers/index.blade.php`
- `resources/views/admin/reports/employers/show.blade.php`
- `resources/views/admin/reports/content/index.blade.php`

## Phase 9: Reputation & Ratings

### 9.1 Reputation Controller
File: `app/Http/Controllers/Admin/ReputationController.php`

### 9.2 Ratings Views
Files:
- `resources/views/admin/reputation/ratings/index.blade.php`
- `resources/views/admin/reputation/employer-ratings.blade.php`
- `resources/views/admin/reputation/config.blade.php`

## Phase 10: CMS

### 10.1 Pages Controller
File: `app/Http/Controllers/Admin/PageController.php`

### 10.2 FAQ Controller
File: `app/Http/Controllers/Admin/FaqController.php`

### 10.3 Blog Controller
File: `app/Http/Controllers/Admin/BlogController.php`

### 10.4 Migrations for CMS
```bash
php artisan make:migration create_pages_table
php artisan make:migration create_faqs_table
php artisan make:migration create_blog_posts_table
```

## Phase 11: Taxonomy

### 11.1 Specialties Controller
File: `app/Http/Controllers/Admin/SpecialtyController.php`

### 11.2 Countries Controller
File: `app/Http/Controllers/Admin/CountryController.php`

### 11.3 Tags Controller
File: `app/Http/Controllers/Admin/TagController.php`

### 11.4 Migrations
```bash
php artisan make:migration create_specialties_table
php artisan make:migration create_countries_table
php artisan make:migration create_tags_table
```

## Phase 12: Settings & Feature Flags

### 12.1 Settings Controller
File: `app/Http/Controllers/Admin/SettingsController.php`

### 12.2 Settings Migration
```bash
php artisan make:migration create_settings_table
```

Schema:
```php
Schema::create('settings', function (Blueprint $table) {
    $table->id();
    $table->string('key')->unique();
    $table->text('value')->nullable();
    $table->string('type')->default('string'); // string, boolean, json
    $table->string('group')->default('general'); // general, notifications, features
    $table->text('description')->nullable();
    $table->timestamps();
});
```

### 12.3 Settings Service
File: `app/Services/Admin/SettingsService.php`

## Phase 13: Admin Users & Audit Logs

### 13.1 Admin Users Controller
File: `app/Http/Controllers/Admin/AdminUserController.php`

### 13.2 Audit Logs Controller
File: `app/Http/Controllers/Admin/AuditLogController.php`

### 13.3 Views
Files:
- `resources/views/admin/admin-users/index.blade.php`
- `resources/views/admin/admin-users/create.blade.php`
- `resources/views/admin/admin-users/edit.blade.php`
- `resources/views/admin/audit-logs/index.blade.php`

## Reusable Components

### Blade Components to Create

1. **Alert Component**
File: `resources/views/admin/components/alert.blade.php`

2. **DataTable Component**
File: `resources/views/admin/components/data-table.blade.php`

3. **Status Badge Component**
File: `resources/views/admin/components/status-badge.blade.php`

4. **Filter Form Component**
File: `resources/views/admin/components/filter-form.blade.php`

5. **Breadcrumbs Component**
File: `resources/views/admin/components/breadcrumbs.blade.php`

## Helper Services

### 1. Activity Logger Service
File: `app/Services/Admin/ActivityLoggerService.php`
Usage everywhere admin actions occur

### 2. Filter Service
File: `app/Services/Admin/FilterService.php`
Reusable filtering logic

## Testing Strategy

1. Create admin feature tests
2. Test authentication flow
3. Test role permissions
4. Test CRUD operations
5. Test audit logging

## Security Checklist

- ✅ Admin guard separate from user guards
- ✅ All admin routes protected by middleware
- ✅ Role-based permissions enforced
- ✅ Activity logging on sensitive actions
- ✅ CSRF protection on all forms
- ✅ Input validation via Form Requests
- ✅ SQL injection prevention (use Eloquent)
- ✅ XSS prevention (Blade auto-escaping)

## Performance Optimization

1. Eager load relationships to avoid N+1
2. Add database indexes on filtered columns
3. Cache settings and taxonomy data
4. Paginate all list views
5. Use query scopes for complex filters

## File Structure Summary

```
app/
├── Http/
│   ├── Controllers/
│   │   └── Admin/
│   │       ├── AuthController.php
│   │       ├── DashboardController.php
│   │       ├── NurseController.php
│   │       ├── EmployerController.php
│   │       ├── JobController.php
│   │       ├── PostController.php
│   │       ├── PostCategoryController.php
│   │       ├── MessagingAbuseController.php
│   │       ├── EmployerReportController.php
│   │       ├── ContentReportController.php
│   │       ├── ReputationController.php
│   │       ├── PageController.php
│   │       ├── FaqController.php
│   │       ├── BlogController.php
│   │       ├── SpecialtyController.php
│   │       ├── CountryController.php
│   │       ├── TagController.php
│   │       ├── SettingsController.php
│   │       ├── AdminUserController.php
│   │       └── AuditLogController.php
│   ├── Requests/
│   │   └── Admin/
│   │       ├── LoginRequest.php
│   │       ├── UpdateNurseRequest.php
│   │       ├── UpdateEmployerRequest.php
│   │       ├── StoreAdminUserRequest.php
│   │       └── ... (more form requests)
│   └── Middleware/
│       └── AdminAuth.php
├── Models/
│   ├── Admin.php ✅
│   └── AdminActivityLog.php ✅
├── Services/
│   └── Admin/
│       ├── DashboardStatsService.php
│       ├── ActivityLoggerService.php
│       ├── FilterService.php
│       └── SettingsService.php
└── Policies/
    └── AdminPolicy.php

resources/
└── views/
    └── admin/
        ├── layouts/
        │   ├── app.blade.php
        │   └── guest.blade.php
        ├── components/
        │   ├── alert.blade.php
        │   ├── data-table.blade.php
        │   ├── status-badge.blade.php
        │   ├── filter-form.blade.php
        │   └── breadcrumbs.blade.php
        ├── auth/
        │   └── login.blade.php
        ├── dashboard.blade.php
        ├── nurses/
        ├── employers/
        ├── jobs/
        ├── posts/
        ├── categories/
        ├── reports/
        ├── reputation/
        ├── cms/
        ├── taxonomy/
        ├── settings/
        ├── admin-users/
        └── audit-logs/

routes/
└── admin.php

database/
└── migrations/
    ├── 2025_12_02_000001_create_admins_table.php ✅
    ├── 2025_12_02_000002_create_admin_activity_logs_table.php ✅
    ├── xxxx_create_pages_table.php
    ├── xxxx_create_faqs_table.php
    ├── xxxx_create_blog_posts_table.php
    ├── xxxx_create_specialties_table.php
    ├── xxxx_create_countries_table.php
    ├── xxxx_create_tags_table.php
    └── xxxx_create_settings_table.php
```

## Next Steps

1. ✅ Migrations created (admins, admin_activity_logs)
2. ✅ Models created (Admin, AdminActivityLog)
3. ➡️ Configure auth.php guard
4. ➡️ Create AdminAuth middleware
5. ➡️ Create admin routes file
6. ➡️ Create AuthController
7. ➡️ Create admin layout
8. ➡️ Create login view
9. ➡️ Run migrations
10. ➡️ Create first admin user
11. ➡️ Test admin login
12. ➡️ Build dashboard
13. ➡️ Continue with other modules...

## Estimated Timeline

- Phase 1-2 (Auth & Layout): 2-4 hours
- Phase 3 (Dashboard): 2-3 hours  
- Phase 4-6 (Nurses, Employers, Jobs): 6-8 hours
- Phase 7-8 (Posts & Reports): 4-6 hours
- Phase 9-11 (Reputation, CMS, Taxonomy): 6-8 hours
- Phase 12-13 (Settings & Admin Management): 3-4 hours
- Testing & Polish: 4-6 hours

**Total**: 27-39 hours of focused development

Would you like me to continue implementing specific phases, or would you prefer to take this guide and implement it yourself?
