From c05d134768f97f86ac4cbfd863863b6370d37af1 Mon Sep 17 00:00:00 2001 From: Ravi Gulhane Date: Wed, 19 Apr 2023 15:55:47 +0530 Subject: [PATCH] Changes --- app/Http/Controllers/BannerController.php | 6 +- .../Controllers/ComcampaignController.php | 139 +++++++ app/Http/Controllers/CommbotController.php | 117 ++++++ .../Controllers/CommbotintentController.php | 101 +++++ .../Controllers/CommbotmessageController.php | 112 ++++++ .../Controllers/CommchannelController.php | 117 ++++++ app/Http/Controllers/ContactController.php | 15 + .../Controllers/ContactlistController.php | 85 +++++ app/Http/Controllers/Controller.php | 3 + .../DetailingcontestController.php | 6 +- app/Http/Controllers/DomainController.php | 4 +- app/Http/Controllers/FormController.php | 65 +++- app/Http/Controllers/FormdataController.php | 4 + .../Controllers/FormsubmissionController.php | 6 +- app/Http/Controllers/HierarchyController.php | 16 +- .../Controllers/MetricreportController.php | 5 +- app/Http/Controllers/MetricviewController.php | 5 +- app/Http/Controllers/ReminderController.php | 3 +- .../SurveysubmissionController.php | 3 +- app/Http/Controllers/TemplateController.php | 77 ++++ app/Http/Controllers/TopicController.php | 77 ++++ app/Http/Controllers/TopicmediaController.php | 88 +++++ app/Http/Middleware/VerifyCsrfToken.php | 2 +- app/Http/Requests/LambdaRequest.php | 10 + public/images/velogo-light.png | Bin 0 -> 77150 bytes resources/views/auth/login.blade.php | 4 +- resources/views/auth/loginotp.blade.php | 4 +- resources/views/commbotintent/list.blade.php | 136 +++++++ resources/views/commbotintent/part.blade.php | 16 + resources/views/commbotmessage/form.blade.php | 259 +++++++++++++ resources/views/commchannel/form.blade.php | 327 ++++++++++++++++ resources/views/common/form.blade.php | 4 +- resources/views/common/list.blade.php | 3 + resources/views/contact/ajaxlist.blade.php | 272 +++++++++++++ resources/views/form/download.blade.php | 2 +- resources/views/form/list.blade.php | 3 + .../views/form/personalization.blade.php | 10 + ...7137-4b81-425c-afb4-a4c0fa701372.blade.php | 23 +- ...9458-8492-48c4-9067-6ac7e70a8fe4.blade.php | 319 ++++++++++++++++ ...3b88-c4b4-4f7c-8cc8-1d887ef631df.blade.php | 319 ++++++++++++++++ ...fc27-e8c1-4120-9883-b42af09244d3.blade.php | 331 ++++++++++++++++ ...fc27-e8c1-4120-9883-b42af09244d6.blade.php | 358 ++++++++++++++++++ ...fccb-4a88-bf28-cf894fa27a78.blade copy.php | 187 +++++++++ ...c5b3-fccb-4a88-bf28-cf894fa27a78.blade.php | 60 ++- ...a7d8-21a0-44fe-b612-2a98518e6aeb.blade.php | 209 ++++++++++ ...330d-350e-4158-9db3-366814d4a324.blade.php | 209 ++++++++++ ...a7d8-21a0-44fe-b612-2a98518e6aeb.blade.php | 228 +++++++++++ ...2d79-33dc-4972-816f-85d873ed6b01.blade.php | 209 ++++++++++ ...ae94-8706-4f0f-8e65-6e4380f7c005.blade.php | 209 ++++++++++ resources/views/index.blade.php | 4 +- .../layouts/shared/left-sidebar.blade.php | 50 +++ .../views/layouts/shared/title-meta.blade.php | 3 +- .../views/layouts/shared/topbar.blade.php | 12 +- resources/views/reminder/form.blade.php | 27 +- resources/views/template/form.blade.php | 289 ++++++++++++++ resources/views/templatemedia/form.blade.php | 317 ++++++++++++++++ routes/web.php | 29 +- 57 files changed, 5399 insertions(+), 99 deletions(-) create mode 100644 app/Http/Controllers/ComcampaignController.php create mode 100644 app/Http/Controllers/CommbotController.php create mode 100644 app/Http/Controllers/CommbotintentController.php create mode 100644 app/Http/Controllers/CommbotmessageController.php create mode 100644 app/Http/Controllers/CommchannelController.php create mode 100644 app/Http/Controllers/ContactlistController.php create mode 100644 app/Http/Controllers/TemplateController.php create mode 100644 app/Http/Controllers/TopicController.php create mode 100644 app/Http/Controllers/TopicmediaController.php create mode 100644 public/images/velogo-light.png create mode 100644 resources/views/commbotintent/list.blade.php create mode 100644 resources/views/commbotintent/part.blade.php create mode 100644 resources/views/commbotmessage/form.blade.php create mode 100644 resources/views/commchannel/form.blade.php create mode 100644 resources/views/contact/ajaxlist.blade.php create mode 100644 resources/views/form/rapport-copd/1680092666-1a6f9458-8492-48c4-9067-6ac7e70a8fe4.blade.php create mode 100644 resources/views/form/rapport-copd/1681375813-9cc53b88-c4b4-4f7c-8cc8-1d887ef631df.blade.php create mode 100644 resources/views/form/rapport-pulmocare/1669979081-e991fc27-e8c1-4120-9883-b42af09244d3.blade.php create mode 100644 resources/views/form/rapport-pulmocare/1669979083-e991fc27-e8c1-4120-9883-b42af09244d6.blade.php create mode 100644 resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade copy.php create mode 100644 resources/views/form/rapport-shwas2/1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php create mode 100644 resources/views/form/rapport-shwas2/1681707866-177a330d-350e-4158-9db3-366814d4a324.blade.php create mode 100644 resources/views/form/rapport-shwas2/list-1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php create mode 100644 resources/views/form/rapport-vitalis1/1670988660-38fb2d79-33dc-4972-816f-85d873ed6b01.blade.php create mode 100644 resources/views/form/rapport-vitalis1/1672051617-b274ae94-8706-4f0f-8e65-6e4380f7c005.blade.php create mode 100644 resources/views/template/form.blade.php create mode 100644 resources/views/templatemedia/form.blade.php 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 0000000000000000000000000000000000000000..3a6343c1319877e4d218c2f282778deaf1ce5b28
GIT binary patch
literal 77150
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�c=+AhLz$J#i
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
TVbU=;g;nY*+RFLIZ7%;GhkL2P

