hubtel_sms/controllers/Hubtel_sms.php
2025-01-13 19:14:18 +00:00

221 lines
6.7 KiB
PHP

<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Hubtel_sms extends AdminController
{
public function __construct()
{
parent::__construct();
$this->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)
]);
}
}