# Farm Manager API - Setup Guide

## Requirements
- PHP 8.2+
- Composer
- MySQL 8.0
- cPanel / Shared Hosting (or local XAMPP/Laragon)

---

## Step 1 — Install Dependencies

```bash
composer install
```

---

## Step 2 — Environment Configuration

```bash
cp .env.example .env
php artisan key:generate
```

Edit `.env` with your database and Pusher credentials:

```env
DB_DATABASE=farm_manager
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password

PUSHER_APP_ID=your_app_id
PUSHER_APP_KEY=your_app_key
PUSHER_APP_SECRET=your_app_secret
PUSHER_APP_CLUSTER=ap2
```

---

## Step 3 — Database Setup

**Option A — Via Laravel migrations (recommended):**
```bash
php artisan migrate --seed
```

**Option B — Import SQL directly (phpMyAdmin):**
1. Create database `farm_manager` in phpMyAdmin
2. Import `database/schema.sql`

---

## Step 4 — Storage Link

```bash
php artisan storage:link
```

---

## Step 5 — Default Admin Credentials

| Field    | Value                   |
|----------|-------------------------|
| Email    | admin@farmmanager.com   |
| Password | Admin@123               |

---

## API Base URL

```
https://yourdomain.com/api/v1/
```

---

## Postman Testing

### Login
```
POST /api/v1/auth/login
Content-Type: application/json

{
  "email": "admin@farmmanager.com",
  "password": "Admin@123"
}
```

### Use Token
```
GET /api/v1/auth/me
Authorization: Bearer {token_from_login}
```

---

## Shared Hosting (cPanel) Deployment

1. Upload `backend/` to `public_html/api/` (or subdomain root)
2. Set document root to `public/`
3. Run via SSH: `composer install --no-dev --optimize-autoloader`
4. Import `database/schema.sql` via phpMyAdmin
5. Set up `.env` via File Manager
6. Run `php artisan key:generate`
7. Run `php artisan storage:link`

---

## API Endpoints Summary

| Method | Endpoint                          | Auth | Role  | Description         |
|--------|-----------------------------------|------|-------|---------------------|
| POST   | /api/v1/auth/login                | No   | Any   | Login               |
| GET    | /api/v1/auth/me                   | Yes  | Any   | Current user info   |
| POST   | /api/v1/auth/logout               | Yes  | Any   | Logout              |
| GET    | /api/v1/users                     | Yes  | Any   | List users          |
| POST   | /api/v1/users                     | Yes  | Admin | Create user         |
| GET    | /api/v1/users/{id}                | Yes  | Any   | Get user            |
| PUT    | /api/v1/users/{id}                | Yes  | Admin | Update user         |
| DELETE | /api/v1/users/{id}                | Yes  | Admin | Delete user         |
| PATCH  | /api/v1/users/{id}/freeze         | Yes  | Admin | Freeze/unfreeze     |
| GET    | /api/v1/units                     | Yes  | Any   | List units          |
| POST   | /api/v1/units                     | Yes  | Admin | Create unit + QR    |
| GET    | /api/v1/units/{id}                | Yes  | Any   | Get unit            |
| PUT    | /api/v1/units/{id}                | Yes  | Admin | Update unit         |
| DELETE | /api/v1/units/{id}                | Yes  | Admin | Delete unit         |
| GET    | /api/v1/units/qr/{data}           | Yes  | Any   | Find unit by QR     |
| GET    | /api/v1/units/{id}/entries        | Yes  | Any   | List entries        |
| POST   | /api/v1/units/{id}/entries        | Yes  | User  | Create entry        |
| GET    | /api/v1/units/{id}/entries/{eid}  | Yes  | Any   | Get entry           |
| PUT    | /api/v1/units/{id}/entries/{eid}  | Yes  | User  | Update entry        |
| DELETE | /api/v1/units/{id}/entries/{eid}  | Yes  | Admin | Delete entry        |
| GET    | /api/v1/checklist-configs         | Yes  | Any   | List configs        |
| POST   | /api/v1/checklist-configs         | Yes  | Admin | Create config       |
| PUT    | /api/v1/checklist-configs/{id}    | Yes  | Admin | Update config       |
| DELETE | /api/v1/checklist-configs/{id}    | Yes  | Admin | Delete config       |
| PATCH  | /api/v1/checklist-configs/reorder | Yes  | Admin | Reorder fields      |