literal 0
HcmV?d00001

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) +
  1. +
    + {{$item->name}} + + + + +
    + @include('commbotintent.part', ['myid' => $item->id, 'items' => $items]) +
  2. + @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 +
+
+
+
+ @csrf +
+
+
+

Add / Edit {{$title}}

+
+
+
+ Back + +
+
+ @foreach($fields as $field => $props) + @if($props['type'] != 'hidden') +
+ + @endif + @switch($props['type']) + @case('hidden') + + @break + @case('text') + @case('email') + @case('number') + @case('tel') + + @break + @case('date') + + @break + @case('datetime') + + @break + @case('textarea') + + @break + @case('select') + + @break + @case('checkbox') + @foreach($props['values'] as $k => $v) +
+ {$field}) && in_array($k, $item->{$field}) ? 'checked':''}}> + +
+ @endforeach + @break + @case('multiselect') + + @break + @case('bigmultiselect') + + @break + @case('yesno') +
+
+ {$field}) && $item->{$field} == 'yes' ? 'checked':''}} {{isset($props['required'])&&$props['required']?'required':'' }}> + +
+
+ {$field}) && $item->{$field} == 'no' ? 'checked':''}}> + +
+
+ @break + @case('image') +
+ +

500MB Max File size

+
+ @break + @case('multiimage') +
+ +

500MB Max File size

+
+ @break + @case('file') +
+ +

1GB Max File size

+
+ @break + @case('mapping') +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ @if($mode=='edit') + @foreach($item->{$field} as $map) +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ @endforeach + @endif +
+ @break + + @endswitch + @if($props['type'] != 'hidden') +
+ @endif + @endforeach + +
+
+ Back + +
+
+
+
+
+
+
+
+
+ +@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 +
+
+
+
+ @csrf +
+
+
+

Add / Edit {{ $title }}

+
+
+
+ Back + +
+
+ @foreach ($fields as $field => $props) + @if ($props['type'] != 'hidden') +
+ + @endif + @switch($props['type']) + @case('hidden') + + @break + + @case('text') + @case('email') + + @case('number') + @case('tel') + + @break + + @case('date') + + @break + + @case('textarea') + + @break + + @case('select') + + @break + + @case('multiselect') + + @break + + @case('bigmultiselect') + + @break + + @case('yesno') +
+
+ {$field} == 'yes' ? 'checked' : '' }} + {{ isset($props['required']) && $props['required'] ? 'required' : '' }}> + +
+
+ {$field} == 'no' ? 'checked' : '' }}> + +
+
+ @break + + @case('image') +
+ +

