load->helper('hubtel_sms/hubtel_sms'); $this->load->model('hubtel_sms_model'); $this->load->library('hubtel_sms/hubtel_api'); } public function index() { if (!has_permission('hubtel_sms', '', 'view')) { access_denied('Hubtel SMS'); } if (!is_hubtel_sms_enabled()) { set_alert('warning', _l('hubtel_sms_module_disabled')); redirect(admin_url()); } $data['title'] = _l('hubtel_sms'); // Get statistics $data['total_messages'] = $this->hubtel_sms_model->get_total_messages(); $data['sent_messages'] = $this->hubtel_sms_model->get_total_messages('sent'); $data['failed_messages'] = $this->hubtel_sms_model->get_total_messages('failed'); $data['total_cost'] = $this->hubtel_sms_model->get_total_cost(); // Get messages and templates $data['messages'] = $this->hubtel_sms_model->get_messages(); $data['templates'] = $this->hubtel_sms_model->get_templates(); // Load client groups for bulk SMS $this->load->model('client_groups_model'); $data['client_groups'] = $this->client_groups_model->get_groups(); $this->load->view('hubtel_sms/manage', $data); } public function send_sms() { if (!has_permission('hubtel_sms', '', 'create')) { access_denied('Send SMS'); } if ($this->input->post()) { $response = $this->hubtel_sms_model->send_sms( $this->input->post('to'), $this->input->post('message'), $this->input->post('template_id') ); if ($response['success']) { set_alert('success', _l('sms_sent_successfully')); } else { set_alert('danger', $response['message']); } } redirect(admin_url('hubtel_sms')); } public function send_bulk_sms() { if (!has_permission('hubtel_sms', '', 'create')) { access_denied('Send Bulk SMS'); } if ($this->input->post()) { $client_groups = $this->input->post('client_groups'); $message = $this->input->post('message'); $template_id = $this->input->post('template_id'); $success = 0; $failed = 0; $total_recipients = 0; if (!empty($client_groups)) { $this->load->model('clients_model'); foreach ($client_groups as $group_id) { $clients = $this->clients_model->get_clients_by_group($group_id); foreach ($clients as $client) { if (!empty($client['phonenumber'])) { $total_recipients++; $response = $this->hubtel_sms_model->send_sms( $client['phonenumber'], $message, $template_id ); if ($response['success']) { $success++; } else { $failed++; } } } } } set_alert('info', sprintf( _l('bulk_sms_sent_info'), $total_recipients, $success, $failed )); } redirect(admin_url('hubtel_sms')); } public function view_message($id) { if (!has_permission('hubtel_sms', '', 'view')) { access_denied('View Message'); } $message = $this->hubtel_sms_model->get_messages($id); $logs = $this->hubtel_sms_model->get_message_logs($message->message_id); echo $this->load->view('hubtel_sms/message_details', [ 'message' => $message, 'logs' => $logs ], true); } public function preview_template($id) { if (!has_permission('hubtel_sms', '', 'view')) { access_denied('Preview Template'); } $template = $this->hubtel_sms_model->get_template($id); echo $this->load->view('hubtel_sms/template_preview', [ 'template' => $template ], true); } public function get_template($id) { if (!has_permission('hubtel_sms', '', 'view')) { access_denied('Get Template'); } $template = $this->hubtel_sms_model->get_template($id); if ($template) { echo json_encode([ 'success' => true, 'template' => $template ]); } else { echo json_encode([ 'success' => false, 'message' => _l('template_not_found') ]); } } public function resend($id) { if (!has_permission('hubtel_sms', '', 'create')) { access_denied('Resend SMS'); } $message = $this->hubtel_sms_model->get_messages($id); if ($message) { $response = $this->hubtel_sms_model->send_sms( $message->to, $message->message ); echo json_encode($response); } else { echo json_encode([ 'success' => false, 'message' => _l('message_not_found') ]); } } public function get_recipients_preview() { if (!has_permission('hubtel_sms', '', 'view')) { access_denied('Get Recipients Preview'); } $groups = $this->input->get('groups'); $recipients = []; if (!empty($groups)) { $this->load->model('clients_model'); foreach ($groups as $group_id) { $clients = $this->clients_model->get_clients_by_group($group_id); $group_name = $this->client_groups_model->get_group($group_id)->name; foreach ($clients as $client) { if (!empty($client['phonenumber'])) { $recipients[] = [ 'company' => $client['company'], 'phonenumber' => $client['phonenumber'], 'group_name' => $group_name ]; } } } } echo json_encode([ 'success' => true, 'html' => $this->load->view('hubtel_sms/recipients_preview', [ 'recipients' => $recipients ], true), 'count' => count($recipients) ]); } }