150 lines
5.7 KiB
PHP
150 lines
5.7 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
use CodeIgniter\RESTful\ResourceController;
|
|
use App\Models\QuotationModel;
|
|
|
|
class QuotationController extends ResourceController
|
|
{
|
|
protected $QuotationModel;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->QuotationModel = new QuotationModel();
|
|
}
|
|
|
|
// List quotations
|
|
public function quotationList()
|
|
{
|
|
try {
|
|
$data = $this->QuotationModel->findAll();
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $data], 200);
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
// Find single quotation
|
|
public function findQuotation()
|
|
{
|
|
try {
|
|
$id = $this->request->getGet('id');
|
|
$record = $this->QuotationModel->find($id);
|
|
|
|
if (!$record) {
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
|
}
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $record], 200);
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
// Create quotation
|
|
public function createQuotation()
|
|
{
|
|
try {
|
|
$data = $this->request->getPost();
|
|
|
|
$uploadFile = $this->request->getFile('additional_uploaded_file_name');
|
|
$uploadedFileName = null;
|
|
|
|
if ($uploadFile && $uploadFile->isValid()) {
|
|
$uploadPath = WRITEPATH . 'uploads/quotation/';
|
|
if (!is_dir($uploadPath)) {
|
|
mkdir($uploadPath, 0777, true);
|
|
}
|
|
$uploadedFileName = time() . '_' . $uploadFile->getRandomName();
|
|
$uploadFile->move($uploadPath, $uploadedFileName);
|
|
}
|
|
|
|
$insertData = [
|
|
'enquiry_id' => $data['enquiry_id'],
|
|
'insured_declared_value' => $data['insured_declared_value'],
|
|
'premium_amount' => $data['premium_amount'],
|
|
'insurance_plan_type_id' => $data['insurance_plan_type_id'],
|
|
'additional_uploaded_file_name' => $uploadedFileName,
|
|
'created_by' => $data['created_by'] ?? null
|
|
];
|
|
|
|
$this->QuotationModel->insert($insertData);
|
|
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
// Update quotation
|
|
public function updateQuotation()
|
|
{
|
|
try {
|
|
$data = $this->request->getPost();
|
|
if (!isset($data['id'])) {
|
|
return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'ID Required'], 200);
|
|
}
|
|
|
|
$id = $data['id'];
|
|
$quotation = $this->QuotationModel->find($id);
|
|
if (!$quotation) {
|
|
return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'Data Not Found'], 200);
|
|
}
|
|
|
|
$updateData = [
|
|
'enquiry_id' => $data['enquiry_id'] ?? $quotation['enquiry_id'],
|
|
'insured_declared_value' => $data['insured_declared_value'] ?? $quotation['insured_declared_value'],
|
|
'premium_amount' => $data['premium_amount'] ?? $quotation['premium_amount'],
|
|
'insurance_plan_type_id' => $data['insurance_plan_type_id'] ?? $quotation['insurance_plan_type_id'],
|
|
'status' => $data['status'] ?? $quotation['status'],
|
|
'reject_reason' => $data['reject_reason'] ?? $quotation['reject_reason'],
|
|
'updated_by' => $data['updated_by'] ?? null
|
|
];
|
|
|
|
// File upload
|
|
$uploadFile = $this->request->getFile('additional_uploaded_file_name');
|
|
if ($uploadFile && $uploadFile->isValid()) {
|
|
$uploadPath = WRITEPATH . 'uploads/quotation/';
|
|
if (!is_dir($uploadPath)) {
|
|
mkdir($uploadPath, 0777, true);
|
|
}
|
|
$uploadedFileName = time() . '_' . $uploadFile->getRandomName();
|
|
$uploadFile->move($uploadPath, $uploadedFileName);
|
|
$updateData['additional_uploaded_file_name'] = $uploadedFileName;
|
|
}
|
|
|
|
$this->QuotationModel->update($id, $updateData);
|
|
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
// Active / Deactive quotation
|
|
public function toggleActiveStatus()
|
|
{
|
|
try {
|
|
$id = $this->request->getPost('id');
|
|
if (!$id) {
|
|
return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'ID Required'], 200);
|
|
}
|
|
|
|
$quotation = $this->QuotationModel->find($id);
|
|
if (!$quotation) {
|
|
return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'Data Not Found'], 200);
|
|
}
|
|
|
|
$newStatus = ($quotation['is_active'] == 1) ? 0 : 1;
|
|
$this->QuotationModel->update($id, ['is_active' => $newStatus]);
|
|
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => ['is_active' => $newStatus]], 200);
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
}
|