donation/app/Controllers/Scheme.php

196 lines
8.0 KiB
PHP

<?php
namespace App\Controllers;
use App\Models\SchemeModel;
class Scheme extends BaseController
{
## For Scheme Listing
public function index()
{
helper('session');
if (is_session_active()) {
$session_bid = get_business_id();
$session_role = get_user_role();
if (!empty($session_role) && $session_role !== "sadmin") {
$where = ['isactive' => 1, 'business_id' => (int)$session_bid];
} else {
$where = ['isactive != ' => NULL];
}
$SchemeModel = new SchemeModel();
$data['page_name'] = 'Scheme Details';
$data['scheme'] = $SchemeModel->getSchemeNamesAndDurationsByBusiness($session_bid);
$this->render_page('scheme_list', $data);
} else {
return redirect()->to('login');
}
}
## To Load Scheme Form (Add/Update)
public function new_scheme($id)
{
helper('session');
$session_bid = get_business_id();
if ($id === '0') {
$data['page_name'] = 'Add Scheme';
$data['scheme'] = [];
} else if ($id !== '0') {
$data['page_name'] = 'Edit Scheme';
$model = new SchemeModel();
$imageData = $model->getBooksAndImagesByBookId($id);
$data['scheme'] = $imageData[0];
// print_r($data);die();
}
$data['session_bid'] = $session_bid;
$this->render_page('scheme_form', $data);
}
## For inserting/updating details of scheme
public function insert_scheme()
{
try{
helper('session');
$session_bid = get_business_id();
$session_uid = get_logged_user_id();
$SchemeModel = new SchemeModel();
$data = [
'title' => $this->request->getPost('sname'),
'description' => $this->request->getPost('sdescription'),
'price' => $this->request->getPost('sprice'),
'duration' => $this->request->getPost('sduration'),
'sku' => $this->request->getPost('sku'),
'business_id' => $this->request->getPost('business_id')
];
$scheme_id = $this->request->getPost('book_id'); // Get the business ID for update
if (empty($scheme_id)) {
// It's an insert operation
$data['isactive'] = 1;
$data['created_by'] = $session_uid;
if ($SchemeModel->insert($data)) {
$last_inserted_id = $SchemeModel->insertID();
// Retrieve the category name 'membership'
$category_name = 'membership';
// Find the category ID for 'membership' from the category table
$db = db_connect();
$category = $db->table('category')
->select('id')
->where('name', $category_name)
->get()
->getRow();
// Check if the category exists
if ($category) {
// Insert data into book_categories table
$db->table('book_categories')->insert([
'book_id' => $last_inserted_id,
'category_id' => $category->id,
'created_by' => $session_uid
]);
}
session()->setFlashdata('success', 'Scheme has been added successfully.');
$this->logger->info("Scheme: has been added successfully. Inserted ID = " . $last_inserted_id);
} else {
session()->setFlashdata('error', 'Scheme could not be added. Please try again..');
$this->logger->error("Scheme: Err could not be added. Please try again.");
}
if (!empty($_FILES['img_name']['name'])) {
// A new image has been uploaded
// First, delete the previous image file if it exists
if (!empty($imageData) && file_exists(WRITEPATH . 'public/uploads/' . $imageData[0]->img_name)) {
unlink(WRITEPATH . 'public/uploads/' . $imageData[0]->img_name);
}
$imageData = [
'book_id' => $last_inserted_id, // Assuming $last_inserted_id contains the ID of the inserted scheme
'img_name' => $_FILES['img_name']['name'],
'is_cover' => 1, // Set this based on your requirements
'type' => $_FILES['img_name']['type']
];
// Move the uploaded image to a desired location
$imagePath = 'public/uploads/' . $_FILES['img_name']['name'];
move_uploaded_file($_FILES['img_name']['tmp_name'], $imagePath);
// Update image data in the 'book_images' table
$SchemeModel->insertImage($imageData);
}
}
else {
// It's an update operation
$isactive = $this->request->getPost('isactive');
$data['isactive'] = ($isactive) ? 1 : 0;
$data['updated_by'] = $session_uid;
$SchemeModel->update($scheme_id, $data);
if ($SchemeModel->update($scheme_id, $data)) {
session()->setFlashdata('success', 'Scheme has been updated successfully.');
$this->logger->info("Scheme: has been updated successfully. Updated Scheme ID = " . $scheme_id);
} else {
session()->setFlashdata('error', 'Scheme update failed. Please try again.');
$this->logger->error("Scheme: Err Failed to update ID =" . $scheme_id);
}
}
} catch (\Exception $e) {
$this->logger->error("Scheme: Err Occur = ".$e->getMessage()." File = ". $e->getFile() . " Line = " . $e->getLine());
session()->setFlashdata('error', 'Message: ' . $e->getMessage());
}
return redirect()->route('scheme_list');
}
## For delete the Scheme details (Which means inactive the details)
public function delete_scheme($id)
{
try {
helper('session');
$session_uid = get_logged_user_id();
$SchemeModel = new SchemeModel();
$where = ['book_id' => (int)$id, 'isactive =' => 1];
// $existingScheme = $SchemeModel->find($id);
$existingScheme = $SchemeModel->where($where)->find($id);
if ($existingScheme) {
$this->logger->Info("Scheme: Going to Inactive ID = ".$id);
$data = ['isactive' => 0 , 'updated_by' => $session_uid];
if ($SchemeModel->update($id, $data)) {
$activeSchemeCategory = $SchemeModel->getData('book_categories', $where);
if(!empty($activeSchemeCategory)){
for ($z = 0; $z < count($activeSchemeCategory); $z++) {
$SchemeCategoryIds[$z] = $activeSchemeCategory[$z]->id;
}
if(!empty($SchemeCategoryIds)){
$this->logger->Info("Scheme: Categories Going to Inactived = ".implode(" ",$SchemeCategoryIds));
$inactive_category_whereIn[0] = 'id';
$inactive_category_whereIn[1] = $SchemeCategoryIds;
$SchemeModel->inactiveMissingDetails('book_categories',$data,$where, $inactive_category_whereIn);
}
}
session()->setFlashdata('success', 'Deleted successfully.');
$this->logger->info("Scheme: has been Inactived successfully. Inactived ID = " . $id);
} else {
$this->logger->error("Scheme: Not able to Inactive ID =" . $id);
throw new \Exception("Data Not able to Deleted");
}
}
} catch (\Exception $e) {
$this->logger->error("Scheme: Err Occur = ".$e->getMessage()." File = ". $e->getFile() . " Line = " . $e->getLine());
session()->setFlashdata('error', 'Message: ' . $e->getMessage());
}
return redirect()->route('scheme_list');
}
}