GWM : multiple file upload

This commit is contained in:
Gowtham M 2025-11-26 16:56:00 +05:30
parent fabae5dca6
commit e64bbd7fa2
3 changed files with 156 additions and 2 deletions

View File

@ -87,6 +87,10 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) {
$routes->post('enquiry/createEnquiry', 'EnquiryController::createEnquiry');
$routes->post('enquiry/updateEnquiry', 'EnquiryController::updateEnquiry');
$routes->get('enquiry/downloadEnquiryFile', 'EnquiryController::downloadEnquiryFile');
$routes->post('enquiry/uploadEnquiryFiles', 'EnquiryController::uploadEnquiryFiles');
$routes->get('enquiry/downloadEnquiryFiles', 'EnquiryController::downloadEnquiryFiles');
$routes->get('enquiry/enquiryFiles', 'EnquiryController::enquiryFiles');
//Proposal
$routes->get('quotation/quotationList', 'QuotationController::quotationList');

View File

@ -8,6 +8,7 @@ use App\Models\AgentModel;
use App\Models\EnquiryModel;
use App\Models\QuotationModel;
use App\Models\PolicyModel;
use App\Models\FilesModel;
use DateTime;
class EnquiryController extends ResourceController
{
@ -16,6 +17,7 @@ class EnquiryController extends ResourceController
protected $AgentModel;
protected $QuotationModel;
protected $PolicyModel;
protected $FilesModel;
public function __construct()
{
@ -25,6 +27,7 @@ class EnquiryController extends ResourceController
$this->AgentModel = new AgentModel();
$this->QuotationModel = new QuotationModel();
$this->PolicyModel = new PolicyModel();
$this->FilesModel = new FilesModel();
}
// List all enquiries
@ -240,12 +243,28 @@ class EnquiryController extends ResourceController
];
$enquiryId = $this->enquiryModel->insert($insertData , true);
// trigger_email('enquiry_created', ['enquiry_id' => $enquiryId]);
//create Quotation ana mark as accepted
$quotationData = [
'enquiry_id' => $enquiryId,
'insured_declared_value' => $data['insured_declared_value'] ?? 0,
'premium_amount' => $data['premium_amount'] ?? 0,
'insurance_plan_type_id' => $data['insurance_plan_type_id'] ?? 0,
'insurer_id' => $data['insurer_id'] ?? 0,
'insurer_branch_id' => $insurerBranchresult['id'] ?? 0,
'manager_id' => $data['manager_id'],
'payment_mode_id' => $data['payment_mode_id'] ?? 0,
'created_by' => $data['created_by'],
'status' => 'Accepted'
];
$QuotationId = $this->QuotationModel->insert($quotationData, true);
$this->enquiryModel->update($data['enquiry_id'], [ 'status' => 'Proposal Accepted' ]);
return $this->respond(['status' => 'success', 'code' => 200, 'message' => 'Enquiry created successfully'], 200);
} catch (\Exception $e) {
@ -422,6 +441,101 @@ class EnquiryController extends ResourceController
}
}
public function uploadEnquiryFiles()
{
try {
$enquiryId = $this->request->getPost('enquiry_id');
if (!$enquiryId) {
return $this->respond(['status' => 'failed', 'message' => 'enquiry_id required'], 404);
}
$files = $this->request->getFiles();
if (!$files) {
return $this->respond(['status' => 'failed', 'message' => 'No files uploaded'], 404);
}
$savedFiles = [];
foreach ($files['files'] as $file) {
if ($file->isValid()) {
$uploadPath = WRITEPATH . "uploads/enquiry/";
if (!is_dir($uploadPath)) {
mkdir($uploadPath, 0777, true);
}
// Generate file name
$newName = time() . '_' . $file->getRandomName();
$file->move($uploadPath, $newName);
// Save DB record
$this->FilesModel->insert([
'enquiry_id' => $enquiryId,
'file_name' => $newName,
'is_active' => 1,
'created_by' => $this->request->getPost('created_by') ?? 0,
]);
$savedFiles[] = $newName;
}
}
return $this->respond(['status' => 'success','uploaded_files' => $savedFiles ], 200);
} catch (\Exception $e) {
return $this->respond(['status' => 'failed', 'message' => $e->getMessage()], 500);
}
}
public function downloadEnquiryFiles()
{
$fileId = $this->request->getGet('file_id');
$file = $this->FilesModel->find($fileId);
if (!$file) {
return $this->respond(['status' => 'failed','message' => 'Invalid file id'], 404);
}
$filePath = WRITEPATH . "uploads/enquiry/{$file['file_name']}";
if (!file_exists($filePath)) {
return $this->respond([
'status' => 'failed',
'message' => 'File missing on server'
], 404);
}
// Force file download
return $this->response->download($filePath, null);
}
public function enquiryFiles()
{
$enquiryId = $this->request->getGet('enquiry_id');
if (!$enquiryId) {
return $this->respond(['status' => 'failed', 'message' => 'enquiry_id required'], 400);
}
$files = $this->FilesModel
->where('enquiry_id', $enquiryId)
->where('is_active', 1)
->findAll();
return $this->respond([
'status' => 'success',
'data' => $files
], 200);
}

36
app/Models/FilesModel.php Normal file
View File

@ -0,0 +1,36 @@
<?php
namespace App\Models;
use CodeIgniter\Model;
class FilesModel extends Model
{
protected $table = 'partner_files';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $allowedFields = [
'enquiry_id',
'file_name',
'is_active',
'created_at',
'created_by',
'updated_at',
'updated_by'
];
// Automatically handle created_at / updated_at (if you prefer CI4 timestamps)
protected $useTimestamps = false; // using manual timestamps in DB
// Validation Rules (optional)
protected $validationRules = [
'enquiry_id' => 'required|integer',
'file_name' => 'required|min_length[1]|max_length[255]',
'is_active' => 'permit_empty|in_list[0,1]'
];
}