diff --git a/app/Http/Controllers/BannerController.php b/app/Http/Controllers/BannerController.php index 5f70a79f..48a1e0c3 100644 --- a/app/Http/Controllers/BannerController.php +++ b/app/Http/Controllers/BannerController.php @@ -45,9 +45,9 @@ class BannerController extends Controller protected function _beforesave($type, $request) { $data = $request->except('_token'); - if($type == 'edit') { - $values->channels = explode('#', $values->channels); - } + // if($type == 'edit') { + // $values->channels = explode('#', $values->channels); + // } if( $request->file('media_url') ) { $data['media_url'] = $this->_uploadMedia($request, 'media_url', 'banners'); } diff --git a/app/Http/Controllers/ComcampaignController.php b/app/Http/Controllers/ComcampaignController.php new file mode 100644 index 00000000..ca53ccf0 --- /dev/null +++ b/app/Http/Controllers/ComcampaignController.php @@ -0,0 +1,139 @@ +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 '
'; 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 ''; print_r($teams); exit;
+ $channels = [];
+ foreach ($chans->data->items as $chan) {
+ $channels[$chan->id] = $chan->name;
+ }
+
+ $conlists = $this->getlambda('get', 'ums', '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],
+
+ ];
+ }
+
+ 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 ''; print_r($response); exit;
+
+ //echo ''; 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');
+ }
+}
diff --git a/app/Http/Controllers/CommbotController.php b/app/Http/Controllers/CommbotController.php
new file mode 100644
index 00000000..bb486adf
--- /dev/null
+++ b/app/Http/Controllers/CommbotController.php
@@ -0,0 +1,117 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'comm_bot';
+ $this->_viewname = 'commbot';
+ $this->_title = 'Communication Bot';
+ $this->_base_url = '/commbot';
+ }
+
+ protected function get_list_fields()
+ {
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete', 'messages' => ['icon' => 'message-text-outline', 'querystring' => 'id={ID}'], 'intents' => ['icon' => 'family-tree', 'querystring' => 'id={ID}'] ]],
+ 'name' => ['title' => 'Channel Name', 'type' => 'text'],
+ 'type' => ['title' => 'Type', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select'],
+ ];
+ }
+
+ protected function get_form_fields($type, $values)
+ {
+ return [
+ 'name' => ['title' => 'Bot Name', 'type' => 'text', 'required' => true],
+ 'type' => ['title' => 'Bot Type', 'type' => 'select', 'required' => true, 'values' => ['whatsapp' => 'Whatsapp', 'sms' => 'SMS']],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+ ];
+ }
+
+ public function messages(Request $request) {
+ $entity_id = $request->input('id', 0);
+ if($entity_id === 0) {
+ return redirect('/commbots')->withError('Bot not found!');
+ } else {
+ $request->session()->put('entity_id', $entity_id);
+ return redirect('/commbotmessages');
+ }
+ }
+
+ public function intents(Request $request) {
+ $entity_id = $request->input('id', 0);
+ if($entity_id === 0) {
+ return redirect('/commbots')->withError('Bot not found!');
+ } else {
+ $request->session()->put('entity_id', $entity_id);
+ return redirect('/commbotintents');
+ }
+ }
+
+ // public function form($type, $id = null) {
+ // $values = [];
+ // $items = [];
+ // if($type == 'edit') {
+ // $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_one', ['id' => $id]);
+ // $values = $response->data->item;
+
+ // $response = LambdaRequest::signedrequest('get', $this->_service, 'comm_bot_intent/get_all');
+ // $items = [];
+ // foreach($response->data->items as $item) {
+ // $items[$item->parent_id][] = $item;
+ // }
+ // //echo ''; print_r($items); exit;
+ // }
+ // $data = $this->_beforeform($type, $values);
+ // $fields = $this->get_form_fields($type, $values);
+
+ // return $this->view('form')->with([
+ // 'title' => $this->_title,
+ // 'mode' => $type,
+ // 'fields' => $fields,
+ // 'base_url' => $this->_base_url,
+ // 'item' => $values,
+ // 'items' => $items
+ // ]);
+ // }
+
+ public function postaddchild(Request $request) {
+ $post = $request->input();
+ if($post['id'] != '') {
+ $url = '/update';
+ } else {
+ $url = '/create';
+ }
+ $buttons = [];
+ foreach($post['button-id'] as $k => $v) {
+ if(isset($v) && $v != '') {
+ $buttons[] = ['id' => $v, 'title' => $post['button-title'][$k] ];
+ }
+ }
+ $post['buttons'] = $buttons;
+ unset($post['button-id']);
+ unset($post['button-title']);
+ if(!isset($post['id']) || $post['id'] == '') unset($post['id']);
+ //echo ''; print_r($post); exit;
+
+ $response = LambdaRequest::signedrequest('post', $this->_service, 'comm_bot_intent'.$url, $post);
+ //echo ''; print_r($response); exit;
+ if($response->statusCode == 200 && $response->status == "success") {
+ return redirect($this->_base_url.'/edit?id='.$post['bot_id'])->withMessage('Successfully Saved !!!');
+ } else {
+ return redirect($this->_base_url.'/edit?id='.$post['bot_id'])->withError('Some Error occured! '. $response->body->message);
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/CommbotintentController.php b/app/Http/Controllers/CommbotintentController.php
new file mode 100644
index 00000000..383c222d
--- /dev/null
+++ b/app/Http/Controllers/CommbotintentController.php
@@ -0,0 +1,101 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'comm_bot_intent';
+ $this->_viewname = 'commbotintent';
+ $this->_title = 'Bot Intents';
+ $this->_base_url = '/commbotintent';
+ }
+
+ public function list(Request $request) {
+ $entity_id = $request->session()->get('entity_id');
+ if($entity_id === 0) {
+ return redirect('/commbots')->withError('Bot not found!');
+ }
+ $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['entity_id' => $entity_id]);
+ $items = [];
+ foreach($response->data->items as $item) {
+ $items[$item->parent_id][] = $item;
+ }
+ $messs = $this->getlambda('get', $this->_service, 'comm_bot_message', 'dropdown');
+ $fields = $this->get_list_fields();
+ return $this->view('list')->with([
+ 'title' => $this->_title,
+ 'fields' => $fields,
+ 'base_url' => $this->_base_url,
+ 'items' => $items,
+ 'buttons' => $this->get_list_buttons(),
+ 'bot_id' => $entity_id,
+ 'messages' => $messs->data->items
+ ]);
+ }
+
+ protected function get_list_buttons() {
+ return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Back to Bots', 'link' => '/commbots'] ];
+ }
+
+ protected function get_list_fields(){
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+ //'media_thumb' => ['title' => 'Media Thumb', 'type' => 'image'],
+ 'name' => ['title' => 'Name', 'type' => 'text'],
+ 'type' => ['title' => 'Type', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select'],
+ ];
+ }
+
+ protected function get_form_fields($type, $values){
+ $groups = $this->getlambda('get', 'ums', 'group', 'dropdown');
+ $groups_dd = [];
+ foreach($groups->data->items as $group){
+ $groups_dd[$group->id] = $group->name;
+ }
+ return [
+ 'name' => ['title' => 'Title', 'type' => 'text', 'required' => true],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+ 'type' => ['title' => 'Type', 'type' => 'select', 'required' => true, 'values' => ['text' => 'Text', 'image' => 'Image', 'date' => 'Date', 'template' => 'Template', 'interactive' => 'Interactive'] ],
+
+
+ 'header_type' => ['title' => 'Header Type', 'type' => 'select', 'required' => true, 'values' => ['none' => 'None', 'text' => 'Text', 'video' => 'Video', 'image' => 'Image', 'document' => 'Document'] ],
+ 'header_text' => ['title' => 'Header Text (if header type is text)', 'type' => 'text'],
+ 'header_media' => ['title' => 'Header Media (video, image or document)', 'type' => 'file'],
+
+ 'body_text' => ['title' => 'Body Text', 'type' => 'textarea', 'required' => true, 'fullwidth' => true ],
+ 'footer_text' => ['title' => 'Footer Text', 'type' => 'text', 'fullwidth' => true ],
+
+ 'interactive_type' => ['title' => 'Interactive Type', 'type' => 'select', 'required' => true, 'values' => ['button' => 'Button', 'list' => 'List'] ],
+
+ 'buttons' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true ],
+ ];
+ }
+
+ public function postaddchild(Request $request) {
+ $post = $request->input();
+ if($post['id'] != '') {
+ $url = '/update';
+ } else {
+ $url = '/create';
+ }
+ if(!isset($post['id']) || $post['id'] == '') unset($post['id']);
+ //echo ''; print_r($post); exit;
+
+ $response = LambdaRequest::signedrequest('post', $this->_service, 'comm_bot_intent'.$url, $post);
+ //echo ''; print_r($response); exit;
+ if($response->statusCode == 200 && $response->status == "success") {
+ return redirect($this->_base_url.'s')->withMessage('Successfully Saved !!!');
+ } else {
+ return redirect($this->_base_url.'s')->withError('Some Error occured! '. $response->body->message);
+ }
+ }
+
+}
diff --git a/app/Http/Controllers/CommbotmessageController.php b/app/Http/Controllers/CommbotmessageController.php
new file mode 100644
index 00000000..e4cc1483
--- /dev/null
+++ b/app/Http/Controllers/CommbotmessageController.php
@@ -0,0 +1,112 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'comm_bot_message';
+ $this->_viewname = 'commbotmessage';
+ $this->_title = 'Bot Messages';
+ $this->_base_url = '/commbotmessage';
+ }
+
+ public function list(Request $request) {
+ $entity_id = $request->session()->get('entity_id');
+ if($entity_id === 0) {
+ return redirect('/commbots')->withError('Bot not found!');
+ }
+ $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['entity_id' => $entity_id]);
+ //echo ''; print_r($response); exit;
+ $fields = $this->get_list_fields();
+ return $this->view('list')->with([
+ 'title' => $this->_title,
+ 'fields' => $fields,
+ 'base_url' => $this->_base_url,
+ 'items' => $response->data->items,
+ 'buttons' => $this->get_list_buttons()
+ ]);
+ }
+
+ protected function get_list_buttons() {
+ return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Back to Bots', 'link' => '/commbots'] ];
+ }
+
+ protected function get_list_fields(){
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+ //'media_thumb' => ['title' => 'Media Thumb', 'type' => 'image'],
+ 'name' => ['title' => 'Name', 'type' => 'text'],
+ 'type' => ['title' => 'Type', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select'],
+ ];
+ }
+
+ protected function get_form_fields($type, $values){
+ $groups = $this->getlambda('get', 'ums', 'group', 'dropdown');
+ $groups_dd = [];
+ foreach($groups->data->items as $group){
+ $groups_dd[$group->id] = $group->name;
+ }
+ return [
+ 'name' => ['title' => 'Title', 'type' => 'text', 'required' => true],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+ 'type' => ['title' => 'Type', 'type' => 'select', 'required' => true, 'values' => ['text' => 'Text', 'image' => 'Image', 'document' => 'Document', 'template' => 'Template', 'interactive' => 'Interactive'] ],
+
+
+ 'header_type' => ['title' => 'Header Type', 'type' => 'select', 'required' => true, 'values' => ['none' => 'None', 'text' => 'Text', 'video' => 'Video', 'image' => 'Image', 'document' => 'Document'] ],
+ 'header_text' => ['title' => 'Header Text (if header type is text)', 'type' => 'text'],
+ 'header_media' => ['title' => 'Header Media (video, image or document)', 'type' => 'file'],
+
+ 'body_text' => ['title' => 'Body Text', 'type' => 'textarea', 'required' => true, 'fullwidth' => true ],
+ 'footer_text' => ['title' => 'Footer Text', 'type' => 'text', 'fullwidth' => true ],
+
+ 'interactive_type' => ['title' => 'Interactive Type (only 3 buttons are allowed, select list for more than 3)', 'type' => 'select', 'values' => ['button' => 'Button', 'list' => 'List'] ],
+
+ 'buttons' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true ],
+ ];
+ }
+
+ protected function _beforesave($type, $request) {
+ $data = $request->except('_token');
+ $data['bot_id'] = $request->session()->get('entity_id');
+ $buttons = [];
+ foreach($data as $k => $v) {
+ if(!isset($v)) {
+ unset($data[$k]);
+ }
+ }
+ if( $request->file('header_media') ) {
+ $data['header_media'] = $this->_uploadMedia($request, 'header_media', 'messages');
+ }
+ if($data['header_type'] == 'text') {
+ $data['header'] = ['type' => 'text', 'text' => $data['header_text'] ];
+ } elseif($data['header_type'] != 'none' && $data['header_type'] != 'text') {
+ $data['header'] = ['type' => $data['header_type'], $data['header_type'] => $data['header_media'] ];
+ }
+ unset($data['header_type']);
+ unset($data['header_text']);
+ unset($data['header_media']);
+
+ //echo ''; print_r($data); exit;
+ if($data['type'] == 'interactive') {
+ foreach($data['button']['type'] as $i => $type) {
+ $buttons[] = ['type' => $type, 'id' => $data['button']['id'][$i], 'title' => $data['button']['title'][$i], 'description' => $data['button']['description'][$i] ];
+ }
+ }
+ $data['buttons'] = $buttons;
+ return $data;
+ }
+
+ protected function _beforeform($type, $values) {
+ //echo ''; print_r($values); exit;
+ return $values;
+ }
+
+}
diff --git a/app/Http/Controllers/CommchannelController.php b/app/Http/Controllers/CommchannelController.php
new file mode 100644
index 00000000..8c390227
--- /dev/null
+++ b/app/Http/Controllers/CommchannelController.php
@@ -0,0 +1,117 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'channel';
+ $this->_viewname = 'commchannel';
+ $this->_title = 'Communication Channels';
+ $this->_base_url = '/communicationchannel';
+ }
+
+ protected function get_list_fields()
+ {
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
+ 'name' => ['title' => 'Channel Name', 'type' => 'text'],
+ 'type' => ['title' => 'Type', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select'],
+ ];
+ }
+
+ protected function get_form_fields($type, $values)
+ {
+ $bots = $this->getlambda('get', 'communication', 'comm_bot', 'dropdown');
+ $bots_dd = [];
+ foreach ($bots->data->items as $bot) {
+ $bots_dd[$bot->id] = $bot->name;
+ }
+
+ return [
+ 'name' => ['title' => 'Channel Name', 'type' => 'text', 'required' => true],
+ 'number' => ['title' => 'Sender Number', 'type' => 'text', 'required' => true],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+ 'type' => ['title' => 'Channel Type', 'type' => 'select', 'required' => true, 'values' => ['whatsapp' => 'Whatsapp', 'email' => 'Email', 'sms' => 'SMS']],
+ 'bot_id' => ['title' => 'Attached Bot', 'type' => 'select', 'values' => $bots_dd],
+
+ 'credentials' => ['title' => 'Credentials', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
+ //'api_secret' => ['title' => 'API Secret', 'type' => 'text', 'required' => true],
+
+ 'minute' => ['title' => 'Limits in Minutes', 'type' => 'number', 'required' => false],
+ 'hour' => ['title' => 'Limits in Hours', 'type' => 'number', 'required' => false],
+ 'day' => ['title' => 'Limits in Days', 'type' => 'number', 'required' => false],
+ 'week' => ['title' => 'Limits in Weeks', 'type' => 'number', 'required' => false],
+ 'month' => ['title' => 'Limits in Months', 'type' => 'number', 'required' => false],
+ ];
+ }
+
+ // public function form($type, $id = null)
+ // {
+ // $values = [];
+ // if ($type == 'edit') {
+ // $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_one', ['id' => $id]);
+ // // echo ''; print_r($response); exit;
+ // $values = $response->data->item;
+ // }
+ // $data = $this->_beforeform($type, $values);
+ // $fields = $this->get_form_fields($type, $values);
+ // echo ''; print_r($data); exit;
+ // return $this->view('form')->with([
+ // 'title' => $this->_title,
+ // 'mode' => $type,
+ // 'fields' => $fields,
+ // 'base_url' => $this->_base_url,
+ // 'item' => $values,
+ // ]);
+ // }
+
+ protected function _beforeform($type, $values) {
+ if($type == 'edit') {
+ $values->credentials = json_encode($values->credentials);
+ $values->minute = $values->limits->minute;
+ $values->day = $values->limits->day;
+ $values->month = $values->limits->month;
+ $values->hour = $values->limits->hour;
+ $values->week = $values->limits->week;
+ }
+ return $values;
+ }
+
+ protected function _beforesave($type, $request)
+ {
+ $data = $request->except('_token');
+
+ // $credentials = new stdClass();
+ // $credentials->api_key = $data["api_key"];
+ // $credentials->api_secret = $data["api_secret"];
+ // unset($data["api_key"]);
+ // unset($data["api_secret"]);
+ $data["credentials"] = json_decode($data["credentials"]);
+
+ $limits = new stdClass();
+ $limits->minute = $data["minute"];
+ $limits->hour = $data["hour"];
+ $limits->day = $data["day"];
+ $limits->week = $data["week"];
+ $limits->month = $data["month"];
+ unset($data["minute"]);
+ unset($data["hour"]);
+ unset($data["day"]);
+ unset($data["week"]);
+ unset($data["month"]);
+ $data["limits"] = $limits;
+
+ //echo ''; print_r($data); exit;
+ return $data;
+ }
+}
diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php
index fd8113e5..d497dc77 100644
--- a/app/Http/Controllers/ContactController.php
+++ b/app/Http/Controllers/ContactController.php
@@ -22,6 +22,7 @@ class ContactController extends Controller
public function list(Request $request) {
$fields = $this->get_list_fields();
+ //echo $this->_listtype; exit;
return $this->view($this->_listtype)->with([
'title' => $this->_title,
'fields' => $fields,
@@ -155,6 +156,20 @@ class ContactController extends Controller
]);
}
+ public function postsavelist(Request $request) {
+ Log::debug(print_r($request->except('_token'), true));
+ $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/savelist', $request->except('_token'));
+ // //echo ''; print_r($response); exit;
+ // $fields = $this->get_list_fields();
+ // return $this->view('editall')->with([
+ // 'title' => $this->_title,
+ // 'fields' => $response->data->attributes,
+ // 'base_url' => $this->_base_url,
+ // 'items' => $response->data->items
+ // ]);
+ }
+
+
// public function postimport(Request $request) {
// if( $request->file('importfile') ) {
diff --git a/app/Http/Controllers/ContactlistController.php b/app/Http/Controllers/ContactlistController.php
new file mode 100644
index 00000000..182c5119
--- /dev/null
+++ b/app/Http/Controllers/ContactlistController.php
@@ -0,0 +1,85 @@
+middleware('auth');
+ $this->_service = 'ums';
+ $this->_module = 'contact_list';
+ $this->_viewname = 'contactlist';
+ $this->_title = 'Contact List';
+ $this->_base_url = '/contactlist';
+ }
+
+ protected function get_list_fields()
+ {
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
+ 'name' => ['title' => 'Name', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select']
+ ];
+ }
+
+ protected function get_form_fields($type, $values)
+ {
+ $teams = $this->getlambda('get', 'communication', 'template', 'dropdown');
+ // echo ''; 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 ''; print_r($teams); exit;
+ $channels = [];
+ foreach ($chans->data->items as $chan) {
+ $channels[$chan->id] = $chan->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],
+ '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']],
+ ];
+ }
+
+ public function form($type, $id = null)
+ {
+ $values = [];
+ if ($type == 'edit') {
+ $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_one', ['id' => $id]);
+ $values = $response->data->item;
+ // echo ''; print_r($values); exit;
+ }
+ //echo ''; print_r($values); exit;
+ $data = $this->_beforeform($type, $values);
+ $fields = $this->get_form_fields($type, $values);
+ //echo ''; print_r($fields); exit;
+ return $this->view('form')->with([
+ 'title' => $this->_title,
+ 'mode' => $type,
+ 'fields' => $fields,
+ 'base_url' => $this->_base_url,
+ 'item' => $values,
+ ]);
+ }
+
+ protected function _beforesave($type, $request)
+ {
+ $data = $request->except('_token');
+ if ($request->file('image')) {
+ $data['image'] = $this->_uploadMedia($request, 'image', 'template');
+ }
+ return $data;
+ }
+}
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index eddb779c..0a8aae9d 100755
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -110,6 +110,9 @@ class Controller extends BaseController
$users = [];
foreach($response->data->items as $item) {
$user = [];
+ if(isset($item->id)) {
+ $user['id'] = $item->id;
+ }
foreach($fields as $field => $props){
if($field != 'actions') {
switch($props['type']){
diff --git a/app/Http/Controllers/DetailingcontestController.php b/app/Http/Controllers/DetailingcontestController.php
index 834f45f0..630b8b5f 100644
--- a/app/Http/Controllers/DetailingcontestController.php
+++ b/app/Http/Controllers/DetailingcontestController.php
@@ -63,7 +63,7 @@ class DetailingcontestController extends Controller
'evaluation_parameters' => ['title' => 'Evaluation Parameters', 'type' => 'multiselect', 'required' => true, 'values' => $params_dd ],
'evaluation_workflow' => ['title' => 'Evaluator Type', 'type' => 'select', 'required' => true, 'values' => ['ANY' => 'ANY', 'ALL' => 'ALL'] ],
'media_type' => ['title' => 'Media Type', 'type' => 'select', 'required' => true, 'values' => ['audio' => 'Audio', 'video' => 'Video', 'pdf' => 'PDF', 'image' => 'Image',] ],
- 'file' => ['title' => 'Media', 'type' => 'image', 'required' => true],
+ 'media' => ['title' => 'Media', 'type' => 'file', 'required' => true],
'cover_image' => ['title' => 'Cover Image', 'type' => 'image', 'required' => true],
'response_types' => ['title' => 'Response Types', 'type' => 'checkbox', 'required' => true, 'values' => ['audio' => 'Audio', 'video' => 'Video', 'pdf' => 'PDF', 'image' => 'Image',] ],
@@ -84,8 +84,8 @@ class DetailingcontestController extends Controller
if( $request->file('cover_image') ) {
$data['cover_image'] = $this->_uploadMedia($request, 'cover_image', 'detailing');
}
- if( $request->file('file') ) {
- $data['file'] = $this->_uploadMedia($request, 'file', 'detailing');
+ if( $request->file('media') ) {
+ $data['media'] = $this->_uploadMedia($request, 'media', 'detailing');
}
return $data;
}
diff --git a/app/Http/Controllers/DomainController.php b/app/Http/Controllers/DomainController.php
index 4f70fb7a..f2231e4e 100644
--- a/app/Http/Controllers/DomainController.php
+++ b/app/Http/Controllers/DomainController.php
@@ -70,9 +70,9 @@ class DomainController extends Controller
'description' => ['title' => 'Description', 'type' => 'textarea', 'required' => true],
'use_default_otp' => ['title' => 'Use Default OTP', 'type' => 'select', 'required' => true, 'values' => ['Yes' => 'Yes', 'No' => 'No'] ],
'default_otp' => ['title' => 'Default OTP to be used', 'type' => 'number', 'required' => true],
-
'terms_text' => ['title' => 'Login Terms & Conditions Text', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
-
+ 'android_server_key' => ['title' => 'Android Server Key', 'type' => 'textarea', 'fullwidth' => true],
+ 'ios_server_key' => ['title' => 'IOS Server Key', 'type' => 'textarea', 'fullwidth' => true],
];
}
diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php
index 46498cb3..e38180a0 100644
--- a/app/Http/Controllers/FormController.php
+++ b/app/Http/Controllers/FormController.php
@@ -87,7 +87,9 @@ class FormController extends Controller
return $this->deliverform($finfo->data->formdata, $finfo->data->questions);
} elseif($finfo->status == 'success' && $finfo->data->formdata->link_type == 'list') {
//echo ''; print_r($finfo->data); exit;
- if (\View::exists('form.list-'.$finfo->data->formdata->form_id)) {
+ if (\View::exists('form.'.$finfo->data->formdata->partition.'.list-'.$finfo->data->formdata->form_id)) {
+ return view('form.'.$finfo->data->formdata->partition.'.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
+ } elseif (\View::exists('form.list-'.$finfo->data->formdata->form_id)) {
return view('form.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
} else {
return view('form.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
@@ -146,7 +148,7 @@ class FormController extends Controller
foreach($files as $fname => $file) {
$post[$fname] = $this->_uploadMedia($request, $fname, 'form/'.$post['form_id'].'/'.$fname);
}
- if($post['id']=='') unset($post['id']);
+ if(isset($post['id']) && $post['id']=='') unset($post['id']);
$formdata = $request->session()->get('formdata');
if(isset($post['user_id']) && $post['user_id'] != '') {
$formdata->user_id = $post['user_id'];
@@ -375,6 +377,30 @@ class FormController extends Controller
LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $rxformdata, 'entity_id' => $rxformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
}
break;
+ case '1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78':
+ $contacts = [];
+ $indamet_80_rx = [];
+ $indamet_160_rx = [];
+ $indamet_320_rx = [];
+ $doctor_tagging = [];
+ $campaign = [];
+ foreach($post['contact_id'] as $i => $c) {
+ if($post['indamet_80_rx'][$i] > 0 || $post['indamet_160_rx'][$i] > 0 || $post['indamet_320_rx'][$i] > 0) {
+ $contacts[] = $c;
+ $indamet_80_rx[] = $post['indamet_80_rx'][$i];
+ $indamet_160_rx[] = $post['indamet_160_rx'][$i];
+ $indamet_320_rx[] = $post['indamet_320_rx'][$i];
+ $doctor_tagging[] = $post['doctor_tagging'][$i];
+ $campaign[] = $post['campaign'][$i];
+ }
+ }
+ $post['contact_id'] = $contacts;
+ $post['indamet_80_rx'] = $indamet_80_rx;
+ $post['indamet_160_rx'] = $indamet_160_rx;
+ $post['indamet_320_rx'] = $indamet_320_rx;
+ $post['doctor_tagging'] = $doctor_tagging;
+ $post['campaign'] = $campaign;
+ break;
}
@@ -730,6 +756,10 @@ class FormController extends Controller
$folder = storage_path('app/public/personalized/'.$form_info['form_id']);
$templatename = 'template-'.$form_info['form_info']->id.'.'.$template['extension'];
$outputImage = $this->retimage($folder.'/'.$templatename);
+
+ // $form_info['form_info']->positions = json_decode('[{"x":"100-279","y":"485","align":"center","size":20,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"event_date_date"},{"x":"100-279","y":"526","align":"center","size":22,"type":"text","font":"klavika-light.ttf","color":"110-23-19","field_name":"event_date_year"},{"x":"340-514","y":"485","align":"center","size":20,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_3"},{"x":"584-767","y":"480","align":"center","size":18,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_1"},{"x":"584-767","y":"508","align":"center","size":18,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_2"},{"x":"584-767","y":"535","align":"center","size":18,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_3"},{"x":"264-613","y":"910","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_1"},{"x":"264-613","y":"930","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_2"},{"x":"264-613","y":"950","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_3"},{"x":"264-613","y":"970","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_4"},{"x":362,"width":154,"y":658,"type":"image","fill":"mask","height":154,"field_name":"speaker_image"},{"x":"259-618","y":"873","align":"center","size":23,"type":"text","font":"klavika-medium.ttf","color":"255-255-255","field_name":"speaker_name"}]');
+
+ //echo ''; print_r($form_info); echo '
';
foreach($form_info['form_info']->positions as $pos) {
switch($pos->type) {
@@ -737,11 +767,27 @@ class FormController extends Controller
$image = storage_path( str_replace('/storage', 'app/public', $form_info['cropped-'.$pos->field_name] ) );
$photoimg = $this->retimage( $image );
$photosize = getimagesize( $image );
- imagecopyresized($outputImage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
+ if(isset($pos->fill) && $pos->fill == 'mask') {
+ $w = imagesx($outputImage);
+ $h = imagesy($outputImage);
+ $tempimage = imagecreatetruecolor($w, $h);
+ imagecopyresized($tempimage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
+ imagecopyresized($tempimage,$outputImage,0,0,0,0,$w,$h,$w,$h);
+ $outputImage = $tempimage;
+ //imagedestroy($tempimage);
+ } else {
+ imagecopyresized($outputImage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
+ }
break;
case 'text':
- $font = storage_path('app').'/fonts/Poppins-Medium.ttf';
- $white = imagecolorallocate($outputImage, 0, 0, 0);
+ $font = storage_path('app').'/fonts/'.$pos->font;
+ $pos->color = explode('-',$pos->color);
+ $white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]);
+ if(isset($pos->align) && $pos->align == 'center') {
+ $box = imagettfbbox($pos->size, 0, $font, $form_info[$pos->field_name]);
+ $pos->x = explode('-', $pos->x);
+ $pos->x = $pos->x[0] + (($pos->x[1] - $pos->x[0]) - $box[2])/2;
+ }
imagettftext($outputImage, $pos->size, 0, $pos->x, $pos->y, $white, $font, $form_info[$pos->field_name] );
break;
}
@@ -757,6 +803,8 @@ class FormController extends Controller
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $form_info, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
}
+ //return view('form.download')->with('image_url', 'personalized/'.$form_info['form_id'].'/'.$form_info['genareted_image']);
+
$request->session()->put('form_info', $form_info);
return redirect('/form/downloadpersonalization');
}
@@ -979,4 +1027,11 @@ class FormController extends Controller
return response()->json(['status' => 'failure']);
}
}
+
+ public function zipmultiple(Request $request) {
+ $files = $request->input('files', []);
+ $response = LambdaRequest::postrequest('form', 'formentity/zipmultiple', ['files' => $files], '');
+ //Log::debug(print_r($response, true));
+ return response()->json($response->data);
+ }
}
\ No newline at end of file
diff --git a/app/Http/Controllers/FormdataController.php b/app/Http/Controllers/FormdataController.php
index 36ed9b36..64441429 100644
--- a/app/Http/Controllers/FormdataController.php
+++ b/app/Http/Controllers/FormdataController.php
@@ -39,4 +39,8 @@ class FormdataController extends Controller
return redirect('/formsubmissions');
}
}
+
+ protected function get_list_buttons() {
+ return [];
+ }
}
diff --git a/app/Http/Controllers/FormsubmissionController.php b/app/Http/Controllers/FormsubmissionController.php
index 67c45079..cf3459c2 100644
--- a/app/Http/Controllers/FormsubmissionController.php
+++ b/app/Http/Controllers/FormsubmissionController.php
@@ -41,7 +41,11 @@ class FormsubmissionController extends Controller
else
$enddate = date("Y/m/d", strtotime("now") + 86400 );
- $reqdata = ["partition" => 'rapport-'.$user->domain, "form_id" => $form_id, "alldata" => true, "date_range" => $startdate.'_'.$enddate ];
+ $reqdata = ["partition" => 'rapport-'.$user->domain, "form_id" => $form_id, "alldata" => true ];
+ if(isset($post['startdate']) && isset($post['enddate'])) {
+ $reqdata['date_range'] = $startdate.'_'.$enddate;
+ }
+
$request->session()->put('formdata_request', $reqdata);
//echo ''; print_r($reqdata); exit;
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/getformhistory', $reqdata);
diff --git a/app/Http/Controllers/HierarchyController.php b/app/Http/Controllers/HierarchyController.php
index a8e5b651..c175a5f8 100644
--- a/app/Http/Controllers/HierarchyController.php
+++ b/app/Http/Controllers/HierarchyController.php
@@ -179,20 +179,20 @@ class HierarchyController extends Controller
$row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
$row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
- if(isset($user->manager_level1) && isset($user->manager_level1->owner_info) && isset($user->manager_level1->owner_info->employee_code)){
- $row[] = $user->manager_level1->owner_info->employee_code;
- $row[] = $user->manager_level1->owner_info->firstname . ' ' . $user->manager_level1->owner_info->lastname;
- $row[] = $user->manager_level1->owner_info->email;
+ if(isset($user->manager_level1) && isset($user->manager_level1->employee_code)) {
+ $row[] = $user->manager_level1->employee_code;
+ $row[] = $user->manager_level1->name;
+ $row[] = $user->manager_level1->email;
} else {
$row[] = '';
$row[] = '';
$row[] = '';
}
- if(isset($user->manager_level2) && isset($user->manager_level2->owner_info) && isset($user->manager_level2->owner_info->employee_code)){
- $row[] = $user->manager_level2->owner_info->employee_code;
- $row[] = $user->manager_level2->owner_info->firstname . ' ' . $user->manager_level2->owner_info->lastname;
- $row[] = $user->manager_level2->owner_info->email;
+ if(isset($user->manager_level2) && isset($user->manager_level2->employee_code)) {
+ $row[] = $user->manager_level2->employee_code;
+ $row[] = $user->manager_level2->name;
+ $row[] = $user->manager_level2->email;
} else {
$row[] = '';
$row[] = '';
diff --git a/app/Http/Controllers/MetricreportController.php b/app/Http/Controllers/MetricreportController.php
index 502d645c..47becb67 100644
--- a/app/Http/Controllers/MetricreportController.php
+++ b/app/Http/Controllers/MetricreportController.php
@@ -50,7 +50,7 @@ class MetricreportController extends Controller
public function report(Request $request) {
$post = $request->except('_token');
//echo '';print_r($post); exit;
- $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 60);
+ $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 300);
//echo ''; print_r($response); exit;
if($post['type'] == 'trend' && $post['chart'] == 'tabularperuser') {
echo ''; print_r($tabledata); print_r($response); exit;
@@ -68,7 +68,7 @@ class MetricreportController extends Controller
krsort($breadcrumbs);
}
//echo ''; print_r(['periods' => $response->data->periods, 'charts' => $response->data->available_charts, 'graph' => $response->data->graph, 'post' => $post, 'colors' => $colors, 'breadcrumbs' => $breadcrumbs]); exit;
- return $this->view('report')->with(['periods' => $response->data->periods, 'charts' => $response->data->available_charts, 'graph' => $response->data->graph, 'post' => $post, 'colors' => $colors, 'breadcrumbs' => $breadcrumbs]);
+ return $this->view('report')->with(['periods' => $response->data->periods, 'charts' => $response->data->available_charts, 'graph' => $response->data->graph, 'post' => array_merge((array)$response->data->post,$post) , 'colors' => $colors, 'breadcrumbs' => $breadcrumbs]);
}
public function export(Request $request) {
@@ -76,6 +76,7 @@ class MetricreportController extends Controller
$post['export'] = 1;
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 60);
//echo ''; print_r($response); print_r($post); exit;
+ $post = (array)$response->data->post;
$exceldata = [];
$exceldata[] = [$response->data->graph->name];
$exceldata[] = ['Report: '.ucwords($response->data->graph->agg_type).' Report'];
diff --git a/app/Http/Controllers/MetricviewController.php b/app/Http/Controllers/MetricviewController.php
index 259dc565..c101eb95 100644
--- a/app/Http/Controllers/MetricviewController.php
+++ b/app/Http/Controllers/MetricviewController.php
@@ -126,6 +126,9 @@ class MetricviewController extends Controller
'contacts_views' => ['title' => 'Doctor views', 'type' => 'multiselect', 'values' => ['contacts' => 'Doctor View'] ],
'intervals' => ['title' => 'Intervals', 'type' => 'multiselect', 'required' => true, 'values' => ['yearlycy' => 'Calender Year', 'yearlyfy' => 'Financial Year', 'monthly' => 'Monthly', 'weekly' => 'Weekly', 'daily' => 'Daily'] ],
+
+ 'default_interval' => ['title' => 'Default Interval', 'type' => 'select', 'required' => true, 'values' => ['month-0' => 'This Month','month-1' => 'Last Month','month-3' => 'Last 3 Months','month-6' => 'Last 6 Months','month-12' => 'Last 12 Months','day-0' => 'Today','day-1' => 'Yesterday','day-7' => 'Last 7 Days','day-30' => 'Last 30 Days','week-0' => 'This week','week-1' => 'Last week','week-2' => '-2 week','week-3' => '-3 week','week-4' => '-4 week','yearfy-0' => 'This Financial Year','yearfy-1' => 'Last Financial Year','yearcy-0' => 'This Calender Year','yearcy-1' => 'Last Calender Year'] ],
+
'combined_metrics' => ['title' => 'Combined Metrics (if any)', 'type' => 'textarea', 'fullwidth' => true ],
'report_roles' => ['title' => 'Data Report from Roles', 'type' => 'multiselect', 'values' => $roles_dd, 'required' => true],
@@ -148,7 +151,7 @@ class MetricviewController extends Controller
} else {
foreach($data['metric'] as $k => $metric) {
- $data['metrics'][] = ['metric' => $metric, 'display' => $data['display_unit'][$k], 'sort_order' => $data['sort_order'][$k] ];
+ $data['metrics'][] = ['metric' => $metric, 'display' => $data['display_unit'][$k], 'sort_order' => isset($data['sort_order'][$k]) ? $data['sort_order'][$k] : 0 ];
}
}
unset($data['metric']);
diff --git a/app/Http/Controllers/ReminderController.php b/app/Http/Controllers/ReminderController.php
index 5abfd878..6987db96 100644
--- a/app/Http/Controllers/ReminderController.php
+++ b/app/Http/Controllers/ReminderController.php
@@ -68,10 +68,11 @@ class ReminderController extends Controller
//echo ''; print_r($data['reminder']); exit;
$reminds = [];
foreach ($data['reminder']['time'] as $k => $v) {
- $reminds[] = ['time' => $v, 'days' => $data['reminder']['days'][$k], 'beore_or_after' => $data['reminder']['beore_or_after'][$k], 'manager' => $data['reminder']['manager'][$k] , 'message' => $data['reminder']['message'][$k] ];
+ $reminds[] = ['time' => $v, 'days' => $data['reminder']['days'][$k], 'beore_or_after' => $data['reminder']['beore_or_after'][$k], 'manager' => $data['reminder']['manager'][$k] , 'message' => $data['reminder']['message'][$k] , 'checksubmission' => $data['reminder']['checksubmission'][$k] , 'plan_date_field' => $data['reminder']['plan_date_field'][$k] ];
}
unset($data['reminder']);
$data['reminders'] = $reminds;
+ //echo ''; print_r($data); exit;
return $data;
}
diff --git a/app/Http/Controllers/SurveysubmissionController.php b/app/Http/Controllers/SurveysubmissionController.php
index efb2ead0..831a3737 100644
--- a/app/Http/Controllers/SurveysubmissionController.php
+++ b/app/Http/Controllers/SurveysubmissionController.php
@@ -48,10 +48,11 @@ class SurveysubmissionController extends Controller
$request->session()->put('formdata_request', $reqdata);
//echo ''; print_r($reqdata); exit;
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module . '/getformhistory', $reqdata);
+ //echo ''; print_r($response); exit;
if ($response->statusCode == 401) {
return redirect('/unauthorised');
}
- //echo ''; print_r($response); exit;
+
$fields = [
'user' => ['title' => 'Submitted By', 'type' => 'text'],
'date' => ['title' => 'Record Date', 'type' => 'text'],
diff --git a/app/Http/Controllers/TemplateController.php b/app/Http/Controllers/TemplateController.php
new file mode 100644
index 00000000..b2d49612
--- /dev/null
+++ b/app/Http/Controllers/TemplateController.php
@@ -0,0 +1,77 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'template';
+ $this->_viewname = 'template';
+ $this->_title = 'Template';
+ $this->_base_url = '/template';
+ }
+
+ protected function get_list_fields()
+ {
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
+ 'name' => ['title' => 'Template Name', 'type' => 'text'],
+ 'type' => ['title' => 'Type', 'type' => 'text'],
+ 'template_code' => ['title' => 'Template Code', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select']
+ ];
+ }
+
+ protected function get_form_fields($type, $values)
+ {
+ return [
+ 'name' => ['title' => 'Template Name', 'type' => 'text', 'required' => true],
+ 'type' => ['title' => 'Type', 'type' => 'select', 'required' => true, 'values' => ['whatsapp' => 'Whatsapp', 'whatsapp_interakt' => 'Whatsapp Interakt', 'sms' => 'SMS']],
+ 'template_code' => ['title' => 'Template Code', 'type' => 'text', 'required' => true],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+
+ 'header_type' => ['title' => 'Header Type', 'type' => 'select', 'required' => true, 'values' => ['none' => 'None', 'text' => 'Text', 'video' => 'Video', 'image' => 'Image', 'document' => 'Document'] ],
+ 'header_text' => ['title' => 'Header Text (if header type is text)', 'type' => 'text'],
+ 'template_body' => ['title' => 'Template Body', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
+ 'footer_text' => ['title' => 'Footer Text', 'type' => 'text'],
+
+ // 'header_params' => ['title' => 'Header Params', 'type' => 'textarea', 'required' => true],
+ // 'body_params' => ['title' => 'Body Params', 'type' => 'textarea', 'required' => true],
+ // 'button_params' => ['title' => 'Button Params', 'type' => 'textarea', 'required' => true],
+
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+ 'buttons' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true ],
+ //'image' => ['title' => 'Template Image', 'type' => 'image', 'required' => true]
+ ];
+ }
+
+ protected function _beforesave($type, $request)
+ {
+ $data = $request->except('_token');
+ $data['header_param_count'] = substr_count($data['header_text'],"{{");
+ $data['body_param_count'] = substr_count($data['template_body'],"{{");
+ return $data;
+ }
+
+ protected function _beforeform($type, $values) {
+ if ($type == 'edit') {
+ $buttons = [];
+ foreach($values )
+
+
+ echo ''; print_r($values); exit;
+ $values->body_params = json_encode($values->body_params);
+ $values->button_params = json_encode($values->button_params);
+ $values->header_params = json_encode($values->header_params);
+ }
+ return $values;
+ }
+}
diff --git a/app/Http/Controllers/TopicController.php b/app/Http/Controllers/TopicController.php
new file mode 100644
index 00000000..85c897a8
--- /dev/null
+++ b/app/Http/Controllers/TopicController.php
@@ -0,0 +1,77 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'topic';
+ $this->_viewname = 'topic';
+ $this->_title = 'Topics';
+ $this->_base_url = '/topic';
+ }
+
+ protected function get_list_fields()
+ {
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
+ 'name' => ['title' => 'Template Name', 'type' => 'text'],
+ 'message' => ['title' => 'Message', 'type' => 'text'],
+ 'description' => ['title' => 'Description', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select']
+ ];
+ }
+
+ protected function get_form_fields($type, $values)
+ {
+ return [
+ 'name' => ['title' => 'Template Name', 'type' => 'text', 'required' => true],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+ 'description' => ['title' => 'Description', 'type' => 'text', 'required' => true, 'fullwidth' => true],
+ 'message' => ['title' => 'Message', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
+ 'image' => ['title' => 'Template Image', 'type' => 'image', 'required' => true]
+ ];
+ }
+
+ public function form($type, $id = null)
+ {
+ $values = [];
+ if ($type == 'edit') {
+ $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_one', ['id' => $id]);
+ $values = $response->data->item;
+ // echo ''; print_r($values); exit;
+ }
+ //echo ''; print_r($values); exit;
+ $data = $this->_beforeform($type, $values);
+ $fields = $this->get_form_fields($type, $values);
+ //echo ''; print_r($fields); exit;
+ return $this->view('form')->with([
+ 'title' => $this->_title,
+ 'mode' => $type,
+ 'fields' => $fields,
+ 'base_url' => $this->_base_url,
+ 'item' => $values,
+ ]);
+ }
+
+ protected function _beforesave($type, $request)
+ {
+ $data = $request->except('_token');
+ // if ($type == 'edit') {
+ // $values->channels = explode('#', $values->channels);
+ // }
+
+ if ($request->file('image')) {
+ $data['image'] = $this->_uploadMedia($request, 'image', 'template');
+ }
+ return $data;
+ }
+}
diff --git a/app/Http/Controllers/TopicmediaController.php b/app/Http/Controllers/TopicmediaController.php
new file mode 100644
index 00000000..5bd71873
--- /dev/null
+++ b/app/Http/Controllers/TopicmediaController.php
@@ -0,0 +1,88 @@
+middleware('auth');
+ $this->_service = 'communication';
+ $this->_module = 'topicmedia';
+ $this->_viewname = 'topicmedia';
+ $this->_title = 'Topic Media';
+ $this->_base_url = '/topicmedia';
+ }
+
+ protected function get_list_fields()
+ {
+ return [
+ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
+ 'caption' => ['title' => 'Caption', 'type' => 'text'],
+ 'type' => ['title' => 'Type', 'type' => 'text'],
+ 'message' => ['title' => 'Message', 'type' => 'text'],
+ 'status' => ['title' => 'Status', 'type' => 'select']
+ ];
+ }
+
+ protected function get_form_fields($type, $values)
+ {
+ $teams = $this->getlambda('get', 'communication', 'topic', 'dropdown');
+ // echo ''; print_r($teams); exit;
+ $templates = [];
+ foreach ($teams->data->items as $team) {
+ $templates[$team->id] = $team->name;
+ }
+
+ return [
+ 'template_id' => ['title' => 'Template', 'type' => 'multiselect', 'values' => $templates, 'required' => true, 'fullwidth' => true],
+ 'caption' => ['title' => 'Caption', 'type' => 'text', 'required' => true],
+ 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+ 'message' => ['title' => 'Message', 'type' => 'textarea', 'required' => true],
+ 'show_post_complete' => ['title' => 'Show Post Complete', 'type' => 'select', 'required' => true, 'values' => ['true' => 'Yes', 'false' => 'No']],
+ 'post_complete_content' => ['title' => 'Post Complete Content', 'type' => 'textarea', 'required' => true],
+ 'get_viewer_info' => ['title' => 'Get Viewer Info', 'type' => 'select', 'required' => true, 'values' => ['true' => 'Yes', 'false' => 'No']],
+ 'viewer_info_fields' => ['title' => 'Viewer Info Fields', 'type' => 'checkbox', 'required' => true, 'values' => ['name' => 'Name', 'phone' => 'Phone', 'email' => 'Email', 'place' => 'Place']],
+ 'show_post_quiz' => ['title' => 'Show Post Quiz', 'type' => 'select', 'required' => true, 'values' => ['true' => 'Yes', 'false' => 'No']],
+ 'post_complete_quiz' => ['title' => 'Post Quiz', 'type' => 'select', 'required' => false, 'values' => $templates],
+ 'type' => ['title' => 'Media Type', 'type' => 'select', 'required' => true, 'values' => ['video' => 'Video', 'pdf' => 'Pdf', 'audio' => 'Audio', 'image' => 'Image', 'external_url' => 'External Url']],
+ 'media_url' => ['title' => 'Media Url', 'type' => 'text', 'required' => true],
+ 'image' => ['title' => 'Media', 'type' => 'image', 'required' => true]
+ ];
+ }
+
+ public function form($type, $id = null)
+ {
+ $values = [];
+ if ($type == 'edit') {
+ $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_one', ['id' => $id]);
+ $values = $response->data->item;
+ // echo ''; print_r($values); exit;
+ }
+ //echo ''; print_r($values); exit;
+ $data = $this->_beforeform($type, $values);
+ $fields = $this->get_form_fields($type, $values);
+ //echo ''; print_r($fields); exit;
+ return $this->view('form')->with([
+ 'title' => $this->_title,
+ 'mode' => $type,
+ 'fields' => $fields,
+ 'base_url' => $this->_base_url,
+ 'item' => $values,
+ ]);
+ }
+
+ protected function _beforesave($type, $request)
+ {
+ $data = $request->except('_token');
+ if ($request->file('image')) {
+ $data['image'] = $this->_uploadMedia($request, 'image', 'template');
+ }
+ return $data;
+ }
+}
diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php
index 2226b5de..d58ae70b 100755
--- a/app/Http/Middleware/VerifyCsrfToken.php
+++ b/app/Http/Middleware/VerifyCsrfToken.php
@@ -11,7 +11,7 @@ class VerifyCsrfToken extends Middleware
*
* @var array
*/
- protected $except = ['/form/metricreport*', '/form/submitpersonalized'
+ protected $except = ['/form/metricreport*', '/form/submitpersonalized', '/formdatalist/zipmultiple'
//
];
}
diff --git a/app/Http/Requests/LambdaRequest.php b/app/Http/Requests/LambdaRequest.php
index e6bf6591..b4379405 100644
--- a/app/Http/Requests/LambdaRequest.php
+++ b/app/Http/Requests/LambdaRequest.php
@@ -17,6 +17,7 @@ class LambdaRequest
'form' => 'http://localhost:3015/dev/',
'detailing' => 'http://localhost:3016/dev/',
'competition' => 'http://localhost:3017/dev/',
+ 'communication' => 'http://localhost:3018/dev/',
];
protected const PROD_URL = 'https://rapportapi.click/';
@@ -34,6 +35,10 @@ class LambdaRequest
if(self::REMOTE_ENV != 'local' && $service == 'form' && $url == 'formentity/getformhistory') {
$fullurl = 'https://sgrmuxa46z7xfouezyvg3tnhnq0yptjn.lambda-url.ap-south-1.on.aws/';
}
+ if(self::REMOTE_ENV != 'local' && $service == 'form' && $url == 'survey/getformhistory') {
+ $fullurl = 'https://tvp2drn5c2jpf7dpxdwwykdez40ikfbz.lambda-url.ap-south-1.on.aws/';
+ }
+
if($token == '') {
$response = Http::post($fullurl, $params);
} else {
@@ -61,6 +66,11 @@ class LambdaRequest
$fullurl = self::genurl($service, $url);
if(self::REMOTE_ENV != 'local' && $service == 'metric' && $url == 'metric_report/view') {
$fullurl = 'https://zbmttswaqimy3nmo5wactmja3i0uosyv.lambda-url.ap-south-1.on.aws/';
+ $timeout = 600;
+ }
+ if(self::REMOTE_ENV != 'local' && $service == 'form' && $url == 'survey/getformhistory') {
+ $fullurl = 'https://tvp2drn5c2jpf7dpxdwwykdez40ikfbz.lambda-url.ap-south-1.on.aws/';
+ $timeout = 600;
}
if($type == 'post') {
$response = Http::timeout($timeout)->withHeaders(['Authorization' => Auth::user()->access_token])->post($fullurl, $data);
diff --git a/public/images/velogo-light.png b/public/images/velogo-light.png
new file mode 100644
index 00000000..3a6343c1
Binary files /dev/null and b/public/images/velogo-light.png differ
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index 3510e469..618d0594 100755
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -19,13 +19,13 @@
diff --git a/resources/views/auth/loginotp.blade.php b/resources/views/auth/loginotp.blade.php
index 0da669be..aa01b2f1 100644
--- a/resources/views/auth/loginotp.blade.php
+++ b/resources/views/auth/loginotp.blade.php
@@ -20,12 +20,12 @@
diff --git a/resources/views/commbotintent/list.blade.php b/resources/views/commbotintent/list.blade.php
new file mode 100644
index 00000000..7e83c332
--- /dev/null
+++ b/resources/views/commbotintent/list.blade.php
@@ -0,0 +1,136 @@
+@extends('layouts.vertical', ["page_title"=> "Add & Edit Products"])
+
+@section('css')
+
+
+
+@endsection
+
+@section('content')
+
+
+
+@if(session()->has('message'))
+
+ {{ session()->get('message') }}
+
+@endif
+
+
+
+
+
+
+ Bot Intents
+
+
+
+
+
+
+ @include('commbotintent.part', ['myid' => 'root', 'items' => $items])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@section('script')
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/commbotintent/part.blade.php b/resources/views/commbotintent/part.blade.php
new file mode 100644
index 00000000..f44970d3
--- /dev/null
+++ b/resources/views/commbotintent/part.blade.php
@@ -0,0 +1,16 @@
+@if(isset($items[$myid]))
+
+ @foreach($items[$myid] as $item)
+ -
+
+ {{$item->name}}
+
+
+
+
+
+ @include('commbotintent.part', ['myid' => $item->id, 'items' => $items])
+
+ @endforeach
+
+@endif
\ No newline at end of file
diff --git a/resources/views/commbotmessage/form.blade.php b/resources/views/commbotmessage/form.blade.php
new file mode 100644
index 00000000..bc134dce
--- /dev/null
+++ b/resources/views/commbotmessage/form.blade.php
@@ -0,0 +1,259 @@
+@extends('layouts.vertical', ["page_title"=> "Add & Edit Products"])
+
+@section('css')
+
+
+
+
+
+
+
+@endsection
+
+@section('content')
+
+
+
+@if(session()->has('message'))
+
+ {{ session()->get('message') }}
+
+@endif
+
+
+
+
+
+
+
+
+
+@endsection
+
+@section('script')
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/commchannel/form.blade.php b/resources/views/commchannel/form.blade.php
new file mode 100644
index 00000000..583d312e
--- /dev/null
+++ b/resources/views/commchannel/form.blade.php
@@ -0,0 +1,327 @@
+";
+// print_r($fields);
+// exit();
+?>
+
+@extends('layouts.vertical', ['page_title' => 'Add & Edit Products'])
+
+@section('css')
+
+
+
+
+
+
+@endsection
+
+@section('content')
+
+
+
+ @if (session()->has('message'))
+
+ {{ session()->get('message') }}
+
+ @endif
+
+
+
+
+
+
+
+
+
+@endsection
+
+@section('script')
+
+
+
+
+
+@endsection
diff --git a/resources/views/common/form.blade.php b/resources/views/common/form.blade.php
index 3a1f6595..747a455c 100644
--- a/resources/views/common/form.blade.php
+++ b/resources/views/common/form.blade.php
@@ -93,11 +93,11 @@
@case('yesno')
- {$field} == 'yes' ? 'checked':''}} {{isset($props['required'])&&$props['required']?'required':'' }}>
+ {$field}) && $item->{$field} == 'yes' ? 'checked':''}} {{isset($props['required'])&&$props['required']?'required':'' }}>
- {$field} == 'no' ? 'checked':''}}>
+ {$field}) && $item->{$field} == 'no' ? 'checked':''}}>
diff --git a/resources/views/common/list.blade.php b/resources/views/common/list.blade.php
index c66cf718..1ba0bb4d 100644
--- a/resources/views/common/list.blade.php
+++ b/resources/views/common/list.blade.php
@@ -64,6 +64,9 @@
@case('date')
{{ date("d M Y", strtotime($item->{$field})) }}
@break
+ @case('datetime')
+ {{ date("d M Y, h:iA", strtotime($item->{$field})+19800 ) }}
+ @break
@endswitch
diff --git a/resources/views/contact/ajaxlist.blade.php b/resources/views/contact/ajaxlist.blade.php
new file mode 100644
index 00000000..4f803fab
--- /dev/null
+++ b/resources/views/contact/ajaxlist.blade.php
@@ -0,0 +1,272 @@
+@extends('layouts.vertical', ["page_title"=> "Datatables"])
+
+@section('css')
+
+
+
+
+@endsection
+
+@section('content')
+
+
+
+
+
+
+ {{$title}} Management
+
+
+ @if(isset($buttons))
+ @foreach($buttons as $button)
+ {{$button['title']}}
+ @endforeach
+ @endif
+
+
+
+@if(session()->has('message'))
+
+ {{ session()->get('message') }}
+
+@endif
+@if(session()->has('error'))
+
+ {{ session()->get('error') }}
+
+@endif
+
+
+
+
+
+
+
+ @foreach($fields as $field => $props)
+ {{$props['title']}}
+ @endforeach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@section('script')
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/form/download.blade.php b/resources/views/form/download.blade.php
index 777fd24e..7a0382e6 100755
--- a/resources/views/form/download.blade.php
+++ b/resources/views/form/download.blade.php
@@ -18,7 +18,7 @@
diff --git a/resources/views/form/list.blade.php b/resources/views/form/list.blade.php
index 4b9007dd..e39f0db8 100644
--- a/resources/views/form/list.blade.php
+++ b/resources/views/form/list.blade.php
@@ -116,6 +116,9 @@
@include('layouts.shared/footer-script')
+
+