donation/app/Controllers/Settings.php

202 lines
7.7 KiB
PHP

<?php
namespace App\Controllers;
use App\Models\BusinessModel;
use App\Models\SettingsModel;
class Settings extends BaseController
{
public function index()
{
helper('session');
$session_role = get_user_role();
$session_bid = get_business_id();
$where = ['settings.isactive' => 1];
if (!empty($session_role) && $session_role !== "sadmin") {
$where = ['settings.business_id' => $session_bid, 'settings.isactive' => 1];
}
$model = new SettingsModel();
$model->setTable('settings');
$sitesetting_details = $model->where($where)->orderBy('setting_id', 'DESC')->findAll();
$data['page_name'] = 'Site Settings Details';
$data['details'] = $sitesetting_details;
$data['session_role'] = $session_role;
$this->render_page('setting_list', $data);
}
## To Load Settings Add/Update page
public function sitesetting_page($id)
{
if ($id === '0') {
$data['page_name'] = 'Add Site Settings';
$data['details'] = [];
} else if ($id !== '0') {
$data['page_name'] = 'Edit Site Settings';
$model = new SettingsModel();
$model->setTable('settings');
$details = $model->where(['setting_id' => $id, 'isactive' => 1])->first();
$data['details'] = $details;
}
$data['business_details']=$this->business_details();
$this->render_page('setting_form', $data);
}
public function business_details()
{
$model = new BusinessModel();
$model->setTable('business');
$business_details = $model->orderBy('business_id', 'DESC')->findAll();
return $business_details;
}
## To Save/Update Setting Data on DB.
public function sitesetting_synchronization()
{
helper('session');
$session_bid = get_business_id();
$session_uid = get_logged_user_id();
$validationRule = [
'usersetiing' => [
'label' => 'Image File',
'rules' => [
'uploaded[slogo]',
'is_image[slogo]',
'mime_in[slogo,image/jpg,image/jpeg,image/gif,image/png,image/webp]',
],
],
'favicon' => [
'label' => 'Favicon',
'rules' => [
'uploaded[favicon]',
'is_image[favicon]',
'mime_in[favicon,image/ico,image/x-icon]',
],
],
];
if (!$this->validate($validationRule)) {
// Validation failed, return to the form with errors
$data['validation_errors'] = $this->validator->getErrors();
$this->render_page('setting_form', $data);
return;
}
$img = $this->request->getFile('slogo');
$setting_id = $this->request->getPost('setting_id');
$business_id = $this->request->getPost('business_id');
$filePath ='public/uploads/' . $this->request->getPost('slogo');
## File Already Existing or not
if ($img->isValid() && !$img->hasMoved()) {
$fileName = $img->getName();
$img->move('public/uploads/', $fileName);
// Delete the previous image file if it exists
if ($setting_id) {
$previousFileName = $this->request->getPost('previous_sfile');
if ($previousFileName && is_file('public/uploads/' . $previousFileName)) {
unlink('public/uploads/' . $previousFileName);
}
}
} else {
$fileName = $this->request->getPost('previous_sfile', ''); // Use the previous filename if no new image is provided
}
$favicon = $this->request->getFile('favicon');
if ($favicon->isValid() && !$favicon->hasMoved()) {
$faviconName = $favicon->getName();
$favicon->move('public/uploads/', $faviconName);
// Delete the previous favicon file if it exists
if ($setting_id) {
$previousFaviconName = $this->request->getPost('previous_favicon');
if ($previousFaviconName && is_file('public/uploads/' . $previousFaviconName)) {
unlink('public/uploads/' . $previousFaviconName);
}
}
} else {
$faviconName = $this->request->getPost('previous_favicon', ''); // Use the previous favicon filename if no new favicon is provided
}
$SettingsModel = new SettingsModel();
$data = [
'site_name' => $this->request->getPost('site_name'),
'site_title' => $this->request->getPost('site_title'),
'favicon' => $this->request->getPost('favicon'),
'logo' => $this->request->getPost('logo'),
'terms_service' => $this->request->getPost('terms_service'),
'footer_about' => $this->request->getPost('footer_about'),
'admin_email' => $this->request->getPost('admin_email'),
'mobile'=> $this->request->getPost('mobile'),
'copyright'=> $this->request->getPost('copyright'),
'pagination_limit'=> $this->request->getPost('pagination_limit'),
'site_info'=> $this->request->getPost('site_info'),
'about_info'=> $this->request->getPost('about_info'),
'mail_protocol'=> $this->request->getPost('mail_protocol'),
'mail_title'=> $this->request->getPost('mail_title'),
'mail_host'=> $this->request->getPost('mail_host'),
'mail_port'=> $this->request->getPost('mail_port'),
'mail_encryption'=> $this->request->getPost('mail_encryption'),
'mail_username'=> $this->request->getPost('mail_username'),
'mail_password'=> $this->request->getPost('mail_password'),
'currency'=> $this->request->getPost('currency'),
'country'=> $this->request->getPost('country'),
'business_id'=> $this->request->getPost('business_id'),
'logo'=>$fileName,
'favicon'=>$faviconName
];
$setting_id = $this->request->getPost('setting_id'); // Get the business ID for update
if (empty($setting_id)) {
// It's an insert operation
$data['isactive'] = 1;
$data['created_by'] = $session_uid;
$SettingsModel->insert($data);
// print_r($data);die;
} else {
// It's an update operation
$isactive = $this->request->getPost('isactive');
$data['isactive'] = ($isactive == 'on') ? 1 : 0;
$data['updated_by'] = $session_uid;
$SettingsModel->update($setting_id, $data);
}
return redirect()->route('sitesetting_list');
}
}
// $model = new SettingsModel();
// $model->setTable('settings');
// if ($this->request->is('post')) {
// $requestData = $this->request->getVar();
// }
// $requestData['business_id'] = $session_bid;
// if ($requestData['setting_id']) {
// #edit
// $requestData['updated_by'] = $session_uid;
// $requestData['isactive'] = isset($requestData['isactive']) && $requestData['isactive'] == 'on' ? 1 : 0;
// $model->saveData($requestData, $requestData['setting_id']);
// $alert_message = "Site Settings details successfully updated.";
// } else {
// #add
// $requestData['created_by'] = $session_uid;
// $requestData['isactive'] = 1;
// $model->saveData($requestData, null);
// $alert_message = "Site Settings details successfully created.";
// }
// return redirect()->route('sitesetting_list');
// }
// }