500MB Max File size

+
+ @break + + @case('file') +
+ +

1GB Max File size

+
+ @break + + @case('mapping') +
+ + + + + + + + + + @if ($mode == 'edit') + @foreach ($item->{$field} as $map) + + + + + + + @endforeach + @else + + + + + + + @endif + +
TypeTeam (if team)Position/Person (Emp or Pos Code)
+ + + + +
+ + + +
+ @break + @endswitch + @if ($props['type'] != 'hidden') +
+ @endif + @endforeach + +
+
+ Back + +
+
+
+
+
+
+
+
+
+ +@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) + + @endforeach + + + + + + +
{{$props['title']}}
+ +
+
+
+
+ +
+ + + + + + +@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 @@

Now click below button to download

Download - Homepage +
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') + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-copd/1681375813-9cc53b88-c4b4-4f7c-8cc8-1d887ef631df.blade.php b/resources/views/form/rapport-copd/1681375813-9cc53b88-c4b4-4f7c-8cc8-1d887ef631df.blade.php new file mode 100644 index 00000000..75776b40 --- /dev/null +++ b/resources/views/form/rapport-copd/1681375813-9cc53b88-c4b4-4f7c-8cc8-1d887ef631df.blade.php @@ -0,0 +1,319 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-pulmocare/1669979081-e991fc27-e8c1-4120-9883-b42af09244d3.blade.php b/resources/views/form/rapport-pulmocare/1669979081-e991fc27-e8c1-4120-9883-b42af09244d3.blade.php new file mode 100644 index 00000000..b8a8db3a --- /dev/null +++ b/resources/views/form/rapport-pulmocare/1669979081-e991fc27-e8c1-4120-9883-b42af09244d3.blade.php @@ -0,0 +1,331 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-pulmocare/1669979083-e991fc27-e8c1-4120-9883-b42af09244d6.blade.php b/resources/views/form/rapport-pulmocare/1669979083-e991fc27-e8c1-4120-9883-b42af09244d6.blade.php new file mode 100644 index 00000000..99f74bde --- /dev/null +++ b/resources/views/form/rapport-pulmocare/1669979083-e991fc27-e8c1-4120-9883-b42af09244d6.blade.php @@ -0,0 +1,358 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade copy.php b/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade copy.php new file mode 100644 index 00000000..c6a225ee --- /dev/null +++ b/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade copy.php @@ -0,0 +1,187 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade.php b/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade.php index c6a225ee..71a96ed4 100644 --- a/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade.php +++ b/resources/views/form/rapport-shwas2/1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78.blade.php @@ -34,24 +34,6 @@ @endif - @php - $start = strtotime("1 May 2021"); - $till = strtotime("now"); - if( request()->get('record_date') ) { - $target = strtotime(request()->get('record_date')); - } else { - $target = strtotime("now"); - } - $history = Formhelper::getMultiformData($form->partition, $form->form_id, $form->user_id, date("m-01-Y", $target) , date("m-t-Y", $target) ); - $contacts = []; - if(sizeof($history->data->submissions) > 0) { - foreach($history->data->submissions as $sub){ - $contacts[$sub->formdata->contact_id] = ['id' => $sub->id, 'indamet_80_rx' => isset($sub->formdata->indamet_80_rx) ? $sub->formdata->indamet_80_rx : 0, 'indamet_160_rx' => isset($sub->formdata->indamet_160_rx) ? $sub->formdata->indamet_160_rx : 0, 'indamet_320_rx' => isset($sub->formdata->indamet_320_rx) ? $sub->formdata->indamet_320_rx : 0 ]; - } - } - //echo '
';print_r($contacts);echo '
'; exit; - @endphp -
@csrf @@ -60,16 +42,7 @@ @endif
- -
-
- - +
@@ -78,30 +51,45 @@ Doctor Name + Campaign + Doctor Tagging Indamet 80 Indamet 160 Indamet 320 - @foreach($questions[2]->options as $doctor) - @if(sizeof($contacts) > 0 && isset($contacts[$doctor->display]) ) - - @endif + @foreach($questions[1]->options as $doctor) + {{-- @if(isset($doctor->contact->campaign) && $doctor->contact->campaign != "") --}} - + {{$doctor->display}} + {{isset($doctor->contact->campaign) ? $doctor->contact->campaign : '-'}} - + - + - + + + + + {{-- @endif --}} @endforeach diff --git a/resources/views/form/rapport-shwas2/1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php b/resources/views/form/rapport-shwas2/1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php new file mode 100644 index 00000000..998b6d1c --- /dev/null +++ b/resources/views/form/rapport-shwas2/1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php @@ -0,0 +1,209 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-shwas2/1681707866-177a330d-350e-4158-9db3-366814d4a324.blade.php b/resources/views/form/rapport-shwas2/1681707866-177a330d-350e-4158-9db3-366814d4a324.blade.php new file mode 100644 index 00000000..cf7e2156 --- /dev/null +++ b/resources/views/form/rapport-shwas2/1681707866-177a330d-350e-4158-9db3-366814d4a324.blade.php @@ -0,0 +1,209 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-shwas2/list-1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php b/resources/views/form/rapport-shwas2/list-1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php new file mode 100644 index 00000000..e8c0279f --- /dev/null +++ b/resources/views/form/rapport-shwas2/list-1681455647-097aa7d8-21a0-44fe-b612-2a98518e6aeb.blade.php @@ -0,0 +1,228 @@ +'; +// print_r($submissions); + +// echo '
';
+// print_r($questions);
+?>
+
+
+
+
+
+    @include('layouts.shared/title-meta', ['title' => 'History'])
+    @include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? ''])
+
+
+ processing... +
+ + + + + + + @include('layouts.shared/footer-script') + + + + diff --git a/resources/views/form/rapport-vitalis1/1670988660-38fb2d79-33dc-4972-816f-85d873ed6b01.blade.php b/resources/views/form/rapport-vitalis1/1670988660-38fb2d79-33dc-4972-816f-85d873ed6b01.blade.php new file mode 100644 index 00000000..f83c778f --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1670988660-38fb2d79-33dc-4972-816f-85d873ed6b01.blade.php @@ -0,0 +1,209 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1672051617-b274ae94-8706-4f0f-8e65-6e4380f7c005.blade.php b/resources/views/form/rapport-vitalis1/1672051617-b274ae94-8706-4f0f-8e65-6e4380f7c005.blade.php new file mode 100644 index 00000000..f83c778f --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1672051617-b274ae94-8706-4f0f-8e65-6e4380f7c005.blade.php @@ -0,0 +1,209 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index a3192604..1304a4d7 100755 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -31,14 +31,14 @@

