141 lines
6.1 KiB
PHP
141 lines
6.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use DB;
|
|
use \stdClass;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Exports\InvoicesExport;
|
|
|
|
class ComcampaignController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
$this->_service = 'communication';
|
|
$this->_module = 'comcampaign';
|
|
$this->_viewname = 'comcampaign';
|
|
$this->_title = 'Campaign';
|
|
$this->_base_url = '/comcampaign';
|
|
}
|
|
|
|
protected function get_list_fields()
|
|
{
|
|
return [
|
|
'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete', 'messages' => ['icon' => 'chart-box', 'querystring' => 'id={ID}']]],
|
|
'name' => ['title' => 'Name', 'type' => 'text'],
|
|
'type' => ['title' => 'Type', 'type' => 'text'],
|
|
'message_count' => ['title' => 'Message Count', 'type' => 'text'],
|
|
'message_sent' => ['title' => 'Message Sent', 'type' => 'text'],
|
|
'message_read' => ['title' => 'Message Read', 'type' => 'text'],
|
|
'status' => ['title' => 'Status', 'type' => 'select']
|
|
];
|
|
}
|
|
|
|
protected function get_form_fields($type, $values)
|
|
{
|
|
$teams = $this->getlambda('get', 'communication', 'template', 'dropdown');
|
|
// echo '<pre>'; print_r($teams); exit;
|
|
$templates = [];
|
|
foreach ($teams->data->items as $team) {
|
|
$templates[$team->template_code] = $team->name;
|
|
}
|
|
|
|
$chans = $this->getlambda('get', 'communication', 'channel', 'dropdown');
|
|
// echo '<pre>'; print_r($teams); exit;
|
|
$channels = [];
|
|
foreach ($chans->data->items as $chan) {
|
|
$channels[$chan->id] = $chan->name;
|
|
}
|
|
|
|
$conlists = $this->getlambda('get', 'contact', 'contact_list', 'dropdown');
|
|
$contactlists = [];
|
|
foreach ($conlists->data->items as $conlist) {
|
|
$contactlists[$conlist->id] = $conlist->name;
|
|
}
|
|
|
|
$metrics = $this->getlambda('get', 'metric', 'metric', 'get_all');
|
|
$metric_dd = [];
|
|
foreach($metrics->data->items as $metric){
|
|
$metric_dd[$metric->id] = $metric->name;
|
|
}
|
|
|
|
return [
|
|
'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
|
|
'template_code' => ['title' => 'Template', 'type' => 'select', 'values' => $templates, 'required' => true],
|
|
'channel' => ['title' => 'Channel', 'type' => 'select', 'values' => $channels, 'required' => true],
|
|
'contacts' => ['title' => 'Contact Lists', 'type' => 'multiselect', 'values' => $contactlists, 'required' => true],
|
|
'type' => ['title' => 'Type', 'type' => 'select', 'required' => true, 'values' => ['whatsapp' => 'Whatsapp', 'sms' => 'SMS', 'email' => 'Email']],
|
|
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
|
|
|
|
'is_scheduled' => ['title' => 'Is Scheduled', 'type' => 'yesno', 'required' => true],
|
|
'scheduled_time' => ['title' => 'Schedule date & time', 'type' => 'datetime', 'required' => true,],
|
|
|
|
'sent_metric' => ['title' => 'Sent Metric', 'type' => 'select', 'values' => $metric_dd, 'required' => true],
|
|
'read_metric' => ['title' => 'Read Metric', 'type' => 'select', 'values' => $metric_dd, 'required' => true],
|
|
|
|
'followup_message' => ['title' => 'Follow Up Message', 'type' => 'textarea'],
|
|
];
|
|
}
|
|
|
|
protected function _beforesave($type, $request)
|
|
{
|
|
$data = $request->except('_token');
|
|
if ($request->file('image')) {
|
|
$data['image'] = $this->_uploadMedia($request, 'image', 'template');
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
public function messages($request) {
|
|
$id = $request->input('id');
|
|
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all_messages', ['id' => $id]);
|
|
|
|
return $this->view('list')->with([
|
|
'title' => 'Messages',
|
|
'fields' => [
|
|
'name' => ['title' => 'Name', 'type' => 'text'],
|
|
'phone' => ['title' => 'Phone', 'type' => 'text'],
|
|
'email' => ['title' => 'Email', 'type' => 'text'],
|
|
|
|
'type' => ['title' => 'Type', 'type' => 'text'],
|
|
'is_sent' => ['title' => 'Is Sent', 'type' => 'text'],
|
|
'sent_time' => ['title' => 'Sent Time', 'type' => 'datetime'],
|
|
'is_read' => ['title' => 'Is Read', 'type' => 'text'],
|
|
'read_time' => ['title' => 'Read Time', 'type' => 'datetime'],
|
|
],
|
|
'base_url' => $this->_base_url,
|
|
'items' => $response->data->messages,
|
|
'buttons' => [['title' => 'Export Excel', 'link' => $this->_base_url . '/exportmessages?id='.$id]]
|
|
]);
|
|
|
|
|
|
//echo '<pre>'; print_r($response); exit;
|
|
|
|
//echo '<pre>'; print_r($response); exit;
|
|
}
|
|
|
|
public function exportmessages($request) {
|
|
$id = $request->input('id');
|
|
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all_messages', ['id' => $id]);
|
|
|
|
$headers = ['Name', 'Phone', 'Email', 'Type', 'Is Sent', 'Sent Time', 'Is Read', 'Read Time'];
|
|
$exceldata[] = $headers;
|
|
foreach($response->data->messages as $message) {
|
|
$row = [];
|
|
$row[] = isset($message->name) ? $message->name : '-';
|
|
$row[] = isset($message->phone) ? $message->phone : '-';
|
|
$row[] = isset($message->email) ? $message->email : '-';
|
|
$row[] = isset($message->type) ? $message->type : '-';
|
|
$row[] = isset($message->is_sent) ? $message->is_sent : '-';
|
|
$row[] = isset($message->sent_time) ? $message->sent_time : '-';
|
|
$row[] = isset($message->is_read) ? $message->is_read : '-';
|
|
$row[] = isset($message->read_time) ? $message->read_time : '-';
|
|
$exceldata[] = $row;
|
|
}
|
|
return Excel::download(new InvoicesExport($exceldata), 'message.xlsx');
|
|
}
|
|
}
|