diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index 37773ad4..03c485f6 100644
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -65,14 +65,15 @@ $routes->group("/client", ["filter" => "authMVC"], function($routes){
$routes->group("/employee", ["filter" => "authMVC"], function($routes){
$routes->get("list", "EmployeeController::list");
$routes->get("search", "EmployeeController::search");
- $routes->get("bulk-event-uplod", "EmployeeController::employeesUplodWithEvents");
- $routes->post("bulk-event-uplod", "EmployeeController::employeesUplodWithEvents");
+ $routes->get("upload", "EmployeeController::employeesUplodWithEvents");
+ $routes->post("upload", "EmployeeController::employeesUplodWithEvents");
});
$routes->group("/util", ["filter" => "authMVC"], function($routes){
$routes->get("clients-with-policies", "EmployeeController::getClientWithPolicies");
$routes->get("police-by-insurer/(:any)", "ClientController::getPolicesByInsurerId/$1");
+ $routes->get("get-file-error/(:any)", "EmployeeController::getUploadedFileError/$1");
});
$routes->cli('processjob', 'JobWorker::processJob');
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index c2b0d73e..483e6c61 100644
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -15,6 +15,9 @@ use App\Models\FileModel;
use App\Controllers\Jobs ;
use App\Controllers\JobWorker ;
+use App\Controllers\Jobs\SubJob;
+use App\Controllers\EmployeeServiceController;
+
use CodeIgniter\API\ResponseTrait;
@@ -69,6 +72,27 @@ class EmployeeController extends AdminController
}
}
+
+ public function getUploadedFileError()
+ {
+ $file_id = $this->request->uri->getSegment(3);
+ // dd($segments[2]);
+ // die();
+ // $file_id = $this->request->getGet();
+ // echo $file_id;die();
+ $file = $this->fileModel->find($file_id);
+ // print_r($result);die();
+ if(!isset($file))
+ {
+ return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'no data found'], 200);
+ }
+ else
+ {
+
+ return $this->respond(['dataStatus' => true,'code' => 200,'data' => $file['reason']], 200);
+ }
+ }
+
//handles employee & dependent bulk upload with events like inception,addition,deletion, correction and SI enhancements
public function employeesUplodWithEvents()
{
@@ -85,13 +109,25 @@ class EmployeeController extends AdminController
// print_r($this->request->getPost('policies'));
// print_r($this->request->getPost('upload-action-type'));
// die();
+ // $empServiceController = new EmployeeServiceController();
+ // $res = $empServiceController->fileFormatValidationController('12');
+ // // dd($res);
+
+ // if(isset($res) && count($res))
+ // {
+ // $failure_reason = json_encode((json_encode($res)));
+ // $this->fileModel->where('id', '12')->set(['status' => 'failed','reason' => $failure_reason])->update();
+ // dd($failure_reason);
+ // }
+
if($this->request->getMethod() == 'post')
{
+ //validate uploaded file
$filename = '';
$validated = $this->validate([
'emplist' => [
'uploaded[emplist]',
- 'mime_in[emplist,application/vnd.ms-excel,application/vnd,application/pdf]',
+ 'mime_in[emplist,application/vnd.ms-excel,application/vnd,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.oasis.opendocument.spreadsheet]',
'max_size[emplist,8192]',
],
]);
@@ -116,13 +152,16 @@ class EmployeeController extends AdminController
$status = 'inprogress';
$file_id = $this->fileModel->insert(['file_name' => $filename,'client_id' => $client_id,'policy_id' => $policy_id,'created_by' => $loggedInUserID,'status' => $status,'action' => $action]);
- //die();
$this->myLogger->logme("error",'{file_id} uploaded success',['file_id' => $file_id]);
+
+ //start validation process
+
+ //en dof validation process
return $this->respond(['dataStatus' => true,'code' => 200,'data' => 'file upload success'], 200);
}
- $data['actions'] = ['inception' => 'Inception','addition' => 'Addition','deletion' => 'Deletion','si_enhancement' =>'SI Enhancement'];
+ $data['actions'] = ['inception' => 'Inception','addition' => 'Addition','deletion' => 'Deletion','correction' =>'Correction','si_enhancement' =>'SI Enhancement'];
$data['fileList'] = $this->fileModel
->select(['files.*','up.emp_code','up.first_name'])
->join('user_profiles up','files.created_by = up.id')
diff --git a/app/Models/FileModel.php b/app/Models/FileModel.php
index 3c25e1ef..aefbb419 100644
--- a/app/Models/FileModel.php
+++ b/app/Models/FileModel.php
@@ -21,5 +21,4 @@ class FileModel extends Model
];
-
}
diff --git a/app/Views/employee_upload.php b/app/Views/employee_upload.php
index 4a2bcf00..23e463d4 100644
--- a/app/Views/employee_upload.php
+++ b/app/Views/employee_upload.php
@@ -10,14 +10,14 @@
@@ -115,35 +113,45 @@
//fetchClientPolicies();
//for modal pop up
$('#file-err-modal').on('show.bs.modal', function (event) {
+ // console.log(event.relatedTarget);
var myVal = $(event.relatedTarget).data('err');
- $(this).find(".modal-body").text(myVal);
+ console.log(myVal);
+ var model_data = fetchFileError(myVal);
+ console.log('data received.');
+ console.log(model_data);
+ $(this).find(".modal-body").text(model_data);
});
//for form submit
$("#emp-upload-form").submit(function(event) {
event.preventDefault(); // Prevent default form submission
console.log('submit called');
- // Check required fields
- if (!$(this)[0].checkValidity()) {
- // Form is invalid, handle error or notify user
- console.log('failed');
+
+ var action_item = $('#upload-action-type').val();
+ var policy_id = $('#policy_id').val();
+ console.log('action_item - '+ action_item);
+ if(action_item != 'correction' && policy_id == "")
+ {
+ // $('#policy_id').attr('required', true);
+ // $('#policy_id').prop('title', 'plz choose policy');
+ // $('#policy_id').mouseover();
+ console.log('required');
+ alert('please choose policy for this uploaing event ');
return false;
}
- console.log($(this));
- console.log($(this)[0]);
+ else{
+ $('#policy_id').attr('required', false);
+ console.log('not required');
+ }
// Create FormData object
var formData = new FormData($(this)[0]);
for (var pair of formData.entries()) {
- console.log(pair[0]+ ', ' + pair[1]);
- }
- // var formData = $("#emp-upload-form").serialize();
- // var file = document.getElementById('emplist').files[0];
- // formData.append('file', file);
+ console.log(pair[0]+ ', ' + pair[1]); }
+
console.log(formData);
- // return false;
- // AJAX request
+
$.ajax({
url: $(this).attr("action"),
type: "POST",
@@ -156,9 +164,21 @@
},
success: function(response) {
// Request successful, handle response
+ $('#policy_id').attr('required', false);
console.log(response);
- alert('success');
- window.location.reload();
+ if (response.code === 200 && response.dataStatus === true && response.data !== "") {
+ alert('sucess');
+ window.location.reload();
+ } else if(response.code === 404 && response.dataStatus === false){
+ console.error('no data found', response);
+ alert(response.message);
+ }
+ else
+ {
+ console.error('Something went wrong!');
+ alert('Something went wrong! Try later');
+ }
+
},
error: function(xhr, status, error) {
// Request failed, handle error
@@ -223,6 +243,68 @@
}
+ function fetchFileError(file_id) {
+ $('#loader').show();
+ var apiURL = '' + 'util/get-file-error/' + file_id;
+ console.log('fetchFileError');
+ console.log(apiURL);
+ $.ajax({
+ url: apiURL,
+ method: 'GET',
+ headers: {
+ "X-Requested-With": "XMLHttpRequest"
+ },
+ success: function(response) {
+ // console.log(response.code);
+ // console.log(response.dataStatus);
+ // console.log(response.data);
+ if (response.code === 200 && response.dataStatus === true && response.data !== "") {
+ try {
+ console.log(JSON.parse(JSON.parse(response.data)));
+ var file_error_data = JSON.parse(JSON.parse(response.data));
+ var file_error_html = "";
+
+ for (var rkey in file_error_data) {
+ // console.log(rkey);
+ var col = file_error_data[rkey]
+ console.log(col);
+
+ for (var ckey in col)
+ {
+ console.log(ckey);
+ console.log(col[ckey]);
+ var err_arr = col[ckey];
+ if(Array.isArray(err_arr)){
+ err_arr.forEach( function (item, index) {file_error_html += "Row "+ rkey +", "+ ckey+ " -" + item + "
"; } );
+ }
+
+ }
+ file_error_html += '-----------------------------------------------------------------------
';
+ }
+ console.log(file_error_html);
+ $('#file-err-modal').find(".modal-body").html(file_error_html);
+ return file_error_html;
+ } catch (error)
+ {
+ console.error('Error parsing API response data:', error);
+ }
+ } else if(response.code === 404 && response.dataStatus === false){
+ console.error('no data found', response);
+ }
+ else
+ {
+ console.error('Something went wrong!');
+ }
+ },
+ error: function(xhr, status, error) {
+ console.error('Error fetching data from API:', error);
+ }
+ });
+
+ $('#loader').hide();
+ }
+
+
function appendClients(data) {
$.each(data, function(index, item) {
$('#client_id').append($('
diff --git a/composer.json b/composer.json
index ead70015..e167c551 100644
--- a/composer.json
+++ b/composer.json
@@ -16,6 +16,7 @@
"ext-mbstring": "*",
"google/apiclient": "^2.15.0",
"laminas/laminas-escaper": "^2.9",
+ "phpoffice/phpspreadsheet": "^2.0",
"psr/log": "^1.1"
},
"require-dev": {