diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php
index c122e7ae..838c646e 100644
--- a/app/Controllers/PolicyTransactionController.php
+++ b/app/Controllers/PolicyTransactionController.php
@@ -3337,6 +3337,26 @@ class PolicyTransactionController extends BaseController
$docs_name = $this->request->getPost('doc_name');
$pt_id = $this->request->getPost('pt_id');
$client_policy_id = $this->request->getPost('client_policy_id');
+
+ $rules = [
+ 'doc_name.*' => [
+ 'label' => 'Policy Document Name',
+ 'rules' => 'permit_empty|required|regex_match[/^[a-zA-Z0-9 _-]+$/]|min_length[2]|max_length[100]',
+ 'errors' => [
+ 'required' => "Policy Document Name is required",
+ 'regex_match' => 'The {field} can only contain letters, numbers, spaces, dashes, and underscores.'
+ ]
+ ],
+ ];
+
+ if (!$this->validate($rules)) {
+ return $this->response->setStatusCode(400)->setJSON([
+ 'status' => false,
+ 'message' => 'Input validation failed',
+ 'code' => 400,
+ 'errors' => $this->validator->getErrors()
+ ]);
+ }
}
$uploadFilePath = WRITEPATH . 'uploads/client_kyc_documents';
diff --git a/app/Views/drive_file_upload.php b/app/Views/drive_file_upload.php
index c7759622..33f2a6db 100644
--- a/app/Views/drive_file_upload.php
+++ b/app/Views/drive_file_upload.php
@@ -108,11 +108,36 @@ $("#drive_file_upload_form").submit(function(event) {
$('#drive_file_upload_form')[0].reset();
},
- error: function (xhr, status, error) {
- console.error(xhr.responseText);
- console.error(status, error);
+ error:function (xhr) {
+
+ if (xhr.status === 400) {
+ let response = JSON.parse(xhr.responseText);
+ let errorMessages = "";
+ let seenMessages = []; // Array to store unique messages
+ if (response.errors) {
+ $.each(response.errors, function (field, message) {
+ if (!seenMessages.includes(message)) {
+ errorMessages += `• ${message}
`;
+ seenMessages.push(message); // Mark this message as "seen"
+ }
+ });
+ toastr.error(errorMessages, 'Validation Error', { "allowHtml": true });
+ } else {
+ toastr.warning(response.message || 'Validation failed', 'Warning');
+ }
+
+ } else if (xhr.status === 403) {
+ let response = JSON.parse(xhr.responseText);
+ toastr.error(response.message, 'Security Policy');
+ } else if (xhr.status === 500) {
+ toastr.error('Something went wrong . Please try again later.', 'Server Error');
+ } else {
+ toastr.error('An unexpected error occurred. Please try again later.', 'Error');
+ }
+
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
+
}
});
});
diff --git a/app/Views/leads_form_handler.php b/app/Views/leads_form_handler.php
index 2773b0e2..6677520d 100644
--- a/app/Views/leads_form_handler.php
+++ b/app/Views/leads_form_handler.php
@@ -573,7 +573,8 @@ if (isset($selected_lead_type)) {