Files
digifi-mware/app/Controllers/BkoReports.php
T
CHIEFSOFT\ameye f1d5e76756 signatory count
2024-06-15 08:49:30 -04:00

235 lines
8.4 KiB
PHP

<?php
namespace App\Controllers;
use CodeIgniter\API\ResponseTrait;
use CodeIgniter\HTTP\ResponseInterface;
class BkoReports extends BaseController
{
use ResponseTrait;
// protected $db;
var $request;
function __construct()
{
$this->request = \Config\Services::request();
}
public function startedApplication() :ResponseInterface
{
//SELECT uid,loan_amount,payment_month,sales_agent,gender,marital_status,email,address,state,country,status,added,updated FROM applications;
$query = $this->db->query("SELECT c.firstname, c.lastname, a.uid,a.loan_amount,
a.payment_month,a.sales_agent,a.gender,
a.marital_status,a.email,a.address,
a.state,a.country,a.status,a.added,
a.updated
FROM applications a
LEFT JOIN customers c ON c.uid = a.customer_uid WHERE a.status = 1 ");
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
// return $this->respond([], 200);
}
public function pendingApplication() :ResponseInterface
{
$pendingQuery = $this->applicationQuery(1);
//SELECT uid,loan_amount,payment_month,sales_agent,gender,marital_status,email,address,state,country,status,added,updated FROM applications;
$query = $this->db->query("$pendingQuery ");
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
}
private function applicationQuery($status): string{
return "
SELECT c.firstname, c.lastname, a.uid,a.loan_amount,
a.payment_month,a.sales_agent,a.gender,
a.marital_status,a.email,a.address,
a.state,a.country,a.status,a.added,
a.updated,
e.name AS employer_name ,
e.uid AS employer_uid
FROM applications a
LEFT JOIN customers c ON c.uid::text = a.customer_uid::text
LEFT JOIN employers e ON e.uid::text = a.employer_uid::text
WHERE a.status = $status
";
}
public function readyApplication() :ResponseInterface
{
$readyQuery = $this->applicationQuery(2);
//SELECT uid,loan_amount,payment_month,sales_agent,gender,marital_status,email,address,state,country,status,added,updated FROM applications;
$query = $this->db->query("$readyQuery");
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
}
public function approvedApplication() :ResponseInterface
{
$approvedQuery = $this->applicationQuery(5);
//SELECT uid,loan_amount,payment_month,sales_agent,gender,marital_status,email,address,state,country,status,added,updated FROM applications;
$query = $this->db->query($approvedQuery);
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
}
public function rejectedApplication() :ResponseInterface
{
$rejectedQuery = $this->applicationQuery(7);
//SELECT uid,loan_amount,payment_month,sales_agent,gender,marital_status,email,address,state,country,status,added,updated FROM applications;
$query = $this->db->query($rejectedQuery);
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
}
public function employersList() :ResponseInterface {
$query = $this->db->query("SELECT uid,name FROM employer_sector");
$employer_sector = $query->getResult('array');
$query = $this->db->query("SELECT uid,name FROM salary_sources");
$salary_sources = $query->getResult('array');
$query = $this->db->query("SELECT * FROM employers");
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'salary_sources' => $salary_sources,
'employer_sector' => $employer_sector,
'records' => $row
];
return $this->respond($data, 200);
}
public function employerAdd():ResponseInterface{
/*
employer_uid:b41cefe6-47e6-4b85-a8de-67d186e3fe16
name:OluSign ASign
title:Mr.
email:ameye@chiefsoft.com
phone:6784574356
*/
$sig_count = 0;
$data = $this->request->getPost();
//$insert_data = $data;
$insert_data['employer_uid'] = $data['employer_uid'];
$insert_data['name'] = $data['name'];
$insert_data['title'] = $data['title'];
$insert_data['email'] = $data['email'];
$insert_data['phone'] = $data['phone'];
if ( $insert_data['employer_uid'] !=''
&& $insert_data['name'] !=''
&& $insert_data['title'] !=''
&& $insert_data['email'] !=''
&& $insert_data['phone'] !='' ){
$result = $this-> insert_db('employers', $insert_data);
$sig_count = $this->updateSignatoryCount( $insert_data['employer_uid'] );
}
else{
$result = [
"error" => "Missing Required Data"
];
}
$result_data = [
'call_return' => '100',
'signatory_count' => $sig_count,
'result' =>$result
];
return $this->respond($result_data, 200);
}
private function updateSignatoryCount($employer_uid): int
{
$sig_count=0;
try {
$sigCountQr = "SELECT count(s.id) AS sig_count from employers_signatory s LEFT JOIN employers e ON e.id=s.employer_id WHERE e.uid='$employer_uid' ";
$query = $this->db->query($sigCountQr);
$row = $query->getResult('array');
$sig_count = $row[0]["sig_count"];
$sigCountUpdateQr = "UPDATE employers SET signatory_count = $sig_count WHERE uid = '$employer_uid' ";
$this->db->query($sigCountUpdateQr);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
return $sig_count;
}
public function signatoryList() :ResponseInterface {
$query = $this->db->query("SELECT e.name AS employer_name, es.* FROM employers_signatory es LEFT JOIN employers e ON e.id = es.employer_id");
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
}
public function signatoryAdd():ResponseInterface{
$data = $this->request->getPost();
$loc = 100;
$employer_uid = $data["employer_uid"];
if ( $employer_uid !=''){
$query = $this->db->query("SELECT id FROM employers WHERE uid = '".$employer_uid."' ");
$loc = $employer_uid;
$row = $query->getResult('array');
if ($row && $row[0]['id']> 0){
$loc = 300;
$insert_data['employer_id'] =$row[0]['id'];
$insert_data['name'] = $data['name'];
$insert_data['email'] = $data['email'];
$insert_data['title'] = $data['title'];
$insert_data['phone'] = $data['phone'];
$result = $this-> insert_db('employers_signatory', $insert_data);
}
else
{
$result = ['fail'=>'Not Added'];
}
}
// $insert_data = $data;
$result_data = [
'call_return' => '100',
'loc' => $loc,
'result' =>$result
];
return $this->respond($result_data, 200);
}
public function listUsers():ResponseInterface{
$query = $this->db->query("SELECT id,uid,username, email,firstname,lastname,status, added,updated FROM bko_users");
$row = $query->getResult('array');
$data = [
'call_return' => '100',
'records' => $row
];
return $this->respond($data, 200);
}
}