# Unified File and Document System

## Summary

The file and document handling system has been simplified to use only the `cloud-storage` routes. All file and document operations are handled through a single controller with specific methods for each operation.

## Main Routes (under `/setup/cloud-storage`)

### File Operations
- `POST /setup/cloud-storage/upload` - Upload files
- `GET /setup/cloud-storage/files` - List files
- `POST /setup/cloud-storage/folder` - Create folder
- `POST /setup/cloud-storage/share` - Share file
- `POST /setup/cloud-storage/configure-permissions` - Configure permissions

### Document Operations
- `POST /setup/cloud-storage/document` - Create Google Doc
- `POST /setup/cloud-storage/spreadsheet` - Create Google Sheets

## Redirect Routes (Compatibility)

### Files (under `/files`)
- `GET /files` - File list
- `GET /files/create` - Creation form
- `POST /files/store` - Redirects to `cloud-storage/upload`
- `POST /files/upload` - Redirects to `cloud-storage/upload`
- `GET /files/list` - Redirects to `cloud-storage/files`
- `POST /files/folder` - Redirects to `cloud-storage/folder`
- `POST /files/share` - Redirects to `cloud-storage/share`

### Documents (under `/document`)
- `GET /document` - Document list
- `GET /document/create` - Create document
- `GET /document/store` - Redirects to `cloud-storage/document`
- `POST /document/upload` - Redirects to `cloud-storage/upload`
- `POST /document/document` - Redirects to `cloud-storage/document`
- `POST /document/spreadsheet` - Redirects to `cloud-storage/spreadsheet`
- `GET /document/files` - Redirects to `cloud-storage/files`
- `POST /document/folder` - Redirects to `cloud-storage/folder`
- `POST /document/share` - Redirects to `cloud-storage/share`

## Controller Methods

### For Uploading Files
```php
public function uploadFile(Request $request)
```

### For Creating Documents
```php
public function createDocument(Request $request)
public function createSpreadsheet(Request $request)
```

### For File Operations
```php
public function listFiles(Request $request)
public function createFolder(Request $request)
public function shareFile(Request $request)
public function configureFilePermissions(Request $request)
```

## Route Usage

### Upload File
```javascript
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('name', 'My File.pdf'); // optional
formData.append('path', '/folder'); // optional, default '/'
formData.append('provider', 'google'); // optional

fetch('/setup/cloud-storage/upload', {
    method: 'POST',
    body: formData
});
```

### Create Document
```javascript
const formData = new FormData();
formData.append('name', 'My Document');
formData.append('folder_id', 'optional_folder_id'); // optional
formData.append('provider', 'google'); // optional

fetch('/setup/cloud-storage/document', {
    method: 'POST',
    body: formData
});
```

### Create Spreadsheet
```javascript
const formData = new FormData();
formData.append('name', 'My Spreadsheet');
formData.append('folder_id', 'optional_folder_id'); // optional
formData.append('provider', 'google'); // optional

fetch('/setup/cloud-storage/spreadsheet', {
    method: 'POST',
    body: formData
});
```

## Parameters

### For Files (`/upload`)
- `file` (required): The file to upload
- `name` (optional): Custom file name
- `path` (optional): Path to save (default '/')
- `folder_id` (optional): Specific folder ID
- `provider` (optional): 'google' or 'microsoft'

### For Documents (`/document`, `/spreadsheet`)
- `name` (required): Document name
- `folder_id` (optional): Specific folder ID
- `provider` (optional): 'google' or 'microsoft'

### For Folders (`/folder`)
- `name` (required): Folder name
- `parent_folder_id` (optional): Parent folder ID
- `provider` (optional): 'google' or 'microsoft'

### For Sharing (`/share`)
- `document_id` (required): Document ID
- `permissions` (required): Permissions array
- `provider` (optional): 'google' or 'microsoft'

## Responses

### File Uploaded Successfully
```json
{
    "success": true,
    "message": "File uploaded successfully",
    "document": {
        "id": 123,
        "name": "My File.pdf",
        "google_id": "1ABC123DEF456",
        "url": "https://drive.google.com/file/d/1ABC123DEF456/view?usp=sharing"
    },
    "file_id": "1ABC123DEF456",
    "url": "https://drive.google.com/file/d/1ABC123DEF456/view?usp=sharing"
}
```

### Document Created Successfully
```json
{
    "success": true,
    "message": "Document created successfully",
    "document": {
        "id": 124,
        "name": "My Document",
        "google_id": "1DEF456GHI789",
        "url": "https://docs.google.com/document/d/1DEF456GHI789/edit?usp=sharing"
    },
    "document_id": "1DEF456GHI789",
    "url": "https://docs.google.com/document/d/1DEF456GHI789/edit?usp=sharing"
}
```

## Simplification Benefits

1. **Unique Routes**: All operations use the same `cloud-storage` routes
2. **Compatibility**: Old routes redirect automatically
3. **Maintenance**: Single place for all operations
4. **Consistency**: Same response format for all operations
5. **Flexibility**: Support for multiple providers (Google, Microsoft)

## Migration

### Before (Separate Routes)
```javascript
// Upload file
fetch('/files/store', { method: 'POST', body: formData });

// Create document
fetch('/document/store', { method: 'POST', body: formData });
```

### Now (Unified Routes)
```javascript
// Upload file
fetch('/setup/cloud-storage/upload', { method: 'POST', body: formData });

// Create document
fetch('/setup/cloud-storage/document', { method: 'POST', body: formData });
```

## Compatibility

- ✅ Existing routes redirect automatically
- ✅ Existing forms continue to work
- ✅ Responses maintain the same format
- ✅ Support for cloud storage and legacy system
