471 lines
17 KiB
PHP
Executable File
471 lines
17 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Models\ProductModel;
|
|
use App\Models\BikemakeModel;
|
|
use App\Models\VendorModel;
|
|
use App\Models\BikemodelsModel;
|
|
use App\Models\ManufacturerModel;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
|
|
|
|
class Products extends BaseController
|
|
{
|
|
|
|
public $session;
|
|
use ResponseTrait;
|
|
|
|
public function __construct()
|
|
{
|
|
|
|
$this->session = session();
|
|
}
|
|
|
|
public function product_index($manufacturer_id = null)
|
|
{
|
|
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
|
|
if ($manufacturer_id) {
|
|
$ProductModel = new ProductModel();
|
|
$ManufacturerModel = new ManufacturerModel();
|
|
$products = $ProductModel->where('manufacturer_id',$manufacturer_id)->orderBy('product_name')->findAll();
|
|
$manufacturer = $ManufacturerModel->where('manufacturer_id',$manufacturer_id)->select('manufacturer_name')->first();
|
|
|
|
$data['products']=$products;
|
|
$data['manufacturer_id'] = $manufacturer_id;
|
|
$data['manufacturer_name'] = $manufacturer['manufacturer_name'];
|
|
|
|
return view('product_list',$data);
|
|
} else {
|
|
$ProductModel = new ProductModel();
|
|
$products = $ProductModel->get_products($this->session->get('logged_user_branch_id'));
|
|
$data['products']=$products;
|
|
// echo "<pre>";
|
|
// print_r($products);die;
|
|
$data['manufacturer_id'] = $manufacturer_id;
|
|
|
|
|
|
return view('product_list',$data);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function new_product($product_id)
|
|
{
|
|
|
|
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
|
|
if ($product_id === '0') {
|
|
|
|
$data['products'] = [];
|
|
$ProductModel = new ProductModel();
|
|
$tax=$ProductModel->getTax();
|
|
$data['tax']=$tax;
|
|
$BikemakeModel = new BikemakeModel();
|
|
$data['make'] = $BikemakeModel->where('business_id', $this->session->get('logged_user_business_id'))->orderBy('make')->findAll();
|
|
$VendorModel = new VendorModel();
|
|
$data['vendors']=$VendorModel->orderBy('vendor_name')->findAll();
|
|
$ManufacturerModel = new ManufacturerModel();
|
|
|
|
$data['manufacturers']=$ManufacturerModel->where('business_id', $this->session->get('logged_user_business_id'))->orderBy('manufacturer_name')->findAll();
|
|
$data['page_name']="Add Product";
|
|
$data['vendorsProduct'] =[];
|
|
} else if ($product_id !== '0') {
|
|
$data['page_name']="Edit Product";
|
|
$ProductModel = new ProductModel();
|
|
$products=$ProductModel->where('product_id', $product_id)->get()->getRowArray();
|
|
|
|
$products['make_id'] = json_decode($products['make_id'], true);
|
|
$products['models_id'] = json_decode($products['models_id'], true);
|
|
|
|
|
|
$data['products']=$products;
|
|
|
|
$BikemakeModel = new BikemakeModel();
|
|
$data['make'] = $BikemakeModel->where('business_id', $this->session->get('logged_user_business_id'))->orderBy('make')->findAll();
|
|
$BikemodelsModel = new BikemodelsModel();
|
|
$make_id = $products['make_id'];
|
|
$BikemodelsModel = new BikemodelsModel();
|
|
|
|
$models = [];
|
|
if( $products['make_id'] != null) {
|
|
foreach ($products['make_id'] as $make_id) {
|
|
// $models[] = $BikemodelsModel->where('make_id', $make_id)->findAll();
|
|
$models[] = $BikemodelsModel->where('make_id', $make_id)->orderBy('model_name')->findAll();
|
|
}
|
|
}
|
|
$data['models'] = $models;
|
|
|
|
$tax=$ProductModel->getTax();
|
|
$data['tax']=$tax;
|
|
$VendorModel = new VendorModel();
|
|
$data['vendors']=$VendorModel->orderBy('vendor_name')->findAll();
|
|
$ManufacturerModel = new ManufacturerModel();
|
|
$data['manufacturers']=$ManufacturerModel->where('business_id', $this->session->get('logged_user_business_id'))->orderBy('manufacturer_name', 'ASC')->findAll();
|
|
|
|
$vendorIds = json_decode($products['vendor'], true);
|
|
|
|
|
|
|
|
$vendors = [];
|
|
$VendorModel = new VendorModel();
|
|
foreach ($vendorIds as $vendorId) {
|
|
$vendor = $VendorModel->find($vendorId);
|
|
if ($vendor) {
|
|
$vendors[] = ['id' => $vendor['vendor_id'], 'name' => $vendor['vendor_name']];
|
|
}
|
|
}
|
|
$data['vendorsProduct'] = $vendors;
|
|
// print_r($data['vendors']);die;
|
|
|
|
$preferredVendorId = $products['prefered_vendor'];
|
|
// Pass the preferred vendor ID to the view
|
|
$data['preferredVendorId'] = $preferredVendorId; // print_r($data);die;
|
|
// print_r($data);die;
|
|
}
|
|
$data['product_id'] = $product_id;
|
|
|
|
// echo "<pre>";
|
|
// print_r($data['manufacturers']);die;
|
|
|
|
echo view('product_form',$data);
|
|
}
|
|
|
|
|
|
public function add_product()
|
|
{
|
|
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
|
|
$ProductModel = new ProductModel();
|
|
|
|
$tax= $this->request->getPost('tax')/2;
|
|
// print_r($this->request->getPost());die;
|
|
|
|
if ($this->request->getPost('per') != 'ml') {
|
|
$ml = 0;
|
|
}else{
|
|
$ml = $this->request->getPost('ml');
|
|
}
|
|
|
|
$data = [
|
|
'product_name' => $this->request->getPost('productname'),
|
|
'product_category' => $this->request->getPost('productcategory'),
|
|
'mfr_part_no' => $this->request->getPost('mfr_part_no'),
|
|
|
|
'unit_price' => $this->request->getPost('unit_price'),
|
|
// 'commision_rate' => $this->request->getPost('commision_rate'),
|
|
'sgst' => $tax,
|
|
'cgst' => $tax,
|
|
'purchase_cost' => $this->request->getPost('purchase_cost'),
|
|
'qty_stock'=> $this->request->getPost('qty_in_stock'),
|
|
'qty_in_demand'=> $this->request->getPost('qty_in_demand'),
|
|
'description' => $this->request->getPost('description'),
|
|
'vendor' =>json_encode( $this->request->getPost('vendor')),
|
|
'purchase_order_level' => $this->request->getPost('purchase_order_level'),
|
|
'reorder_level' => $this->request->getPost('reorder_level'),
|
|
'quality' => $this->request->getPost('quality'),
|
|
'make_id' => json_encode($this->request->getPost('make')),
|
|
'models_id' => json_encode($this->request->getPost('model')),
|
|
'rack_number' => $this->request->getPost('rack_number'),
|
|
'manufacturer_id' => $this->request->getPost('manufacturer'),
|
|
'prefered_vendor' => $this->request->getPost('prefered_vendor'),
|
|
'specification' => $this->request->getPost('specification'),
|
|
'hsn_sac' => $this->request->getPost('hsn_sac'),
|
|
'isactive' => 1 ,
|
|
'branch_id' => $this->session->get('logged_user_branch_id'),
|
|
|
|
'total_amount' => $this->request->getPost('total_amount'),
|
|
'per' => $this->request->getPost('per'),
|
|
'ml' => $ml
|
|
];
|
|
|
|
$product_id = $this->request->getPost('product_id');
|
|
|
|
|
|
if (!empty($product_id)) {
|
|
|
|
$ProductModel->update($product_id, $data);
|
|
} else {
|
|
|
|
$ProductModel->insert($data);
|
|
$product_id = $ProductModel->getInsertID();
|
|
}
|
|
|
|
$orderNumber = 'TM' . str_pad($product_id, 8, '0', STR_PAD_LEFT);
|
|
|
|
// Update sales order with generated order number
|
|
$ProductModel->update($product_id, ['sku_id' => $orderNumber]);
|
|
return redirect()->to('product_index');
|
|
}
|
|
|
|
public function delete_product($product_id)
|
|
{
|
|
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
|
|
$model = new ProductModel();
|
|
$where = ['product_id' => $product_id, 'isactive' => 1 , 'branch_id' => $this->session->get('logged_user_branch_id')]; // Assuming 'isactive' is a column in your database
|
|
$existingProduct = $model->where($where)->first();
|
|
|
|
if ($existingProduct) {
|
|
$data['isactive'] = 0;
|
|
|
|
if ($model->update($product_id, $data)) {
|
|
session()->setFlashdata('success', 'Deleted successfully.');
|
|
$this->logger->info("Users: has been Inactivated successfully. Inactivated ID = ".$product_id);
|
|
}
|
|
}
|
|
|
|
|
|
return redirect()->to('product_index');
|
|
}
|
|
|
|
// Retrieve the make_id from the AJAX request
|
|
public function get_vendors_by_model()
|
|
{
|
|
|
|
$model_ids = $this->request->getPost('model_ids');
|
|
$make_id = $this->request->getPost('make_id');
|
|
$vendorModel = new VendorModel();
|
|
$Vendors = $vendorModel->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
|
|
if($Vendors){
|
|
|
|
$data = [];
|
|
|
|
foreach ($model_ids as $modelKey => $modelValue)
|
|
{
|
|
foreach ($Vendors as $vendorsKey => $vendorsValue)
|
|
{
|
|
print_r($vendorsValue);die;
|
|
$modelsArray = json_decode($vendorsValue['model'], true);
|
|
if (is_array($modelsArray))
|
|
{
|
|
$findIfModelExist = array_search($modelValue, $modelsArray);
|
|
if ($findIfModelExist !== false)
|
|
{
|
|
array_push($data,$vendorsValue);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (count($data)) {
|
|
|
|
$arrayOfArrays = array_map(function($obj) {
|
|
return (array) $obj;
|
|
}, $data);
|
|
|
|
// Remove duplicates based on string representation of each object
|
|
$uniqueArray = array_map('unserialize', array_unique(array_map('serialize', $arrayOfArrays)));
|
|
|
|
// Convert the unique array of associative arrays back to an array of objects
|
|
$uniqueObjectsArray = array_map(function($arr) {
|
|
return (object) $arr;
|
|
}, $uniqueArray);
|
|
|
|
return $this->response->setJSON($uniqueArray);
|
|
|
|
} else {
|
|
|
|
return $this->response->setJSON([]);
|
|
}
|
|
}else {
|
|
|
|
return $this->response->setJSON([]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function get_models()
|
|
{
|
|
$make_ids = $this->request->getPost('make_id'); // Assuming you are sending make_id via POST
|
|
$BikemodelsModel = new BikemodelsModel(); // Adjust this according to your actual model name
|
|
|
|
|
|
|
|
$formatted_models = [];
|
|
|
|
// Iterate over each selected make ID
|
|
if ($make_ids) {
|
|
foreach ($make_ids as $make_id) {
|
|
// Fetch models based on the selected make ID
|
|
$models = $BikemodelsModel->where('make_id', $make_id)->where('business_id', $this->session->get('logged_user_business_id'))->orderBy('model_name')->findAll();
|
|
|
|
// Iterate over each fetched model and format it as needed
|
|
foreach ($models as $model) {
|
|
// Create an associative array with 'model_id' and 'model_name' properties
|
|
$formatted_model = [
|
|
'make_id' => $model['make_id'],
|
|
'model_id' => $model['model_id'],
|
|
'model_name' => $model['model_name']
|
|
// Add other properties if needed
|
|
];
|
|
|
|
// Push the formatted model into the array
|
|
$formatted_models[] = $formatted_model;
|
|
}
|
|
}
|
|
}
|
|
return $this->response->setJSON($formatted_models);
|
|
}
|
|
|
|
|
|
|
|
|
|
public function save_make() {
|
|
$response = []; // Initialize an empty array to hold the response data
|
|
|
|
// Assuming BikemakeModel and BikemodelsModel are properly defined
|
|
|
|
$BikemakeModel = new BikemakeModel();
|
|
$BikemodelsModel = new BikemodelsModel();
|
|
|
|
$make = $this->request->getPost('make');
|
|
$model = $this->request->getPost('model');
|
|
|
|
// Check if both make and model are provided
|
|
if (!empty($make) && !empty($model)) {
|
|
$data = [
|
|
'make' => $make,
|
|
'business_id' => $this->session->get('logged_user_business_id'),
|
|
];
|
|
|
|
// Insert the make into the database
|
|
$BikemakeModel->insert($data);
|
|
$make_id = $BikemakeModel->getInsertID();
|
|
|
|
$modelData = [
|
|
'model_name' => $model,
|
|
'make_id' => $make_id,
|
|
'business_id' => $this->session->get('logged_user_business_id'),
|
|
];
|
|
|
|
// Insert the model into the database
|
|
$BikemodelsModel->insert($modelData);
|
|
|
|
// Set success status in the response
|
|
$response['success'] = true;
|
|
} else {
|
|
// If make or model is empty, set success status to false
|
|
$response['success'] = false;
|
|
}
|
|
|
|
// Send JSON response back to the client
|
|
return $this->response->setJSON($response);
|
|
}
|
|
public function get_makes()
|
|
{
|
|
$BikeMakeModel = new BikeMakeModel(); // Adjust this according to your actual model name
|
|
$makes = $BikeMakeModel->findAll();
|
|
return $this->response->setJSON($makes);
|
|
}
|
|
public function save_model() {
|
|
$response = [];
|
|
$BikemodelsModel = new BikemodelsModel();
|
|
|
|
$make_id = $this->request->getPost('make_id');
|
|
$model = $this->request->getPost('modelvalue');
|
|
if (!empty($make_id) && !empty($model)) {
|
|
$modelData = [
|
|
'model_name' => $model,
|
|
'make_id' => $make_id,
|
|
'business_id' => $this->session->get('logged_user_business_id'),
|
|
];
|
|
|
|
|
|
$model_id = $BikemodelsModel->insert($modelData);
|
|
|
|
$modelData = $BikemodelsModel->where('make_id',$make_id)->findAll();
|
|
|
|
|
|
$response['success'] = true;
|
|
$response['model_id'] = $model_id;
|
|
$response['model_value'] = $model;
|
|
} else {
|
|
|
|
$response['success'] = false;
|
|
}
|
|
|
|
|
|
return $this->response->setJSON($response);
|
|
}
|
|
|
|
|
|
|
|
public function save_manufacturer(){
|
|
$response = [];
|
|
$ManufacturerModel = new ManufacturerModel();
|
|
|
|
$manufacturer_name = $this->request->getPost('manufacturer_name');
|
|
$quality = $this->request->getPost('quality');
|
|
if (!empty($manufacturer_name) && !empty($quality)) {
|
|
$modelData = [
|
|
'manufacturer_name' => $manufacturer_name,
|
|
'quality' => $quality,
|
|
'business_id'=> $this->session->get('logged_user_business_id')
|
|
];
|
|
|
|
|
|
$manufacturer_id = $ManufacturerModel->insert($modelData);
|
|
|
|
$modelData = $ManufacturerModel->where('business_id', $this->session->get('logged_user_business_id'))->orderBy('manufacturer_name')->findAll();
|
|
|
|
|
|
$response['success'] = true;
|
|
$response['manufacturer_id'] = $manufacturer_id;
|
|
$response['quality'] = $quality;
|
|
$response['modelData'] = $modelData;
|
|
} else {
|
|
|
|
$response['success'] = false;
|
|
}
|
|
|
|
|
|
return $this->response->setJSON($response);
|
|
}
|
|
|
|
public function product_list_for_service(){
|
|
$ProductModel = new ProductModel();
|
|
// Assuming you have a model for products and one for manufacturers
|
|
$products = $ProductModel
|
|
->select('products.*, manufacturer.manufacturer_name')
|
|
->join('manufacturer', 'manufacturer.manufacturer_id = products.manufacturer_id')
|
|
->where('products.branch_id', $this->session->get('logged_user_branch_id'))
|
|
->findAll();
|
|
|
|
return $this->response->setJSON($products);
|
|
}
|
|
|
|
|
|
public function status_product()
|
|
{
|
|
|
|
try {
|
|
$product_id = $this->request->getPost('product_id');
|
|
$isactive = $this->request->getPost('isactive');
|
|
|
|
$ProductModel = new ProductModel();
|
|
$data = [
|
|
'isactive' => $isactive
|
|
];
|
|
$updated = $ProductModel->update($product_id, $data);
|
|
|
|
if ($updated) {
|
|
$result = $data;
|
|
return $this->respond(['status' => 'success','code' => 200],200);
|
|
} else {
|
|
$result = "No Match's";
|
|
return $this->respond(['status' => 'failed','code' => 404],404);
|
|
}
|
|
} catch (\Exception $exception) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $exception],500);
|
|
}
|
|
}
|
|
|
|
} |