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 @@
-
+

- +
@@ -25,7 +25,7 @@

@@ -33,8 +33,8 @@

- +

- +
@@ -94,9 +94,7 @@
@@ -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": {