EVOLUTION-NINJA
Edit File: Civil.php
<?php namespace App\Controllers; use App\Models\Gss_model; class Civil extends BaseController { public function __construct() { $this->db = \Config\Database::connect(); } public function access_id() { $gss_model = new Gss_model(); $id=session()->get('admin_id'); $table='gss_login'; $where=array('user_id'=>$id); $d=$gss_model->get_where_row($table,$where); return $d->user_type_id; } public function access_details() { $gss_model = new Gss_model(); $id=session()->get('admin_id'); $table='gss_login'; $where=array('user_id'=>$id); $d=$gss_model->get_where_row($table,$where); $data['user_type_id']=$d->user_type_id; $table='gss_access_controls'; $where=array('department_id'=>$data['user_type_id']); return $gss_model->get_where_result($table,$where); } public function civil_vendor_details() { $admin_id =session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/add_civil_vendor',$data); } else { redirect('/'); } } public function civil_vendor_list() { $builder = $this->db->table('gss_civil_vendor_details'); $builder->where('delete_status', 'ACTIVE'); $builder->orderBy('id', 'DESC'); // Default order is ASC, change to DESC if needed $query = $builder->get(); $result = $query->getResult(); if ($result) { return $this->response->setJSON($result); } else { return $this->response->setJSON(['result' => 0]); } } public function delete_civil_vendor_details() { $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $builder = $this->db->table('gss_civil_vendor_details'); $builder->where('id', $id); $builder->update(['delete_status' => 'INACTIVE']); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Deleted successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made']); } } public function get_civil_vendor_details() { $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $result = $this->db->table('gss_civil_vendor_details')->where('id', $id)->get()->getRow(); if ($result) { return $this->response->setJSON(['result' => 1, 'message' => $result]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Data not found']); } } public function update_civil_vendor_details() { $id = $this->request->getPost('edit_id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $data = [ 'vendor_name' => $this->request->getPost('vendor_name_update'), 'company_name' => $this->request->getPost('company_name_update'), 'mobile' => $this->request->getPost('contact1_update'), 'mobile2' => $this->request->getPost('contact2_update'), 'email' => $this->request->getPost('email_update'), 'company_address' => $this->request->getPost('company_address_update'), 'gstin' => $this->request->getPost('gstin_update'), 'bank_name' => $this->request->getPost('bank_name_update'), 'account_no' => $this->request->getPost('acc_no_update'), 'ifsc_code' => $this->request->getPost('ifsc_update'), 'bank_address' => $this->request->getPost('bank_address_update'), 'modified_at' => date('Y-m-d H:i:s', time()), 'delete_status' => 'ACTIVE' ]; // File Upload Handling if ($this->request->getFileMultiple('file_upload_update')) { $document = []; foreach ($this->request->getFileMultiple('file_upload_update') as $file) { if ($file->isValid() && !$file->hasMoved()) { $newName = time() . '_' . $file->getClientName(); $file->move('public/civil_vendor_details_uploads/', $newName); $document[] = $newName; } } if (!empty($document)) { $data['upload_files'] = json_encode($document); } } // Update Query $updated = $this->db->table('gss_civil_vendor_details')->where('id', $id)->update($data); if ($updated) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated Successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Update Failed']); } } public function add_civil_vendor_details() { $table = 'gss_civil_vendor_details'; // Get input data $data = [ 'vendor_name' => $this->request->getPost('vendor_name'), 'company_name' => $this->request->getPost('company_name'), 'mobile' => $this->request->getPost('contact1'), 'mobile2' => $this->request->getPost('contact2'), 'email' => $this->request->getPost('email'), 'company_address' => $this->request->getPost('company_address'), 'gstin' => $this->request->getPost('gstin'), 'bank_name' => $this->request->getPost('bank_name'), 'account_no' => $this->request->getPost('acc_no'), 'ifsc_code' => $this->request->getPost('ifsc'), 'bank_address' => $this->request->getPost('bank_address'), 'created_at' => date('Y-m-d H:i:s', time()), 'modified_at' => date('Y-m-d H:i:s', time()), 'delete_status' => 'ACTIVE' ]; // Check for duplicate entry $existing = $this->db->table($table)->where([ 'vendor_name' => $data['vendor_name'], 'company_name' => $data['company_name'], 'mobile' => $data['mobile'], 'mobile2' => $data['mobile2'], 'email' => $data['email'], 'company_address' => $data['company_address'], 'gstin' => $data['gstin'], 'bank_name' => $data['bank_name'], 'account_no' => $data['account_no'], 'ifsc_code' => $data['ifsc_code'], 'bank_address' => $data['bank_address'], ])->get()->getRow(); if ($existing) { return $this->response->setJSON(['result' => 0, 'message' => 'Data Already Exists']); } // File Upload Handling if ($this->request->getFileMultiple('file_upload')) { $document = []; foreach ($this->request->getFileMultiple('file_upload') as $file) { if ($file->isValid() && !$file->hasMoved()) { $newName = time() . '_' . $file->getClientName(); $file->move('public/civil_vendor_details_uploads/', $newName); $document[] = $newName; } } if (!empty($document)) { $data['upload_files'] = json_encode($document); } } // Insert Data $inserted = $this->db->table($table)->insert($data); if ($inserted) { return $this->response->setJSON(['result' => 1, 'message' => 'Added Successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Insertion Failed']); } } public function civil_bank_details() { $admin_id = session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/add_civil_bank_details',$data); } else { redirect('/'); } } public function add_civil_bank_details() { $table = 'gss_civil_bank_details'; // Get input data securely $data = [ 'bank_name' => $this->request->getPost('acc_name_holder'), 'holder_name' => $this->request->getPost('acc_holder'), 'holder_address' => $this->request->getPost('acc_holder_address'), 'acc_no' => $this->request->getPost('acc_no'), 'pan_no' => $this->request->getPost('pan_no'), 'gst_no' => $this->request->getPost('gst_no'), 'ifsc' => $this->request->getPost('ifsc'), 'bank_branch' => $this->request->getPost('branch_name'), 'bank_address' => $this->request->getPost('address'), 'created_at' => date('Y-m-d H:i:s'), 'modified_at' => date('Y-m-d H:i:s'), 'delete_status' => 'ACTIVE' ]; // Check if data already exists $existing = $this->db->table($table) ->where('bank_name', $data['bank_name']) ->where('acc_no', $data['acc_no']) ->where('delete_status', 'ACTIVE') ->get() ->getRow(); if ($existing) { return $this->response->setJSON(['result' => 0, 'message' => 'Data Already Exists']); } // Insert Data $inserted = $this->db->table($table)->insert($data); if ($inserted) { return $this->response->setJSON(['result' => 1, 'message' => 'Added Successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Insertion Failed']); } } public function civil_bank_list() { $table = 'gss_civil_bank_details'; // Fetch Active Records Ordered by ID $result = $this->db->table($table) ->where('delete_status', 'ACTIVE') ->orderBy('id', 'ASC') ->get() ->getResult(); // Return JSON Response return $this->response->setJSON($result ?: ['result' => 0]); } public function delete_civil_bank_details() { $table = 'gss_civil_bank_details'; $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } // Update delete_status to INACTIVE $result = $this->db->table($table) ->where('id', $id) ->update(['delete_status' => 'INACTIVE']); // Check if the row was updated if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Deleted successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Deletion failed or record not found']); } } public function get_civil_bank_details() { $table = 'gss_civil_bank_details'; $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $result = $this->db->table($table)->where('id', $id)->get()->getRowArray(); if ($result) { return $this->response->setJSON(['result' => 1, 'message' => $result]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Data not found']); } } public function update_civil_bank_details() { $table = 'gss_civil_bank_details'; $id = $this->request->getPost('edit_id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $data = [ 'holder_name' => $this->request->getPost('acc_holder_update'), 'holder_address' => $this->request->getPost('acc_holder_address_update'), 'bank_name' => $this->request->getPost('acc_name_holder_update'), 'acc_no' => $this->request->getPost('acc_no_update'), 'pan_no' => $this->request->getPost('pan_no_update'), 'gst_no' => $this->request->getPost('gst_no_update'), 'ifsc' => $this->request->getPost('ifsc_update'), 'bank_branch' => $this->request->getPost('branch_name_update'), 'bank_address' => $this->request->getPost('address_update'), 'modified_at' => date('Y-m-d H:i:s'), 'delete_status' => 'ACTIVE' ]; $builder = $this->db->table($table); $builder->where('id', $id); $builder->update($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made or invalid ID']); } } public function civil_product_details() { $admin_id = session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/add_civil_product_details',$data); } else { redirect('/'); } } public function civil_product_list() { $table = 'gss_civil_product_details'; $builder = $this->db->table($table); $builder->where('delete_status', 'ACTIVE'); $builder->orderBy('id', 'ASC'); $query = $builder->get(); $result = $query->getResult(); if (!empty($result)) { return $this->response->setJSON($result); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No active products found']); } } public function delete_civil_product_details() { $table = 'gss_civil_product_details'; $id = $this->request->getPost('id'); // Correct way to get POST data in CI4 if ($id) { $data = ['delete_status' => 'INACTIVE']; $builder = $this->db->table($table); $builder->where('id', $id)->update($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Deleted successfully']); } } return $this->response->setJSON(['result' => 0, 'message' => 'Deletion failed']); } public function update_civil_product_details() { $table = 'gss_civil_product_details'; $id = $this->request->getPost('edit_id'); $pro_name = $this->request->getPost('pro_name'); $pro_description = $this->request->getPost('pro_description'); $pro_dept = $this->request->getPost('pro_dept'); $pro_currency = $this->request->getPost('pro_currency'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid Product ID']); } $modified_at = date('Y-m-d H:i:s'); $data = [ 'product_name' => $pro_name, 'description' => $pro_description, 'department' => $pro_dept, 'currency' => $pro_currency, 'modified_at' => $modified_at, 'delete_status' => 'ACTIVE' ]; $builder = $this->db->table($table); $builder->where('id', $id)->update($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } return $this->response->setJSON(['result' => 0, 'message' => 'No changes made']); } public function add_civil_product_details() { $table = 'gss_civil_product_details'; $pro_name = $this->request->getPost('pro_name'); $pro_description = $this->request->getPost('pro_description'); $pro_dept = $this->request->getPost('pro_dept'); $pro_currency = $this->request->getPost('pro_currency'); if (!$pro_name || !$pro_description || !$pro_dept) { return $this->response->setJSON(['result' => 0, 'message' => 'Missing required fields']); } $created_at = date('Y-m-d H:i:s'); $data = [ 'product_name' => $pro_name, 'description' => $pro_description, 'department' => $pro_dept, 'currency' => $pro_currency, 'modified_at' => $created_at, 'created_at' => $created_at, 'delete_status' => 'ACTIVE' ]; // Check if the product already exists $builder = $this->db->table($table); $existing = $builder->where([ 'product_name' => $pro_name, 'description' => $pro_description, 'department' => $pro_dept ])->get()->getRow(); if ($existing) { return $this->response->setJSON(['result' => 0, 'message' => 'Data already exists']); } // Insert new product $builder->insert($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Added successfully']); } return $this->response->setJSON(['result' => 0, 'message' => 'Failed to add data']); } public function get_civil_product_details() { $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Missing product ID']); } $table = 'gss_civil_product_details'; $builder = $this->db->table($table); $result = $builder->where('id', $id)->get()->getRow(); if ($result) { return $this->response->setJSON(['result' => 1, 'message' => $result]); } return $this->response->setJSON(['result' => 0, 'message' => 'Data not found']); } public function civil_service_details() { $admin_id = session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/add_civil_services',$data); } else { redirect('/'); } } public function civil_project_master() { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); echo view('admin/add_civil_projects',$data); } public function add_civil_project_details() { $table = 'gss_civil_project_master'; $pro_name = $this->request->getPost('pro_name'); $pro_description = $this->request->getPost('pro_description'); $nick_name = $this->request->getPost('pro_nick_name'); // Validate required fields if (!$pro_name || !$pro_description || !$nick_name) { return $this->response->setJSON(['result' => 0, 'message' => 'Missing required fields']); } $builder = $this->db->table($table); // Check if project already exists $existingProject = $builder->where([ 'project_name' => $pro_name, 'description' => $pro_description, 'delete_status' => 'ACTIVE' ])->get()->getRow(); if ($existingProject) { return $this->response->setJSON(['result' => 0, 'message' => 'Data Already Exists']); } // Insert new project $data = [ 'project_name' => $pro_name, 'description' => $pro_description, 'nick_name' => $nick_name, 'delete_status' => 'ACTIVE' ]; if( $builder->insert($data)){ return $this->response->setJSON(['result' => 1, 'message' => 'Added successfully']); } else{ return $this->response->setJSON(['result' => 0, 'message' => 'failed to add']); } } public function civil_project_list() { $builder = $this->db->table('gss_civil_project_master') ->where('delete_status', 'ACTIVE') ->orderBy('id', 'DESC'); // Change ASC to DESC if needed $result = $builder->get()->getResult(); if (!empty($result)) { return $this->response->setJSON($result); } else { return $this->response->setJSON(['result' => 0]); } } public function delete_civil_project_details() { $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $builder = $this->db->table('gss_civil_project_master') ->where('id', $id) ->update(['delete_status' => 'INACTIVE']); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Deleted successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made']); } } public function get_civil_project_details() { $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $builder = $this->db->table('gss_civil_project_master') ->where('id', $id) ->get() ->getRowArray(); if ($builder) { return $this->response->setJSON(['result' => 1, 'message' => $builder]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Data not found']); } } public function update_civil_project_details() { $id = $this->request->getPost('edit_id'); $pro_name = $this->request->getPost('pro_name'); $pro_description = $this->request->getPost('pro_description'); $nick_name = $this->request->getPost('pro_nick_name'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $data = [ 'project_name' => $pro_name, 'description' => $pro_description, 'nick_name' => $nick_name, 'delete_status' => 'ACTIVE' ]; $builder = $this->db->table('gss_civil_project_master') ->where('id', $id) ->update($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made']); } } public function from_address_master(){ $admin_id = session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); echo view('admin/from_address_master',$data); } else { redirect('/'); } } public function from_address_master_insert() { $mname = $this->request->getPost('mname'); $msname = $this->request->getPost('msname'); $maddress = $this->request->getPost('maddress'); $mgstno = $this->request->getPost('mgstno'); // Validate required fields if (!$mname || !$msname || !$maddress || !$mgstno) { return $this->response->setJSON(['result' => 0, 'message' => 'All fields are required']); } $created_at = date('Y-m-d H:i:s', time()); // Get current timestamp $data = [ 'name' => $mname, 'sname' => $msname, 'address' => $maddress, 'gstno' => $mgstno, 'created_on' => $created_at ]; $builder = $this->db->table('gss_from_master_table'); $insert = $builder->insert($data); if ($insert) { return $this->response->setJSON(['result' => 1, 'message' => 'Added successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Something went wrong.. try again']); } } public function from_address_master_list() { $builder = $this->db->table('gss_from_master_table'); $builder->where('delete_status', 'ACTIVE'); $query = $builder->get(); $result = $query->getResultArray(); // Fetch as an associative array if (!empty($result)) { return $this->response->setJSON($result); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No active records found']); } } public function delete_from_address() { $mid = $this->request->getPost('mid'); $builder = $this->db->table('gss_from_master_table'); $builder->where('mid', $mid); if ($mid == 2) { $data = ['delete_status' => 'ACTIVE']; // Prevent deletion $message = 'GSS Foundation data cannot be deleted'; } else { $data = ['delete_status' => 'INACTIVE']; $message = 'Deleted successfully'; } $builder->update($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => $message]); } else { return $this->response->setJSON(['result' => 0, 'message' => $message]); } } public function edit_master_form() { $mid = $this->request->getPost('mid'); if (!$mid) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid request, mid is required']); } $builder = $this->db->table('gss_from_master_table'); $builder->where(['mid' => $mid, 'delete_status' => 'ACTIVE']); $result = $builder->get()->getRowArray(); if ($result) { return $this->response->setJSON(['details' => $result, 'result' => 1]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No data found']); } } public function update_from_master_table() { $mid = $this->request->getPost('edit_mid'); $edit_mname = $this->request->getPost('edit_mname'); $edit_msname = $this->request->getPost('edit_msname'); $edit_maddress = $this->request->getPost('edit_maddress'); $edit_mgstno = $this->request->getPost('edit_mgstno'); if (!$mid) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid request, mid is required']); } $updated_on = date('Y-m-d H:i:s'); $data = [ 'name' => $edit_mname, 'sname' => $edit_msname, 'address' => $edit_maddress, 'gstno' => $edit_mgstno, 'updated_on' => $updated_on ]; $builder = $this->db->table('gss_from_master_table'); $builder->where('mid', $mid); $builder->update($data); if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made or update failed']); } } public function get_active_projects($table) { return $this->db->table($table) ->where('delete_status', 'ACTIVE') ->get() ->getResult(); } public function civil_purchase_order_list() { $admin_id = session()->get('admin_id'); if (!$admin_id) { return redirect()->to(base_url('/')); } $land_table = 'gss_civil_project_master'; $data = [ 'project' => $this->get_active_projects($land_table), 'user_type_id' => $this->access_id(), 'access' => $this->access_details() ]; return view('admin/civil_purchase_order_list', $data); } public function add_civil_service_details() { $table = 'gss_civil_service_details'; $db = \Config\Database::connect(); $builder = $db->table($table); $data = [ 'product_name' => $this->request->getPost('pro_name'), 'description' => $this->request->getPost('pro_description'), 'department' => $this->request->getPost('pro_dept'), 'currency' => $this->request->getPost('pro_currency'), 'modified_at' => date('Y-m-d H:i:s'), 'created_at' => date('Y-m-d H:i:s'), 'delete_status' => 'ACTIVE' ]; $existing = $builder->where([ 'product_name' => $data['product_name'], 'description' => $data['description'], 'department' => $data['department'] ])->get()->getRow(); if (!$existing) { $builder->insert($data); return $this->response->setJSON(['result' => 1, 'message' => 'Added successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Data Already Exists']); } } //civil purchase order public function get_civil_purchase_order_dates($from_date = null, $to_date = null) { $builder = $this->db->table('gss_civil_po'); $builder->select('*'); $builder->where('delete_status', 'ACTIVE'); if (!empty($from_date)) { $builder->where('date >=', $from_date); } if (!empty($to_date)) { $builder->where('date <=', $to_date); } $builder->groupBy(['po_no', 'mid']); $builder->orderBy('id', 'ASC'); return $builder->get()->getResultArray(); } public function civil_purchase_order_generated_list() { $from_date = $this->request->getGet('from'); $to_date = $this->request->getGet('to'); // Convert date format if needed if (!empty($from_date)) { $from_date = date('Y-m-d', strtotime($from_date)); } if (!empty($to_date)) { $to_date = date('Y-m-d', strtotime($to_date)); } $result = $this->get_civil_purchase_order_dates($from_date, $to_date); return $this->response->setJSON($result ?: ['result' => 0]); } public function civil_purchase_order_subgrid() { $id = $this->request->getGet('id'); if (empty($id)) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); } $db = \Config\Database::connect(); // Connect to the database $builder = $db->table('gss_civil_po'); // Fetch single row data $getalldatas = $builder->where('id', $id)->get()->getRow(); if (!$getalldatas) { return $this->response->setJSON(['result' => 0, 'message' => 'No data found']); } $po = $getalldatas->po_no; $year = $getalldatas->year; $mid = $getalldatas->mid; // Fetch subgrid data $subgridData = $db->table('gss_civil_po') ->where('mid', $mid) ->where('po_no', $po) ->where('year', $year) ->get() ->getResult(); return $this->response->setJSON($subgridData ?: ['result' => 0, 'message' => 'No subgrid data found']); } public function edit_civil_purchase_order() { $session = \Config\Services::session(); $admin_id = $session->get('admin_id'); if (!$admin_id) { return redirect()->to('/'); } $id = $this->request->getGet('id'); if (empty($id)) { return redirect()->to('/')->with('error', 'Invalid ID'); } $db = \Config\Database::connect(); $data['po_details'] = $db->table('gss_civil_po')->where('id', $id)->get()->getRow(); if (!$data['po_details']) { return redirect()->to('/')->with('error', 'No purchase order found'); } $data['fetch_details'] = $db->table('gss_civil_po') ->where('vendor', $data['po_details']->vendor) ->where('mid', $data['po_details']->mid) ->where('po_no', $data['po_details']->po_no) ->where('year', $data['po_details']->year) ->get() ->getResult(); $data['civil_project'] = $db->table('gss_civil_project_master') ->where('nick_name', $data['po_details']->project_name) ->get() ->getRow(); $data['owners'] = $db->table('gss_civil_project_master') ->where('delete_status', 'ACTIVE') ->get() ->getResult(); $data['master_data'] = $db->table('gss_from_master_table') ->where('mid', $data['po_details']->mid) ->get() ->getRow(); // Fetch user access details $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); // Additional key $data['key'] = 1; // Load view with all data return view('admin/edit_civil_purchase_order', $data); } public function update_civil_purchase_order() { $request = \Config\Services::request(); $id = $request->getPost('edit_id'); $vendor_name = $request->getPost('vendor_name'); $g_date = $request->getPost('g_date'); $exp = explode('-', $g_date); $in_year = $exp[2] ?? date('Y'); // Prevent undefined index $po_no = $request->getPost('po_no'); $exp_po = explode('0000', $po_no); $po = $exp_po[1] ?? $po_no; // Prevent undefined index // Other fields $currency = $request->getPost('currency'); $address = $request->getPost('address'); $contact_person = $request->getPost('contact_person'); $contact_number = $request->getPost('contact_number'); $email = $request->getPost('email'); // Array fields $product_id = $request->getPost('product_id'); $p_name = $request->getPost('p_name'); $i_no = $request->getPost('i_no'); $purpose = $request->getPost('purpose'); $quantityy = $request->getPost('quantityy'); $unit = $request->getPost('unit'); $inrvalue = $request->getPost('inrvalue'); $totalvalue = $request->getPost('totalvalue'); $cgst = $request->getPost('cgst'); $sgst = $request->getPost('sgst'); $igst = $request->getPost('igst'); $remarks = $request->getPost('remarks'); $otc_remarks = $request->getPost('otc_remarks'); // Financial data $total_amt = $request->getPost('total_amt'); $discount = $request->getPost('discount'); $grand_total = round($total_amt - (($total_amt * $discount) / 100)); // Additional fields $comment = $request->getPost('comment'); $gst_no = $request->getPost('gst_no'); $terms_payment = $request->getPost('terms_payment'); $bank_details = $request->getPost('bank_details'); $note = $request->getPost('note'); // Timestamp $modified_at = date('Y-m-d H:i:s'); // Check if product_id is an array if (!is_array($product_id) || empty($product_id)) { echo json_encode(['result' => 0, 'message' => 'No product details provided']); return; } // Prepare data for batch update $update_data = []; foreach ($product_id as $key => $pid) { $update_data[] = [ 'id' => $id[$key], 'po_no' => $po, 'vendor' => $vendor_name, 'date' => $g_date, 'year' => $in_year, 'currency' => $currency, 'vendor_address' => $address, 'contact_person' => $contact_person, 'contact_number' => $contact_number, 'email' => $email, 'product_id' => $pid, 'product_name' => $p_name[$key] ?? '', 'indent' => $i_no[$key] ?? '', 'purpose_no' => $purpose[$key] ?? '', 'quentity' => $quantityy[$key] ?? 0, 'unit_price' => $unit[$key] ?? 0, 'inr_value' => $inrvalue[$key] ?? 0, 'sgst' => $sgst[$key] ?? 0, 'cgst' => $cgst[$key] ?? 0, 'igst' => $igst[$key] ?? 0, 'total_value' => $totalvalue[$key] ?? 0, 'total_amt' => $total_amt, 'discount' => $discount, 'grand_total' => $grand_total, 'delete_status' => 'ACTIVE', 'material_delivery' => $comment, 'bank_details' => $bank_details, 'terms_of_payment' => $terms_payment, 'gst_no' => $gst_no, 'modified_at' => $modified_at, 'note' => $note, 'remarks' => $remarks[$key] ?? '', 'otc_remarks' => $otc_remarks[$key] ?? '', ]; } $db = \Config\Database::connect(); $builder = $db->table('gss_civil_po'); $result = $builder->updateBatch($update_data, 'id'); // Return JSON response if ($result) { echo json_encode(['result' => 1, 'message' => 'Updated successfully']); } else { echo json_encode(['result' => 0, 'message' => 'Update failed']); } } public function view_civil_purchase_order() { $session = session(); // Start session $admin_id = $session->get('admin_id'); if ($admin_id) { $gss_model = new Gss_model(); // Load Model $ids = $this->request->getGet('id'); // Fix typo (geGet -> getGet) $condition = ['id' => $ids]; $table = 'gss_civil_po'; // Fetch address details $data['fetch_address'] = $gss_model->get_where_row($table, $condition); if ($data['fetch_address']) { $where1 = [ 'vendor' => $data['fetch_address']->vendor, 'mid' => $data['fetch_address']->mid, 'po_no' => $data['fetch_address']->po_no, 'year' => $data['fetch_address']->year ]; // Fetch subgrid details $data['fetch_details'] = $gss_model->fetch_where_subgrid_data1($table, $where1); $data['key'] = 1; // Fetch project details $land_table = 'gss_civil_project_master'; $where = ['project_name' => $data['fetch_address']->project_name]; $data['civil_project'] = $gss_model->get_where_row($land_table, $where); // Fetch PO bill details $data['po_bill_details'] = $gss_model->po_bill_details($ids); // Fetch user access details $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/view_civil_purchase_order', $data); } else { return redirect()->to('/'); } } else { return redirect()->to('/'); } } public function single_project_po_no() { $gss_model = new Gss_model(); $table = 'gss_civil_po'; $project = $this->request->getPost('project'); // Use getPost() in CI4 $where = ['project_name' => $project, 'delete_status' => 'ACTIVE']; $order_by = 'id'; $gss_model = new Gss_model(); // Load your model $result = $gss_model->get_where_result_distinct($table, $where, $order_by); if ($result) { return $this->response->setJSON(['result' => 1, 'po_no' => $result]); } else { return $this->response->setJSON(['result' => 0]); } } public function civil_purchase_order_project_wise() { $from_date = $this->request->getGet('from'); $to_date = $this->request->getGet('to'); if (!empty($from_date) && strtotime($from_date)) { $from_date = date('d-m-Y', strtotime($from_date)); } if (!empty($to_date) && strtotime($to_date)) { $to_date = date('d-m-Y', strtotime($to_date)); } $project = $this->request->getGet('project'); $po_no = $this->request->getGet('po_no'); $table = 'gss_civil_po'; $gss_model = new Gss_model(); if ($project == 'all' && empty($from_date) && empty($to_date)) { $condition = ['delete_status' => 'ACTIVE']; $result = $gss_model->get_where_distinct_po($table, $condition); } elseif (!empty($project) && $po_no == "all" && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_po_order($table, $from_date, $to_date, $project, $po_no); } elseif ($po_no == "all") { $where = ['project_name' => $project]; $result = $gss_model->get_where_distinct_civil_po_wo($table, $where, $project, $po_no); } elseif ($project == 'all' && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_purchase_order_dates($from_date, $to_date); } elseif (!empty($project) && $po_no != "all" && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_po($from_date, $to_date, $project, $po_no); } else { $result = $gss_model->get_civil_purchase_order_project($project, $po_no); } return $this->response->setJSON($result ?: ['result' => 0]); } public function civil_po_send_mail() { $table = 'gss_civil_po'; $id = $this->request->getPost('id'); $where = ['id' => $id]; $gss_model = new \App\Models\Gss_model(); // Load your model manually if not autoloaded $result = $gss_model->get_mail($table, $where); // print_r($result);die(); $email = $result[0]['email']; // print_r($email);die(); $details = $gss_model->civil_po_send_mail($table, $where); foreach ($details as $det) { $po_no = $det['po_no']; } $data['details'] = $gss_model->civil_po_send_mail($table, $where); $where1 = ['po_no' => $det['po_no']]; $data['fetch_details'] = $gss_model->fetch_where_subgrid_data1($table, $where1); // Render view into a variable $body = view('email/view_civil_purchase_order.php', $data); // print_r($body);die(); $admin_id = session()->get('admin_id'); $login_table = 'gss_login'; $where_login = ['user_id' => $admin_id]; $get_sign = $gss_model->get_where_row($login_table, $where_login); $cc = $get_sign->email; // print_r($cc);die(); $emailService = \Config\Services::email(); $config = [ 'protocol' => 'smtp', 'SMTPHost' => 'smtp.googlemail.com', // no ssl:// prefix 'SMTPPort' => 465, 'SMTPUser' => 'gssorganised@gmail.com', 'SMTPPass' => 'GSSKarthi@1236#', 'SMTPCrypto' => 'ssl', // use this instead of prefix 'mailType' => 'html', 'charset' => 'utf-8', 'newline' => "\r\n", ]; $emailService->initialize($config); $emailService->setMailType('html'); $emailService->setFrom('gssorganised@gmail.com', 'GSS'); $emailService->setTo($email, 'GSS'); $emailService->setCC($cc); $emailService->setSubject('Civil Purchase Order From'); $emailService->setMessage($body); $emailService->send(); } public function civil_work_order_list() { $session = session(); $admin_id = $session->get('admin_id'); if (!$admin_id) { return redirect()->to('/'); } $data = [ 'project' => $this->get_where_result1111('gss_civil_project_master'), 'user_type_id' => $this->access_id(), 'access' => $this->access_details(), ]; return view('admin/civil_work_order_list', $data); } public function get_where_result1111($tableName) { return $this->db->table($tableName) ->where('delete_status', 'ACTIVE') ->get() ->getResult(); } public function single_project_wo_no() { $gss_model=new Gss_model(); $table = 'gss_civil_wo'; $project = $this->request->getPost('project'); $where = array('project_name' => $project ,'delete_status' => 'ACTIVE'); $order_by = 'id'; $result = $gss_model->get_where_result_distinct($table,$where,$order_by); if (!empty($result)) { return $this->response->setJSON(['result' => 1, 'wo_no' => $result]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No records found']); } } public function civil_work_order_project_wise() { $db = \Config\Database::connect(); $from_date = $this->request->getGet('from'); $to_date = $this->request->getGet('to'); $project = $this->request->getGet('project'); $po_no = $this->request->getGet('wo_no'); $from_date = (new \DateTime($from_date))->format('d-m-Y'); $to_date = (new \DateTime($to_date))->format('d-m-Y'); $table = 'gss_civil_wo'; if ($project == 'all' && empty($from_date) && empty($to_date)) { $result = $db->table($table) ->where('delete_status', 'ACTIVE') ->distinct() ->get() ->getResult(); } elseif (!empty($project) && $po_no == 'all' && !empty($from_date) && !empty($to_date)) { $result = $db->table($table) ->where('project_name', $project) ->where('delete_status', 'ACTIVE') ->where('date >=', $from_date) ->where('date <=', $to_date) ->get() ->getResult(); } elseif ($project == 'all' && !empty($from_date) && !empty($to_date)) { $result = $db->table($table) ->where('delete_status', 'ACTIVE') ->where('date >=', $from_date) ->where('date <=', $to_date) ->get() ->getResult(); } elseif ($po_no == 'all') { $result = $db->table($table) ->where('project_name', $project) ->where('delete_status', 'ACTIVE') ->get() ->getResult(); } elseif (!empty($project) && !empty($po_no) && !empty($from_date) && !empty($to_date)) { $result = $db->table($table) ->where('project_name', $project) ->where('po_no', $po_no) ->where('delete_status', 'ACTIVE') ->where('date >=', $from_date) ->where('date <=', $to_date) ->get() ->getResult(); } else { $result = $db->table($table) ->where('po_no', $po_no) ->where('delete_status', 'ACTIVE') ->get() ->getResult(); } // print_r($result); return $this->response->setJSON($result); } public function export_print_civil_purchase_order() { $from_date = $this->request->getGet('from'); $to_date = $this->request->getGet('to'); $project = $this->request->getGet('project'); $po_no = $this->request->getGet('po_no'); if (!empty($from_date)) { $from_date = (new \DateTime($from_date))->format('Y-m-d'); } if (!empty($to_date)) { $to_date = (new \DateTime($to_date))->format('Y-m-d'); } $table = 'gss_civil_po'; $result = []; $gss_model= new Gss_model(); if ($project == 'all' && empty($from_date) && empty($to_date)) { $condition = ['delete_status' => 'ACTIVE']; $result = $gss_model->get_where_distinct_po($table, $condition); } elseif (!empty($project) && $po_no == "all" && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_po_order($table, $from_date, $to_date, $project, $po_no); } elseif ($po_no == "all") { $where = ['project_name' => $project]; $result = $gss_model->get_where_distinct_civil_po_wo($table, $where, $project, $po_no); } elseif ($project == 'all' && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_purchase_order_dates($from_date, $to_date); } elseif (!empty($project) && $po_no != "all" && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_po($from_date, $to_date, $project, $po_no); } else { $result = $gss_model->get_civil_purchase_order_project($project, $po_no); } // Return JSON response return $this->response->setJSON($result ?: ['result' => 0]); } public function civil_work_order_generated_list() { $gss_model= new Gss_model(); $request = \Config\Services::request(); // Get input values using CI4's input handling $from_date = $request->getGet('from'); $to_date = $request->getGet('to'); // Convert dates using strtotime() safely if (!empty($from_date)) { $from_date = date('Y-m-d', strtotime($from_date)); } if (!empty($to_date)) { $to_date = date('Y-m-d', strtotime($to_date)); } // Fetch results $result = $gss_model->get_civil_work_order_dates($from_date, $to_date); // Return JSON response return $this->response->setJSON($result ?: ['result' => 0]); } public function civil_work_order_subgrid() { $gss_model= new Gss_model(); $id = $this->request->getGet('id'); if (empty($id)) { return $this->response->setJSON(['status' => 'error', 'message' => 'ID is required']); } $table = 'gss_civil_wo'; // Fetch main data $where = ['id' => $id]; $getalldatas = $gss_model->get_where_row($table, $where); if (!$getalldatas) { return $this->response->setJSON(['status' => 'error', 'message' => 'No record found']); } // Extract required values $po = $getalldatas->po_no ?? null; $year = $getalldatas->year ?? null; $mid = $getalldatas->mid ?? null; if (!$po || !$year || !$mid) { return $this->response->setJSON(['status' => 'error', 'message' => 'Incomplete data']); } // Fetch subgrid data $where1 = ['mid' => $mid, 'po_no' => $po, 'year' => $year]; $getalldata = $gss_model->fetch_where_subgrid_data1($table, $where1); return $this->response->setJSON($getalldata); } public function export_print_civil_work_order() { $gss_model= new Gss_model(); $from_date = $this->request->getGet('from'); $to_date = $this->request->getGet('to'); $project = $this->request->getGet('project'); $po_no = $this->request->getGet('wo_no'); if (!empty($from_date)) { $from_date = (new \DateTime($from_date))->format('d-m-Y'); } if (!empty($to_date)) { $to_date = (new \DateTime($to_date))->format('d-m-Y'); } $table = 'gss_civil_wo'; if ($project == 'all' && empty($from_date) && empty($to_date)) { $condition = ['delete_status' => 'ACTIVE']; $result = $gss_model->get_where_distinct_po($table, $condition); } elseif (!empty($project) && $po_no == "all" && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_po_order($table, $from_date, $to_date, $project, $po_no); } elseif ($project == 'all' && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_work_order_dates($from_date, $to_date); } elseif ($po_no == "all") { $where = ['project_name' => $project]; $result = $gss_model->get_where_distinct_civil_po_wo($table, $where, $project, $po_no); } elseif (!empty($project) && !empty($po_no) && !empty($from_date) && !empty($to_date)) { $result = $gss_model->get_civil_wo($from_date, $to_date, $project, $po_no); } else { $result = $gss_model->get_civil_work_order_project($project, $po_no); } return $this->response->setJSON($result ?: ['result' => 0]); } public function civil_service_list() { $db = \Config\Database::connect(); // CI4 Database Connection $builder = $db->table('gss_civil_service_details'); // Fetch records where delete_status = 'ACTIVE' & order by 'id' $result = $builder->where('delete_status', 'ACTIVE') ->orderBy('id', 'ASC') ->get() ->getResult(); if (!empty($result)) { return $this->response->setJSON($result); } else { return $this->response->setJSON(['result' => 0]); } } public function get_civil_service_details() { $db = \Config\Database::connect(); // CI4 Database Connection $builder = $db->table('gss_civil_service_details'); $id = $this->request->getPost('id'); // Get POST parameter safely if (!$id) { echo json_encode(['result' => 0, 'message' => 'Invalid ID']); return; } $result = $builder->where('id', $id) ->get() ->getRow(); if ($result) { return $this->response->setJSON(['result' => 1, 'message' => $result]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Data not found']); } } public function update_civil_service_details() { $db = \Config\Database::connect(); // CI4 Database Connection $builder = $db->table('gss_civil_service_details'); $id = $this->request->getPost('edit_id'); // Get POST parameter safely if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid ID']); return; } $data = [ 'product_name' => $this->request->getPost('pro_name'), 'description' => $this->request->getPost('pro_description'), 'department' => $this->request->getPost('pro_dept'), 'currency' => $this->request->getPost('pro_currency'), 'modified_at' => date('Y-m-d H:i:s'), // Only modify updated_at ]; $builder->where('id', $id)->update($data); if ($db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made']); } } public function delete_civil_service_details() { $db = \Config\Database::connect(); // CI4 Database Connection $builder = $db->table('gss_civil_service_details'); $id = $this->request->getPost('id'); // Get POST parameter safely if (!$id) { echo json_encode(['result' => 0, 'message' => 'Invalid ID']); return; } $data = ['delete_status' => 'INACTIVE']; $builder->where('id', $id)->update($data); if ($db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Deleted successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No record updated']); } } public function edit_civil_work_order() { $session = \Config\Services::session(); $admin_id = $session->get('admin_id'); if (!$admin_id) { return redirect()->to(base_url('/')); } $id = $this->request->getGet('id'); if (!$id) { return redirect()->back()->with('error', 'Invalid ID'); } $db = \Config\Database::connect(); // Fetch PO details $po_details = $db->table('gss_civil_wo')->where('id', $id)->get()->getRow(); if (!$po_details) { return redirect()->back()->with('error', 'Record not found'); } // Fetch subgrid details $fetch_details = $db->table('gss_civil_wo') ->where([ 'vendor' => $po_details->vendor, 'mid' => $po_details->mid, 'po_no' => $po_details->po_no, 'year' => $po_details->year ]) ->get()->getResult(); // Fetch civil project details $civil_project = $db->table('gss_civil_project_master') ->where('nick_name', $po_details->project_name) ->get()->getRow(); // Fetch all owners $owners = $db->table('gss_civil_project_master')->get()->getResult(); // Fetch master data $master_data = $db->table('gss_from_master_table') ->where('mid', $po_details->mid) ->get()->getRow(); $data = [ 'po_details' => $po_details, 'fetch_details' => $fetch_details, 'civil_project' => $civil_project, 'owners' => $owners, 'master_data' => $master_data, 'user_type_id' => $this->access_id(), 'access' => $this->access_details(), 'key' => 1 ]; return view('admin/edit_civil_work_order', $data); } public function update_civil_work_order() { $id = $this->request->getPost('edit_id'); $bank_details = $this->request->getPost('bank_details'); $vendor_name = $this->request->getPost('vendor_name'); $g_date = $this->request->getPost('g_date'); $exp = explode('-', $g_date); $in_year = $exp[2]; $po_no = $this->request->getPost('po_no'); $exp_wo = explode('0000', $po_no); $wo = $exp_wo[1]; $currency = $this->request->getPost('currency'); $address = $this->request->getPost('address'); $contact_person = $this->request->getPost('contact_person'); $contact_number = $this->request->getPost('contact_number'); $email = $this->request->getPost('email'); $product_id = $this->request->getPost('product_id'); $p_name = $this->request->getPost('p_name'); $i_no = $this->request->getPost('i_no'); $cgst = $this->request->getPost('cgst'); $sgst = $this->request->getPost('sgst'); $project_name = $this->request->getPost('project_name'); $purpose = $this->request->getPost('purpose'); $igst = $this->request->getPost('igst'); $tds = $this->request->getPost('tds'); $inrvalue = $this->request->getPost('inrvalue'); $totalvalue = $this->request->getPost('totalvalue'); $ot_charges = $this->request->getPost('ot_charges'); $inr_value_val = $this->request->getPost('inr_value_val'); $ot_sgst = $this->request->getPost('ot_sgst'); $ot_cgst = $this->request->getPost('ot_cgst'); $ot_igst = $this->request->getPost('ot_igst'); $total_value_val = $this->request->getPost('total_value_val'); $otc_remarks = $this->request->getPost('otc_remarks'); $remarks = $this->request->getPost('remarks'); $note = $this->request->getPost('note'); $total_amt = $this->request->getPost('total_amt'); $discount = $this->request->getPost('discount'); $g_total = $this->request->getPost('g_total'); $comment = $this->request->getPost('comment'); $gst_no = $this->request->getPost('gst_no'); $terms_payment = $this->request->getPost('terms_payment'); $d = ($total_amt * $discount) / 100; $val = $total_amt - $d; $tds_val = ((float)$total_amt * (float)$tds) / 100; $grand_total = round($val - $tds_val); $created_at = date('Y-m-d'); $table = 'gss_civil_wo'; $builder = $this->db->table($table); foreach ($product_id as $key => $ids) { $data = [ 'po_no' => $wo, 'vendor' => $vendor_name, 'date' => $g_date, 'year' => $in_year, 'currency' => $currency, 'vendor_address' => $address, 'contact_person' => $contact_person, 'contact_number' => $contact_number, 'email' => $email, 'product_id' => $ids, 'product_name' => $p_name[$key], 'indent' => $i_no[$key], 'project_name' => $project_name, 'purpose_no' => $purpose[$key], 'inr_value' => $inrvalue[$key], 'sgst' => $sgst[$key], 'cgst' => $cgst[$key], 'igst' => $igst[$key], 'total_value' => $totalvalue[$key], 'total_amt' => $total_amt, 'discount' => $discount, 'grand_total' => $g_total, 'delete_status' => 'ACTIVE', 'material_delivery' => $comment, 'bank_details' => $bank_details, 'terms_of_payment' => $terms_payment, 'gst_no' => $gst_no, 'ot_charges' => $ot_charges, 'tds' => $tds, 'ot_inr_value' => $inr_value_val, 'ot_sgst' => $ot_sgst, 'ot_cgst' => $ot_cgst, 'ot_igst' => $ot_igst, 'ot_total_value' => $total_value_val, 'modified_at' => $created_at, 'note' => $note, 'remarks' => $remarks[$key], 'otc_remarks' => $otc_remarks ]; $condition = ['id' => $id[$key]]; $builder->where($condition)->update($data); } if ($this->db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made']); } } public function view_civil_work_order() { $session = session(); $admin_id = $session->get('admin_id'); if (!$admin_id) { return redirect()->to('/'); } $id = $this->request->getGet('id'); if (!$id) { return show_error('Invalid Work Order ID', 400); } $db = \Config\Database::connect(); $data['fetch_address'] = $db->table('gss_civil_wo') ->where('id', $id) ->get() ->getRow(); if (!$data['fetch_address']) { return show_error('Work Order Not Found', 404); } $data['fetch_details'] = $db->table('gss_civil_wo') ->where('vendor', $data['fetch_address']->vendor) ->where('mid', $data['fetch_address']->mid) ->where('po_no', $data['fetch_address']->po_no) ->get() ->getResult(); $data['key'] = 1; $data['civil_project'] = $db->table('gss_civil_project_master') ->where('project_name', $data['fetch_address']->project_name) ->get() ->getRow(); $data['wo_bill_details'] = $this->wo_bill_details($id); $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/view_civil_work_order', $data); } public function wo_bill_details($id) { $db = \Config\Database::connect(); return $db->table('gss_civil_wo') ->select('gss_civil_wo.*, gss_from_master_table.*') ->join('gss_from_master_table', 'gss_civil_wo.mid = gss_from_master_table.mid') ->where('gss_civil_wo.id', $id) ->where('gss_civil_wo.delete_status', 'ACTIVE') ->where('gss_from_master_table.delete_status', 'ACTIVE') ->get() ->getRow(); } public function civil_purchase_order_form() { $admin_id = session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/civil_purchase_order_form',$data); } else { redirect('/'); } } public function civil_purchase_order_generate_po() { $session = session(); $admin_id = $session->get('admin_id'); if (!$admin_id) { return redirect()->to('/'); } $gss_model = new Gss_model(); $ids = $this->request->getGet('id'); $explode_id = explode(",", $ids); $data['product_list'] = $gss_model->get_civil_products_list($explode_id); $data['owners'] = $gss_model->get_where_result1111('gss_civil_project_master'); $data['wo_no'] = $gss_model->get_civil_purchase_order(); // Fetch address from master table $data['mfrom_address'] = $gss_model->get_where_result1111('gss_from_master_table'); // Access control $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/civil_purchase_order_generate_po', $data); } public function civil_vendor_search_by_fetch() { $gss_model=new Gss_model(); $vendor_name = $this->request->getPost('id'); if (!empty($vendor_name)) { $result = $gss_model->get_whererow('gss_civil_vendor_details', ['delete_status' => 'ACTIVE'], $vendor_name); if ($result) { return $this->response->setJSON(['result' => 1, 'message' => $result]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No Details found']); } } } public function get_civil_po() { $session = session(); $admin_id = $session->get('admin_id'); $gss_model=new Gss_model(); if ($admin_id) { $year = $this->request->getPost('input_year'); $mid = $this->request->getPost('mid'); $table = 'gss_civil_po'; $where = ['mid' => $mid, 'delete_status' => 'ACTIVE', 'year' => $year]; $count = $gss_model->get_where_count($table, $where); if ($count > 0) { return $this->response->setJSON(['result' => 1, 'message' => ['count_no' => $count]]); } else { return $this->response->setJSON(['result' => 0]); } } else { return redirect()->to('/'); } } public function insert_civil_purchase_order() { $db = \Config\Database::connect(); $builder = $db->table('gss_civil_po'); $request = \Config\Services::request(); $session = session(); $mid = $request->getPost('mid'); $vendor_name = $request->getPost('vendor_name'); $g_date = $request->getPost('g_date'); $in_year = date('Y', strtotime($g_date)); $po_no = $request->getPost('po_no'); // $po = explode('00000', $po_no)[1]; $exp_po = explode('00000', $po_no); $po = isset($exp_po[1]) ? $exp_po[1] : $po_no; // print_r($po);die(); $currency = $request->getPost('currency'); $address = $request->getPost('address'); $contact_person = $request->getPost('contact_person'); $contact_number = $request->getPost('contact_number'); $email = $request->getPost('email'); $project_name = $request->getPost('project_name'); $comment = $request->getPost('comment'); $terms_payment = $request->getPost('terms_payment'); $bank_details = $request->getPost('bank_details'); $gst_no = $request->getPost('gst_no'); $discount = $request->getPost('discount'); $total_amt = $request->getPost('total_amt'); $grand_total = round($total_amt - ($total_amt * $discount / 100)); $created_at = date('Y-m-d H:i:s'); // Check if PO already exists $existingPo = $builder->where(['mid' => $mid, 'delete_status' => 'ACTIVE', 'po_no' => $po, 'year' => $in_year]) ->orderBy('id', 'DESC') ->get() ->getRowArray(); if ($existingPo) { return $this->response->setJSON(['result' => 0, 'message' => 'This PO number already exists']); } $insertData = []; foreach ($request->getPost('product_id') as $key => $product_id) { $insertData[] = [ 'mid' => $mid, 'po_no' => $po, 'vendor' => $vendor_name, 'project_name' => $project_name, 'date' => $g_date, 'year' => $in_year, 'currency' => $currency, 'vendor_address' => $address, 'contact_person' => $contact_person, 'contact_number' => $contact_number, 'email' => $email, 'product_id' => $product_id, 'product_name' => $request->getPost('p_name')[$key], 'remarks' => $request->getPost('remarks')[$key], 'quentity' => $request->getPost('quantityy')[$key], 'unit_price' => $request->getPost('unit')[$key], 'inr_value' => $request->getPost('inrvalue')[$key], 'sgst' => $request->getPost('sgst')[$key], 'cgst' => $request->getPost('cgst')[$key], 'igst' => $request->getPost('igst')[$key], 'total_value' => $request->getPost('totalvalue')[$key], 'total_amt' => $total_amt, 'discount' => $discount, 'grand_total' => $grand_total, 'delete_status' => 'ACTIVE', 'material_delivery' => $comment, 'bank_details' => $bank_details, 'terms_of_payment' => $terms_payment, 'gst_no' => $gst_no, 'created_at' => $created_at, 'modified_at' => $created_at, 'cancel_status' => 'CANCEL' ]; } $builder->insertBatch($insertData); return $this->response->setJSON(['result' => 1, 'message' => 'Added successfully']); } public function civil_work_order_form() { $admin_id = session()->get('admin_id'); if($admin_id) { $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/civil_work_order_form',$data); } else { redirect('/'); } } public function civil_work_order_generate_wo() { $session = session(); // Load session $admin_id = $session->get('admin_id'); $gss_model= new Gss_model(); if ($admin_id) { $ids = $this->request->getGet('id'); $array_ids = explode(',', $ids); $db = \Config\Database::connect(); $data['product_list']=$gss_model->get_civil_service_list($array_ids); $data['owners'] = $gss_model->get_where_result1111('gss_civil_project_master'); $data['wo_no']= $gss_model->get_civil_work_order(); // Fetch From Address (gss_from_master_table) $data['mfrom_address'] = $gss_model->get_where_result1111('gss_from_master_table'); // Fetch User Access Details $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/civil_work_order_generate_wo', $data); } else { return redirect()->to('/'); } } public function get_civil_wo() { $session = session(); $admin_id = $session->get('admin_id'); $gss_model = new Gss_model(); if ($admin_id) { $year = $this->request->getPost('input_year'); $mid = $this->request->getPost('mid'); $table = 'gss_civil_wo'; $where = ['mid' => $mid, 'delete_status' => 'ACTIVE', 'year' => $year]; $count = $gss_model->get_where_count($table, $where); if ($count > 0) { return $this->response->setJSON(['result' => 1, 'message' => ['count_no' => $count]]); } else { return $this->response->setJSON(['result' => 0]); } return $this->response->setJSON($response); } else { return redirect('/'); } } public function insert_civil_work_order() { $request = service('request'); $mid = $request->getPost('mid'); $vendor_name = $request->getPost('vendor_name'); $g_date = $request->getPost('g_date'); $exp = explode('-', $g_date); $in_year = $exp[2]; $wo_no = $request->getPost('po_no'); $exp_wo = explode('00000', $wo_no); $wo = $exp_wo[1]; $table = 'gss_civil_wo'; $where = ['mid' => $mid, 'delete_status' => 'ACTIVE', 'year' => $in_year, 'po_no' => $wo]; $order_by = 'id'; $db = db_connect(); $builder = $db->table($table); $get_po_no = $builder->where($where)->orderBy($order_by, 'DESC')->get()->getRow(); if ($get_po_no) { $get_year = $get_po_no->date; $get_po = $get_po_no->po_no; $year = date('Y', strtotime($get_year)); if ($year == $in_year && $wo == $get_po) { return $this->response->setJSON(['result' => 0, 'message' => 'This WO number already exists']); } } $product_id = $request->getPost('product_id'); $p_name = $request->getPost('p_name'); $remarks = $request->getPost('remarks'); $i_no = $request->getPost('i_no'); $purpose = $request->getPost('purpose'); $inrvalue = $request->getPost('inrvalue'); $totalvalue = $request->getPost('totalvalue'); $sgst = $request->getPost('sgst'); $cgst = $request->getPost('cgst'); $igst = $request->getPost('igst'); $total_amt = $request->getPost('total_amt'); $discount = $request->getPost('discount'); $g_total = $request->getPost('g_total'); $comment = $request->getPost('comment'); $bank_details = $request->getPost('bank_details'); $terms_payment = $request->getPost('terms_payment'); $gst_no = $request->getPost('gst_no'); $ot_charges = $request->getPost('ot_charges'); $tds = $request->getPost('tds'); $total_value_val = $request->getPost('total_value_val'); $otc_remarks = $request->getPost('otc_remarks'); $created_at = date('Y-m-d H:i:s'); foreach ($product_id as $key => $ids) { $data = [ 'mid' => $mid, 'po_no' => $wo, 'vendor' => $vendor_name, 'project_name' => $request->getPost('project_name'), 'date' => $g_date, 'year' => $in_year, 'currency' => $request->getPost('currency'), 'vendor_address' => $request->getPost('address'), 'contact_person' => $request->getPost('contact_person'), 'contact_number' => $request->getPost('contact_number'), 'email' => $request->getPost('email'), 'product_id' => $ids, 'product_name' => $p_name[$key], 'remarks' => $remarks[$key], 'indent' => $i_no[$key], 'purpose_no' => $purpose[$key], 'inr_value' => $inrvalue[$key], 'sgst' => $sgst[$key], 'cgst' => $cgst[$key], 'igst' => $igst[$key], 'total_value' => $totalvalue[$key], 'total_amt' => $total_amt, 'discount' => $discount, 'grand_total' => $g_total, 'delete_status' => 'ACTIVE', 'material_delivery' => $comment, 'bank_details' => $bank_details, 'terms_of_payment' => $terms_payment, 'gst_no' => $gst_no, 'ot_charges' => $ot_charges, 'tds' => $tds, 'ot_total_value' => $total_value_val, 'otc_remarks' => $otc_remarks, 'created_at' => $created_at, 'modified_at' => $created_at, 'note' => $request->getPost('note'), 'cancel_status' => 'CANCEL' ]; $result = $builder->insert($data); } if ($result) { return $this->response->setJSON(['result' => 1, 'message' => 'Added successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Not Added']); } } public function civil_wo_send_mail() { $table = 'gss_civil_wo'; $id = $this->request->getPost('id'); $where = ['id' => $id]; $gssModel = new Gss_model(); // Adjust namespace if different $result = $gssModel->get_mail($table, $where); $email = $result[0]["email"]; $details = $gssModel->civil_wo_send_mail($table, $where); foreach ($details as $det) { $po_no = $det['po_no']; } $data['details'] = $gssModel->civil_wo_send_mail($table, $where); $where1 = ['po_no' => $po_no]; $data['fetch_details'] = $gssModel->fetch_where_subgrid_data1($table, $where1); $body = view('email/view_civil_work_order', $data, ['saveData' => true]); $session = \Config\Services::session(); $admin_id = $session->get('admin_id'); $login_table = 'gss_login'; $where_login = ['user_id' => $admin_id]; $get_sign = $gssModel->get_where_row($login_table, $where_login); $cc = $get_sign->email; // Email configuration and sending $emailService = \Config\Services::email(); $config = [ 'protocol' => 'smtp', 'SMTPHost' => 'ssl://smtp.googlemail.com', 'SMTPPort' => 465, 'SMTPUser' => 'gssorganised@gmail.com', 'SMTPPass' => 'GSSKarthi@1236#', 'mailType' => 'html', 'charset' => 'utf-8', 'newline' => "\r\n", ]; $emailService->initialize($config); $emailService->setFrom('info@jayblues.org', 'GSS'); $emailService->setTo($email); $emailService->setCC($cc); $emailService->setSubject('Civil Work Order From'); $emailService->setMessage($body); $emailService->send(); } public function send_mail() { $table = 'gss_po_generate'; $id = $this->request->getPost('id'); $where = ['id' => $id]; $gssModel = new \App\Models\Gss_model(); // Load model $result = $gssModel->get_mail($table, $where); $email = $result["0"]["email"]; $details = $gssModel->get_mails($table, $where); foreach ($details as $det) { $po_no = $det['po_no']; } $data['details'] = $details; $where1 = ['po_no' => $det['po_no']]; $data['fetch_details'] = $gssModel->fetch_where_subgrid_data1($table, $where1); $session = session(); $admin_id = $session->get('admin_id'); $login_table = 'gss_login'; $where_login = ['user_id' => $admin_id]; $get_sign = $gssModel->get_where_row($login_table, $where_login); $cc = $get_sign->email; $body = view('email/view_purchase_order_po', $data); $emailConfig = [ 'protocol' => 'smtp', 'SMTPHost' => 'ssl://smtp.googlemail.com', 'SMTPPort' => 465, 'SMTPUser' => 'gssorganised@gmail.com', 'SMTPPass' => 'GSSKarthi@1236#', 'mailType' => 'html', 'charset' => 'utf-8', 'newline' => "\r\n" ]; $emailService = \Config\Services::email(); $emailService->initialize($emailConfig); $emailService->setFrom('info@jayblues.org', 'GSS'); $emailService->setTo($email); $emailService->setCC($cc); $emailService->setSubject('Purchase Order From'); $emailService->setMessage($body); $emailService->send(); } public function auto_complete_civil_vendor_name() { $gssModel = new \App\Models\Gss_model(); $keyword = $this->request->getGet('term'); $data1 = $gssModel->get_civil_vendors($keyword); $data = []; foreach ($data1 as $row) { $data[] = $row->vendor_name; } return $this->response->setJSON($data); } public function edit_purchase_order_po() { $session = session(); $admin_id = $session->get('admin_id'); if ($admin_id) { $id = $this->request->getGet('id'); $db = \Config\Database::connect(); // Get PO details $po_details = $db->table('gss_po_generate') ->where('id', $id) ->get() ->getRow(); if (!$po_details) { return redirect()->to('/')->with('error', 'Purchase order not found'); } // Fetch subgrid data based on po_no $fetch_details = $db->table('gss_po_generate') ->where('po_no', $po_details->po_no) ->get() ->getResult(); // Get owners from gss_project_master $owners = $db->table('gss_project_master') ->get() ->getResult(); // Assume these are custom helper methods or traits $user_type_id = $this->access_id(); $access = $this->access_details(); // Pass data to the view return view('admin/edit_purchase_order_po', [ 'po_details' => $po_details, 'fetch_details' => $fetch_details, 'key' => 1, 'owners' => $owners, 'user_type_id' => $user_type_id, 'access' => $access ]); } else { return redirect()->to('/'); } } public function update_work_po_data() { $request = $this->request; $db = \Config\Database::connect(); $ids = $request->getPost('edit_id'); $product_ids = $request->getPost('product_id'); // Common fields $bank_details = $request->getPost('bank_details'); $vendor_name = $request->getPost('vendor_name'); $g_date = $request->getPost('g_date'); $po_no = $request->getPost('po_no'); $currency = $request->getPost('currency'); $address = $request->getPost('address'); $contact_person = $request->getPost('contact_person'); $contact_number = $request->getPost('contact_number'); $email = $request->getPost('email'); $total_amt = $request->getPost('total_amt'); $discount = $request->getPost('discount'); $g_total = $request->getPost('g_total'); $comment = $request->getPost('comment'); $gst_no = $request->getPost('gst_no'); $terms_payment = $request->getPost('terms_payment'); $note = $request->getPost('note'); // Other array-based fields $p_name = $request->getPost('p_name'); $description = $request->getPost('description'); $i_no = $request->getPost('i_no'); $cgst = $request->getPost('cgst'); $sgst = $request->getPost('sgst'); $igst = $request->getPost('igst'); $project_name = $request->getPost('project_name'); $purpose = $request->getPost('purpose'); $quantityy = $request->getPost('quantityy'); $unit = $request->getPost('unit'); $inrvalue = $request->getPost('inrvalue'); $totalvalue = $request->getPost('totalvalue'); $ot_charges = $request->getPost('ot_charges'); $quantity_val = $request->getPost('quantity_val'); $unit1 = $request->getPost('unit1'); $inr_value_val = $request->getPost('inr_value_val'); $ot_sgst = $request->getPost('ot_sgst'); $ot_cgst = $request->getPost('ot_cgst'); $ot_igst = $request->getPost('ot_igst'); $total_value_val = $request->getPost('total_value_val'); $created_at = (new \DateTime('now', new \DateTimeZone('Asia/Kolkata')))->format('Y-m-d H:i:s'); $result = false; foreach ($product_ids as $key => $product_id) { $data = [ 'po_no' => $po_no, 'vendor' => $vendor_name, 'date' => $g_date, 'currency' => $currency, 'vendor_address' => $address, 'contact_person' => $contact_person, 'contact_number' => $contact_number, 'email' => $email, 'product_id' => $product_id, 'product_name' => $p_name[$key], 'description' => $description[$key], 'indent' => $i_no[$key], 'project_name' => $project_name[$key], 'purpose_no' => $purpose[$key], 'quentity' => $quantityy[$key], 'unit_price' => $unit[$key], 'inr_value' => $inrvalue[$key], 'sgst' => $sgst[$key], 'cgst' => $cgst[$key], 'igst' => $igst[$key], 'total_value' => $totalvalue[$key], 'total_amt' => $total_amt, 'discount' => $discount, 'grand_total' => $g_total, 'delete_status' => 'ACTIVE', 'material_delivery' => $comment, 'bank_details' => $bank_details, 'terms_of_payment' => $terms_payment, 'gst_no' => $gst_no, 'ot_charges' => $ot_charges, 'ot_unit' => $unit1, 'ot_quantity' => $quantity_val, 'ot_inr_value' => $inr_value_val, 'ot_sgst' => $ot_sgst, 'ot_cgst' => $ot_cgst, 'ot_igst' => $ot_igst, 'ot_total_value' => $total_value_val, 'modified_at' => $created_at, 'note' => $note, ]; $result = $db->table('gss_po_generate') ->where('id', $ids[$key]) ->update($data); } if ($result) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Not Updated']); } } public function view_purchase_order_po() { $session = session(); $admin_id = $session->get('admin_id'); if ($admin_id) { $request = \Config\Services::request(); $id = $request->getGet('id'); if (!is_numeric($id)) { throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); } $table = 'gss_po_generate'; $model = new \App\Models\Gss_model(); // adjust namespace if different $where = ['delete_status' => 'ACTIVE', 'id' => $id]; $data['fetch_address'] = $model->get_where_row($table, $where); if (!$data['fetch_address']) { throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); } $where1 = ['po_no' => $data['fetch_address']->po_no]; $data['fetch_details'] = $model->fetch_where_subgrid_data1($table, $where1); $data['key'] = 1; $data['user_type_id'] = $this->access_id(); // ensure this method is defined $data['access'] = $this->access_details(); // ensure this method is defined return view('admin/view_purchase_order_po', $data); } else { return redirect()->to(base_url('/')); } } public function po_subgrid() { $gss_model = new Gss_model(); $id = $this->request->getGet('id'); $table='gss_po_generate'; $where = ['id'=>$id]; $getalldatas = $gss_model->get_where_row($table,$where); $po=$getalldatas->po_no; $where1 = ['po_no'=>$po]; $getalldata = $gss_model->fetch_where_subgrid_data1($table,$where1); return $this->response->setJSON($getalldata); } }?>