{{$metric->name}}

-
{{$metric->periods[0]->label}}
+
{{$metric->current_period}}
{{$metric->label}}

{{$metric->value}} {{$metric->type=='verses' ? ' / ' . $metric->max : ''}}

@foreach($metric->available_charts as $chart) - {{$chart->name}} Chart + {{$chart->name}} Chart @endforeach
diff --git a/resources/views/layouts/shared/left-sidebar.blade.php b/resources/views/layouts/shared/left-sidebar.blade.php index fbfdf5f4..6ecf5bec 100755 --- a/resources/views/layouts/shared/left-sidebar.blade.php +++ b/resources/views/layouts/shared/left-sidebar.blade.php @@ -132,6 +132,11 @@ Attributes @endif + @if(in_array('contact_list_get_all', $permissions)) +
  • + Contact Lists +
  • + @endif
    @@ -214,6 +219,51 @@ @endif + @if(in_array('channel_get_all', $permissions) || + in_array('template_get_all', $permissions) || + in_array('templatemedia_get_all', $permissions) ) +
  • + + + Communications + + +
    + +
    +
  • + @endif @if(in_array('metric_get_all', $permissions) || in_array('injestion_mapping_get_all', $permissions) || diff --git a/resources/views/layouts/shared/title-meta.blade.php b/resources/views/layouts/shared/title-meta.blade.php index f338a512..64e5297d 100755 --- a/resources/views/layouts/shared/title-meta.blade.php +++ b/resources/views/layouts/shared/title-meta.blade.php @@ -5,4 +5,5 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/resources/views/layouts/shared/topbar.blade.php b/resources/views/layouts/shared/topbar.blade.php index c7e1a39d..ab31cce1 100755 --- a/resources/views/layouts/shared/topbar.blade.php +++ b/resources/views/layouts/shared/topbar.blade.php @@ -1,5 +1,5 @@ -