Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15624 | Rev 15626 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
15399 efrain 1
<?php
2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
 
5
$roleName = $currentUser->getUserTypeId();
6
 
7
 
8
$routeAdd       = $this->url('discovery-contacts/add');
9
$routeDatatable = $this->url('discovery-contacts');
15546 efrain 10
$routeUpload    = $this->url('discovery-contacts/upload');
15399 efrain 11
 
12
 
13
$allowInteractionAdd    = $acl->isAllowed($roleName, 'discovery-contacts/interactions/add') ? 1 : 0;
14
 
15546 efrain 15
$allowAdd           = $acl->isAllowed($roleName, 'discovery-contacts/add') ? 1 : 0;
16
$allowEdit      = $acl->isAllowed($roleName, 'discovery-contacts/edit') ? 1 : 0;
17
$allowDelete    = $acl->isAllowed($roleName, 'discovery-contacts/delete',) ? 1 : 0;
18
$allowView      = $acl->isAllowed($roleName, 'discovery-contacts/view',) ? 1 : 0;
19
$allowUpload    = $acl->isAllowed($roleName, 'discovery-contacts/upload') ? 1 : 0;
15399 efrain 20
 
21
 
22
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
23
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
24
 
25
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
26
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
27
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
28
 
29
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
30
 
31
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
32
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
33
 
34
 
35
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
36
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
37
 
38
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
39
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-checkbox/awesome-bootstrap-checkbox.css'));
40
 
41
$this->headLink()->appendStylesheet($this->basePath('plugins/intl-tel-input/build/css/intlTelInput.css'));
42
$this->inlineScript()->appendFile($this->basePath('plugins/intl-tel-input/build/js/intlTelInput-jquery.js'));
43
$utilsScript = $this->basePath('plugins/intl-tel-input/build/js/utils.js');
44
 
45
$this->inlineScript()->appendFile($this->basePath('plugins/jsrender/jsrender.min.js'));
46
 
15546 efrain 47
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/css/fileinput.min.css'));
48
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.css'));
49
 
50
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/piexif.js'));
51
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/sortable.js'));
52
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/fileinput.js'));
53
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/locales/es.js'));
54
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/fa/theme.js'));
55
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fa/theme.js'));
56
 
57
 
58
$this->headStyle()->captureStart();
59
echo <<<CSS
60
 
61
#table-wrapper {
62
  width: 100%;
63
  height: 300px;
64
  overflow: auto;
65
}
66
 
67
#table-wrapper table {
68
  border-collapse: separate;
69
  border-spacing: 0;
70
}
71
 
72
#table-wrapper table thead {
73
  flex: 0 0 auto;
74
}
75
 
76
#table-wrapper table thead th,
77
#table-wrapper table tbody td {
78
 
79
}
80
 
81
/*
82
style=""
83
#gridTableUploadContacts {
84
    display: flex;
85
    flex-flow: column;
86
    width: 100%;
87
}
88
 
89
#gridTableUploadContacts thead {
90
    flex: 0 0 auto;
91
}
92
 
93
#gridTableUploadContacts tbody {
94
    flex: 1 1 auto;
95
    display: block;
96
    overflow-y: auto;
97
    overflow-x: auto;
98
}
99
 
100
#gridTableUploadContacts tr {
101
    width: 100%;
102
    display: table;
103
    table-layout: fixed;
104
*/
105
}
106
CSS;
107
$this->headStyle()->captureEnd();
108
 
15399 efrain 109
$this->inlineScript()->captureStart();
110
echo <<<JS
111
    jQuery( document ).ready(function( $ ) {
112
 
113
 
114
        $.validator.addMethod("isIntlPhoneNumber", function(value, element) {
115
            if(!value || value.length == '') {
116
                return true;
117
            }  else {
118
                return $(element).intlTelInput('isValidNumber');
119
            }
120
        },  'ERROR_INTERNATIONAL_PHONE_FORMAT_IS_INVALID');
121
 
122
        $.validator.setDefaults({
123
            debug: true,
124
            highlight: function(element) {
125
                $(element).addClass('is-invalid');
126
            },
127
            unhighlight: function(element) {
128
                $(element).removeClass('is-invalid');
129
            },
130
            errorElement: 'span',
131
            errorClass: 'error invalid-feedback',
132
            errorPlacement: function(error, element) {
133
                if(element.parent('.form-group').length) {
134
                    error.insertAfter(element);
135
                } else if(element.parent('.toggle').length) {
136
                    error.insertAfter(element.parent().parent());
137
                } else {
138
                    error.insertAfter(element.parent());
139
                }
140
            }
141
        });
142
 
143
 
144
 
145
 
146
        $.fn.showFormErrorValidator = function(fieldname, errors) {
147
            var field = $(fieldname);
148
            if(field) {
149
                $(field).addClass('is-invalid');
150
 
151
 
152
                var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
153
                if(field.parent('.form-group').length) {
154
                    error.insertAfter(field);
155
                } else  if(field.parent('.toggle').length) {
156
                    error.insertAfter(field.parent().parent());
157
                } else {
158
                    error.insertAfter(field.parent());
159
                }
160
            }
161
        };
162
 
163
 
164
 
165
 
166
        var allowEdit   = $allowEdit;
167
        var allowDelete = $allowDelete;
168
        var allowView = $allowView;
169
 
170
        var linkInteractions = '';
171
        var linkInteractionsAdd = '';
172
        var linkLogs = '';
173
 
174
        var pageInteractions = 0;
175
        var pageLogs = 0;
176
 
177
 
178
        $.fn.loadLogs = function() {
179
            NProgress.start();
180
            var action = $(this).data('href');
181
 
182
            $.ajax({
183
                'dataType'  : 'json',
184
                'method'    : 'get',
185
                'url'       : linkLogs,
186
                'data'      : {
187
                    'page' : pageLogs
188
                }
189
            }).done(function(response) {
190
                if(response['success']) {
191
 
192
                    pagination = {
193
                        has_previous_page : response['data']['current']['page'] > 1,
194
                        has_next_page : response['data']['current']['page'] < response['data']['total']['page'],
195
                    }
196
 
197
 
198
                    if(pageLogs > response['data']['total']['page']) {
199
                        pageLogs = response['data']['total']['page'];
200
                    }
201
 
202
                    $('#discovery-contacts-pagination-logs').empty();
203
                    $('#discovery-contacts-pagination-logs').append($('#logPaginationTemplate').render(pagination));
204
 
205
 
206
                    $('#grid-discovery-contacts-tabs-logs').empty();
207
                    $('#grid-discovery-contacts-tabs-logs').append(
208
                        $('#logTemplate').render(response['data']['current'])
209
                    );
210
 
211
 
212
 
213
                } else {
214
                    $.fn.showError(response['data']);
215
                }
216
            }).fail(function( jqXHR, textStatus, errorThrown) {
217
                $.fn.showError(textStatus);
218
            }).always(function() {
219
                NProgress.done();
220
            });
221
 
222
        };
223
 
224
    $.fn.loadInteractions = function() {
225
            NProgress.start();
226
 
227
            $.ajax({
228
                'dataType'  : 'json',
229
                'method'    : 'get',
230
                'url'       : linkInteractions,
231
                'data'      : {
232
                    'page' : pageInteractions
233
                }
234
            }).done(function(response) {
235
                if(response['success']) {
236
 
237
                    pagination = {
238
                        has_previous_page : response['data']['current']['page'] > 1,
239
                        has_next_page : response['data']['current']['page'] < response['data']['total']['page'],
240
                    }
241
 
242
                    if(pageInteractions > response['data']['total']['page']) {
243
                        pageInteractions = response['data']['total']['page'];
244
                    }
245
 
246
                    $('#discovery-contacts-pagination-interactions').empty();
247
                    $('#discovery-contacts-pagination-interactions').append($('#interactionPaginationTemplate').render(pagination));
248
 
249
 
250
                    $('#grid-discovery-contacts-tabs-interactions').empty();
251
                    $('#grid-discovery-contacts-tabs-interactions').append(
252
                        $('#interactionTemplate').render(response['data']['current'])
253
                    );
254
 
255
 
256
 
257
 
258
 
259
                } else {
260
                    $.fn.showError(response['data']);
261
                }
262
            }).fail(function( jqXHR, textStatus, errorThrown) {
263
                $.fn.showError(textStatus);
264
            }).always(function() {
265
                NProgress.done();
266
            });
267
 
268
        };
269
 
270
     var gridTable = $('#gridTable').dataTable( {
271
            'processing': true,
272
            'serverSide': true,
273
            'searching': true,
274
            'order': [[ 0, 'asc' ]],
275
            'ordering':  true,
276
            'ordenable' : true,
277
            'responsive': true,
278
            'select' : false,
279
        	'paging': true,
280
            'pagingType': 'simple_numbers',
281
    		'ajax': {
282
    			'url' : '$routeDatatable',
283
    			'type' : 'get',
284
                'beforeSend': function (request) {
285
                  NProgress.start();
286
                },
287
                'dataFilter': function(response) {
288
                    var response = jQuery.parseJSON( response );
289
 
290
                    var json                = {};
291
                    json.recordsTotal       = 0;
292
                    json.recordsFiltered    = 0;
293
                    json.data               = [];
294
 
295
 
296
                    if(response.success) {
297
                        json.recordsTotal       = response.data.total;
298
                        json.recordsFiltered    = response.data.total;
299
                        json.data               = response.data.items;
300
                    } else {
301
                        $.fn.showError(response.data)
302
                    }
303
 
304
                    return JSON.stringify( json );
305
                }
306
    		},
307
            'language' : {
308
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
309
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
310
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
311
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
312
                'sInfo':           'LABEL_DATATABLE_SINFO',
313
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
314
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
315
                'sInfoPostFix':    '',
316
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
317
                'sUrl':            '',
318
                'sInfoThousands':  ',',
319
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
320
                'oPaginate': {
321
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
322
                    'sLast':     'LABEL_DATATABLE_SLAST',
323
                    'sNext':     'LABEL_DATATABLE_SNEXT',
324
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
325
                },
326
                'oAria': {
327
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
328
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
329
                },
330
            },
331
            'drawCallback': function( settings ) {
332
                NProgress.done();
333
                $('button.btn-delete').confirmation({
334
                    rootSelector: 'button.btn-delete',
335
                    title : 'LABEL_ARE_YOU_SURE',
336
                    singleton : true,
337
                    btnOkLabel: 'LABEL_YES',
338
                    btnCancelLabel: 'LABEL_NO',
339
                    onConfirm: function(value) {
340
                        action = $(this).data('href');
341
                        NProgress.start();
342
                        $.ajax({
343
                            'dataType'  : 'json',
344
                            'accept'    : 'application/json',
345
                            'method'    : 'post',
346
                            'url'       :  action,
347
                        }).done(function(response) {
348
                            if(response['success']) {
349
                                $.fn.showSuccess(response['data']);
350
                                gridTable.api().ajax.reload(null, false);
351
                            } else {
352
                                $.fn.showError(response['data']);
353
                            }
354
                        }).fail(function( jqXHR, textStatus, errorThrown) {
355
                            $.fn.showError(textStatus);
356
                        }).always(function() {
357
                            NProgress.done();
358
                        });
359
                    },
360
                });
361
            },
362
            'aoColumns': [
363
                { 'mDataProp': 'first_name' },
364
                { 'mDataProp': 'last_name' },
365
                { 'mDataProp': 'corporate_email' },
15624 anderson 366
                { 'mDataProp': 'company' },
15399 efrain 367
                { 'mDataProp': 'actions' },
368
    	    ],
369
            'columnDefs': [
370
                {
371
                    'targets': -1,
372
                    'orderable': false,
373
                    'render' : function ( data, type, row ) {
374
                        s = '';
375
 
376
                        if(allowEdit && data['link_edit']) {
377
                            s = s + '<button class="btn btn-primary btn-edit" data-href="' + data['link_edit']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pencil"></i> LABEL_EDIT </button>&nbsp;';
378
                        }
379
                        if(allowDelete && data['link_delete']) {
380
                            s = s + '<button class="btn btn-danger btn-delete" data-href="' + data['link_delete']+ '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>&nbsp;';
381
                        }
382
                        if(allowView && data['link_view']) {
383
                            s = s + '<button class="btn btn-default btn-view" data-href="' + data['link_view']+ '" data-toggle="tooltip" title="LABEL_VIEW"><i class="fa fa-external-link"></i> LABEL_VIEW </button>&nbsp;';
384
                        }
385
                        return s;
386
                    }
387
                }
388
              ],
389
        });
390
 
391
 
392
 
393
 
394
        var validator = $('#form').validate({
395
            debug: true,
396
            onclick: false,
397
            onkeyup: false,
398
            ignore: [],
399
            rules: {
400
                'first_name': {
401
                    required: true,
402
                    maxlength: 128,
403
                },
404
                'last_name': {
405
                    required: true,
406
                    maxlength: 128,
407
                },
408
                'corporate_email': {
409
                    required: true,
410
                    maxlength: 250,
411
                    email: true,
412
 
413
                },
414
                'company': {
415
                    required: true,
416
                    maxlength: 128,
417
                },
418
                'position': {
419
                    required: true,
420
                    maxlength: 128,
421
                },
422
                'country': {
423
                    required: true,
424
                    maxlength: 128,
425
                },
426
                'state': {
427
                    required: false,
428
                    maxlength: 128,
429
                },
430
                'city': {
431
                    required: false,
432
                    maxlength: 128,
433
                },
434
                'personal_email': {
435
                    required: false,
436
                    maxlength: 128,
437
                    email: true,
438
                },
439
                'phone': {
440
                    required: false,
441
                    maxlength: 25,
442
                    isIntlPhoneNumber: true,
443
                },
444
                'phone_extension': {
445
                    required: false,
446
                    maxlength: 5,
447
                },
448
                'celular': {
449
                    required: false,
450
                    maxlength: 25,
451
                    isIntlPhoneNumber: true,
452
                },
453
                'whatsapp': {
454
                    required: false,
455
                    maxlength: 25,
456
                    isIntlPhoneNumber: true,
457
                },
458
                'linkedin': {
459
                    required: false,
460
                    maxlength: 256,
461
                    url: true,
462
                },
463
            },
464
            submitHandler: function(form)
465
            {
466
                data = {
467
                    first_name :  $('#form #first_name').val(),
468
                    last_name :  $('#form #last_name').val(),
469
                    corporate_email :  $('#form #corporate_email').val(),
470
                    company :  $('#form #company').val(),
471
                    position :  $('#form #position').val(),
472
                    country :  $('#form #country').val(),
473
                    state :  $('#form #state').val(),
474
                    city :  $('#form #city').val(),
475
                    personal_email :  $('#form #personal_email').val(),
476
                    phone :  $('#form #phone').intlTelInput('getNumber'),
477
                    phone_extension :  $('#form #phone_extension').val(),
478
                    celular :  $('#form #celular').intlTelInput('getNumber'),
479
                    whatsapp :  $('#form #whatsapp').intlTelInput('getNumber'),
480
                    linkedin :  $('#form #linkedin').val(),
481
                };
482
 
483
                $('#modal .btn-primary').attr('disabled', true)
484
                $.ajax({
485
                    'dataType'  : 'json',
486
                    'accept'    : 'application/json',
487
                    'method'    : 'post',
488
                    'url'       :  $('#form').attr('action'),
489
                    'data'      :  data
490
                }).done(function(response) {
491
                    NProgress.start();
492
                    if(response['success']) {
493
                        $.fn.showSuccess(response['data']);
494
 
495
                        $('#form-row').hide();
496
                        $('#listing-row').show();
497
 
498
 
499
 
500
                        gridTable.api().ajax.reload(null, false);
501
                    } else {
502
                        validator.resetForm();
503
                        if(jQuery.type(response['data']) == 'string') {
504
                            $.fn.showError(response['data']);
505
                        } else  {
506
                            $.each(response['data'], function( fieldname, errors ) {
507
                                $.fn.showFormErrorValidator('#form #' + fieldname, errors);
508
                            });
509
                        }
510
                    }
511
                }).fail(function( jqXHR, textStatus, errorThrown) {
512
                    $.fn.showError(textStatus);
513
                }).always(function() {
514
                    NProgress.done();
515
                    $('#modal .btn-primary').removeAttr('disabled')
516
                });
517
                return false;
518
            },
519
            invalidHandler: function(form, validator) {
520
 
521
            }
522
        });
523
 
524
        var validatorInteraction = $('#form-interaction').validate({
525
            debug: true,
526
            onclick: false,
527
            onkeyup: false,
528
            ignore: [],
529
            rules: {
530
                'notes': {
531
                    required: true,
532
                },
533
                'interaction_type_id': {
534
                    required: true,
535
 
536
                },
537
            },
538
            submitHandler: function(form)
539
            {
540
 
541
                $.ajax({
542
                    'dataType'  : 'json',
543
                    'accept'    : 'application/json',
544
                    'method'    : 'post',
545
                    'url'       :  $('#form-interaction').attr('action'),
546
                    'data'      :  $('#form-interaction').serialize()
547
                }).done(function(response) {
548
                    NProgress.start();
549
                    if(response['success']) {
550
                        $.fn.showSuccess(response['data']);
551
 
552
                        $('#modal-interaction').modal('hide');
553
 
554
 
555
                        $.fn.loadInteractions();
556
                        $.fn.loadLogs();
557
                    } else {
558
                        validator.resetForm();
559
                        if(jQuery.type(response['data']) == 'string') {
560
                            $.fn.showError(response['data']);
561
                        } else  {
562
                            $.each(response['data'], function( fieldname, errors ) {
563
                                $.fn.showFormErrorValidator('#form-interaction #' + fieldname, errors);
564
                            });
565
                        }
566
                    }
567
                }).fail(function( jqXHR, textStatus, errorThrown) {
568
                    $.fn.showError(textStatus);
569
                }).always(function() {
570
                    NProgress.done();
571
 
572
                });
573
                return false;
574
            },
575
            invalidHandler: function(form, validator) {
576
 
577
            }
578
        });
579
 
580
        $('body').on('click', 'button.btn-add-interaction', function(e) {
581
            e.preventDefault();
582
 
583
            $('#form-interaction').attr('action', linkInteractionsAdd);
584
            $('#form-interaction #notes').val('');
585
            $('#form-interaction #status').val('');
586
 
587
            validator.resetForm();
588
            $('#modal-interaction').modal('show');
589
        });
590
 
591
 
592
        $('body').on('click', 'button.btn-cancel-interaction', function(e) {
593
            e.preventDefault();
594
            $('#modal-interaction').modal('hide');
595
        });
596
 
597
        $('body').on('click', 'button.btn-delete-interaction', function(e) {
598
            e.preventDefault();
599
            var action = $(this).data('href');
600
            NProgress.start();
601
            $.ajax({
602
                'dataType'  : 'json',
603
                'accept'    : 'application/json',
604
                'method'    : 'post',
605
                'url'       :  action,
606
            }).done(function(response) {
607
                if(response['success']) {
608
                    $.fn.showSuccess(response['data']);
609
 
610
                    $.fn.loadLogs();
611
                    $.fn.loadInteractions();
612
                } else {
613
                    $.fn.showError(response['data']);
614
                }
615
            }).fail(function( jqXHR, textStatus, errorThrown) {
616
                $.fn.showError(textStatus);
617
            }).always(function() {
618
                NProgress.done();
619
            });
620
 
621
        });
622
 
623
 
624
        $('body').on('click', 'button.btn-add', function(e) {
625
            e.preventDefault();
626
 
627
            $('span[id="form-title"]').html('LABEL_ADD');
628
            $('#form').attr('action', '$routeAdd');
629
            $('#form #first_name').val('');
630
            $('#form #last_name').val('');
631
            $('#form #corporate_email').val('');
632
            $('#form #company').val('');
633
            $('#form #position').val('');
634
            $('#form #country').val('');
635
            $('#form #state').val('');
636
            $('#form #city').val('');
637
            $('#form #personal_email').val('');
638
            $('#form #phone').intlTelInput('setNumber', '');
639
            $('#form #phone_extension').val('');
640
            $('#form #celular').intlTelInput('setNumber', '');
641
            $('#form #whatsapp').intlTelInput('setNumber', '');
642
            $('#form #linkedin').val('');
643
 
644
            validator.resetForm();
645
 
646
 
647
            $('#listing-row').hide();
648
            $('#form-row').show();
649
 
650
        });
651
 
652
        $('body').on('click', 'button.btn-edit', function(e) {
653
            e.preventDefault();
654
            NProgress.start();
655
            var action = $(this).data('href');
656
 
657
            $.ajax({
658
                'dataType'  : 'json',
659
                'method'    : 'get',
660
                'url'       :  action,
661
            }).done(function(response) {
662
                if(response['success']) {
663
 
664
                    $('span[id="form-title"]').html('LABEL_EDIT');
665
                    $('#form').attr('action', action);
666
                    $('#form #first_name').val(response['data']['first_name']);
667
                    $('#form #last_name').val(response['data']['last_name']);
668
                    $('#form #corporate_email').val(response['data']['corporate_email']);
669
                    $('#form #company').val(response['data']['company']);
670
                    $('#form #position').val(response['data']['position']);
671
                    $('#form #country').val(response['data']['country']);
672
                    $('#form #state').val(response['data']['state']);
673
                    $('#form #city').val(response['data']['city']);
674
                    $('#form #personal_email').val(response['data']['personal_email']);
675
                    $('#form #phone').intlTelInput('setNumber', response['data']['phone']);
676
                    $('#form #phone_extension').val(response['data']['phone_extension']);
677
                    $('#form #celular').intlTelInput('setNumber', response['data']['celular']);
678
                    $('#form #whatsapp').intlTelInput('setNumber', response['data']['whatsapp']);
679
                    $('#form #linkedin').val(response['data']['linkedin']);
680
 
681
                    validator.resetForm();
682
 
683
 
684
                    $('#listing-row').hide();
685
                    $('#form-row').show();
686
                } else {
687
                    $.fn.showError(response['data']);
688
                }
689
            }).fail(function( jqXHR, textStatus, errorThrown) {
690
                $.fn.showError(textStatus);
691
            }).always(function() {
692
                NProgress.done();
693
            });
694
        });
695
 
696
 
697
        $('body').on('click', 'a.class-btn-log-previous', function(e) {
698
            e.preventDefault();
699
 
700
            if( pageLogs  > 1) {
701
                pageLogs  =  pageLogs  - 1;
702
                $.fn.loadLogs();
703
 
704
            }
705
        });
706
 
707
        $('body').on('click', 'a.class-btn-log-next', function(e) {
708
            e.preventDefault();
709
            pageLogs  =  pageLogs  + 1;
710
             $.fn.loadLogs();
711
        });
712
 
713
        $('body').on('click', 'a.class-btn-interaction-previous', function(e) {
714
            e.preventDefault();
715
 
716
            if( pageInteractions  > 1) {
717
                pageInteractions  =  v  - 1;
718
                $.fn.loadInteractions();
719
 
720
            }
721
        });
722
 
723
        $('body').on('click', 'a.class-btn-interaction-next', function(e) {
724
            e.preventDefault();
725
            pageInteractions  =  pageInteractions  + 1;
726
             $.fn.loadInteractions();
727
        });
728
 
729
        $('body').on('click', 'button.btn-view', function(e) {
730
            e.preventDefault();
731
            NProgress.start();
732
            var action = $(this).data('href');
733
 
734
            $.ajax({
735
                'dataType'  : 'json',
736
                'method'    : 'get',
737
                'url'       :  action,
738
            }).done(function(response) {
739
                if(response['success']) {
740
 
741
 
742
                    $('#interactions-first_name').val(response['data']['first_name']);
743
                    $('#interactions-last_name').val(response['data']['last_name']);
744
                    $('#interactions-corporate_email').val(response['data']['corporate_email']);
745
                    $('#interactions-company').val(response['data']['company']);
746
                    $('#interactions-position').val(response['data']['position']);
747
                    $('#interactions-country').val(response['data']['country']);
748
                    $('#interactions-state').val(response['data']['state']);
749
                    $('#interactions-city').val(response['data']['city']);
750
                    $('#interactions-personal_email').val(response['data']['personal_email']);
751
                    $('#interactions-phone').val(response['data']['phone']);
752
                    $('#interactions-phone_extension').val(response['data']['phone_extension']);
753
                    $('#interactions-celular').val(response['data']['celular']);
754
                    $('#interactions-whatsapp').val(response['data']['whatsapp']);
755
                    $('#interactions-linkedin').val(response['data']['linkedin']);
756
 
757
                    linkInteractions = response['data']['link_interactions'];
758
                    linkInteractionsAdd = response['data']['link_interactions_add'];
759
                    linkLogs = response['data']['link_logs'];
760
 
761
                    pageInteractions = 0;
762
                    pageLogs = 0;
763
 
764
 
765
 
766
 
767
                    $.fn.loadLogs();
768
                    $.fn.loadInteractions();
769
 
770
 
771
 
772
                    $('#listing-row').hide();
773
                    $('#interactions-row').show();
774
                } else {
775
                    $.fn.showError(response['data']);
776
                }
777
            }).fail(function( jqXHR, textStatus, errorThrown) {
778
                $.fn.showError(textStatus);
779
            }).always(function() {
780
                NProgress.done();
781
            });
782
        });
783
 
784
        $('body').on('click', 'button.btn-refresh', function(e) {
785
            e.preventDefault();
786
            gridTable.api().ajax.reload(null, false);
787
        });
788
 
789
 
790
        $('body').on('click', 'button.btn-cancel', function(e) {
791
 
792
 
793
            e.preventDefault();
794
            $('#form-row').hide();
795
            $('#listing-row').show();
796
        });
797
 
798
        $('body').on('click', 'button.btn-close-view', function(e) {
799
 
800
 
801
            e.preventDefault();
802
            $('#interactions-row').hide();
803
            $('#listing-row').show();
804
        });
805
 
806
 
807
 
808
        $('#form #phone').intlTelInput({
809
            utilsScript: "$utilsScript",
810
            formatOnDisplay: true,
811
             separateDialCode: false,
812
        });
813
 
814
 
815
 
816
       $('#form #celular').intlTelInput({
817
            utilsScript: "$utilsScript",
818
            formatOnDisplay: true,
819
            separateDialCode: false,
820
        });
821
 
822
        $('#form #whatsapp').intlTelInput({
823
            utilsScript: "$utilsScript",
824
            formatOnDisplay: true,
825
            separateDialCode: false,
826
        });
827
 
15546 efrain 828
var validatorContactUpload = $('#form-contact-upload').validate({
829
        debug: true,
830
        onclick: false,
831
        onkeyup: false,
832
        onfocusout: false,
833
        ignore: [],
834
        rules: {
835
            'file' : {
836
                required: true,
837
                extension: 'xls|xlsx',
838
                accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel'
839
            },
840
        },
841
 
842
        submitHandler: function(form)
843
        {
844
            NProgress.start();
845
            var formdata = false;
846
            if (window.FormData){
847
                formdata = new FormData(form);
848
            }
849
            formdata.append('step','validation');
850
 
851
 
852
            $.ajax({
853
                'dataType'  : 'json',
854
                'accept'    : 'application/json',
855
                'method'    : 'post',
856
                'url'       :  '$routeUpload',
857
                'data'      :  formdata,
858
                'processData': false,
859
                'contentType': false,
860
            }).done(function(response) {
861
                if(response['success']) {
862
 
863
                    $('#table-upload-contacts-key').val(response['data']['key']);
864
                    $('#table-upload-contacts-topic').val(response['data']['topic']);
865
          			$('#table-upload-contacts-capsule').val(response['data']['capsule']);
866
 
867
                    $('#gridTableUploadContacts tbody').html($('#uploadContactTemplate').render(response['data']))
868
 
869
                    $('#modalContactUpload').modal('hide');
870
                    $('#modalContactUploadTable').modal('show');
871
 
872
 
873
 
874
                } else {
875
                    validatorContactUpload.resetForm();
876
                    if(jQuery.type(response['data']) == 'string') {
877
                        $.fn.showError(response['data']);
878
                    } else  {
879
                        $.each(response['data'], function( fieldname, errors ) {
880
                            $.fn.showFormErrorValidator('#form-contact-upload #' + fieldname, errors);
881
                        });
882
                    }
883
                }
884
            }).fail(function( jqXHR, textStatus, errorThrown) {
885
                $.fn.showError(textStatus);
886
            }).always(function() {
887
 
888
                NProgress.done();
889
            });
890
            return false;
891
        },
892
        invalidHandler: function(form, validator) {
893
 
894
        }
15399 efrain 895
    });
15546 efrain 896
 
897
 
898
    $('body').on('click', 'button.btn-upload', function(e) {
899
        e.preventDefault();
900
 
901
        $('#form-contact-upload #file').fileinput('reset');
902
        $('#form-contact-upload #file').val('');
903
 
904
        $('#modalContactUpload').modal('show');
905
    });
906
 
907
 
908
    $('#form-contact-upload #file').fileinput({
909
        theme: 'fa',
910
        language: 'es',
911
        showUpload: false,
912
        dropZoneEnabled: false,
913
        maxFileCount: 1,
914
        allowedFileExtensions: ['xls', 'xlsx'],
915
    });
916
 
917
    $('body').on('click', 'button.btn-upload', function(e) {
918
        e.preventDefault();
919
 
920
        $('#form-contact-upload #file').fileinput('reset');
921
        $('#form-contact-upload #file').val('');
922
 
923
        $('#modalContactUpload').modal('show');
924
    });
925
 
926
    $('body').on('click', 'button.btn-upload-contacts-step2', function(e) {
927
        e.preventDefault();
928
        NProgress.start();
929
 
930
        $.ajax({
931
            'dataType'  : 'json',
932
            'accept'    : 'application/json',
933
            'method'    : 'post',
934
            'url'       : '$routeUpload',
935
            'data'      :  {
936
                'step' : 'process',
937
                'key' : $('#table-upload-contacts-key').val(),
938
            }
939
        }).done(function(response) {
940
            if(response['success']) {
941
 
942
                var s = response['data']['new_contacts'] + ' LABEL_NEW_CONTACTS <br>' +
943
                response['data']['error_contacts'] + ' LABEL_ERROR_CONTACTS <br>' +
944
                response['data']['duplicate_contacts'] + ' LABEL_DUPLICATE_CONTACTS <br>';
945
 
946
 
947
 
948
                $.fn.showSuccess(s);
949
 
950
                 gridTable.api().ajax.reload(null, false);
951
                $('#modalContactUploadTable').modal('hide');
952
            } else {
953
                $.fn.showError(response['data']);
954
            }
955
        }).fail(function( jqXHR, textStatus, errorThrown) {
956
            $.fn.showError(textStatus);
957
        }).always(function() {
958
            NProgress.done();
959
        });
960
        return false;
961
    });
962
 
963
 
964
    });
15399 efrain 965
JS;
966
$this->inlineScript()->captureEnd();
967
?>
968
 
969
 
970
 
971
 
15532 stevensc 972
<section class="content" id="listing-row">
15399 efrain 973
    <div class="container-fluid">
974
        <div class="row">
975
            <div class="col-12">
976
                <div class="card">
15532 stevensc 977
                    <div class="card-header">
978
                        <h2>LABEL_CONTACTS</h2>
979
                    </div>
15399 efrain 980
                    <div class="card-body">
981
                        <table id="gridTable" class="table table-striped table-hover">
982
                            <thead>
983
                                <tr>
984
                                    <th>LABEL_FIRST_NAME</th>
985
                                    <th>LABEL_LAST_NAME</th>
986
                                    <th>LABEL_CORPORATE_EMAIL</th>
15625 anderson 987
                                    <th>LABEL_COMPANY</th>
15399 efrain 988
                                    <th>LABEL_ACTIONS</th>
989
                                </tr>
990
                            </thead>
991
                            <tbody>
992
                            </tbody>
993
                        </table>
994
                    </div>
995
                    <div class="card-footer clearfix">
996
                        <div style="float:right;">
997
                            <button type="button" class="btn btn-info btn-refresh"><i class="fa fa-refresh"></i> LABEL_REFRESH </button>
15624 anderson 998
                            <?php if ($allowUpload) : ?>
999
                                <button type="button" class="btn btn-primary btn-upload"><i class="fa fa-upload"></i> LABEL_UPLOAD </button>
1000
                            <?php endif; ?>
15399 efrain 1001
                            <?php if ($allowAdd) : ?>
15624 anderson 1002
                                <button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i> LABEL_ADD </button>
15399 efrain 1003
                            <?php endif; ?>
1004
                        </div>
1005
                    </div>
1006
                </div>
1007
            </div>
1008
        </div>
1009
    </div>
1010
</section>
1011
 
1012
<section class="content" id="form-row" style="display: none">
1013
    <div class="container-fluid">
1014
        <div class="row">
1015
            <div class="col-12">
1016
                <div class="card">
1017
 
15532 stevensc 1018
                    <div class="card-header">
1019
                        <h2>LABEL_CONTACT - <span id="form-title"></span></h2>
1020
                    </div>
15399 efrain 1021
                    <div class="card-body">
15532 stevensc 1022
                        <?php
1023
                        $form = $this->form;
1024
                        $form->setAttributes([
1025
                            'method' => 'post',
1026
                            'action' => $routeAdd,
1027
                            'name' => 'form',
1028
                            'id' => 'form',
1029
                        ]);
1030
                        $form->prepare();
1031
                        echo $this->form()->openTag($form);
1032
                        ?>
1033
                        <div class="row">
1034
                            <div class="col-sm-6">
1035
                                <div class="form-group">
1036
                                    <?php
1037
                                    $label = 'LABEL_FIRST_NAME';
1038
                                    $field = 'first_name';
1039
 
1040
                                    $element = $form->get($field);
1041
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1042
                                    $element->setOptions(['label' => $label]);
1043
                                    echo $this->formLabel($element);
1044
                                    echo $this->formText($element);
1045
                                    ?>
15399 efrain 1046
                                </div>
15532 stevensc 1047
                            </div>
1048
                            <div class="col-sm-6">
1049
                                <div class="form-group">
1050
                                    <?php
15399 efrain 1051
                                    $label = 'LABEL_LAST_NAME';
1052
                                    $field = 'last_name';
15532 stevensc 1053
 
15399 efrain 1054
                                    $element = $form->get($field);
1055
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1056
                                    $element->setOptions(['label' => $label]);
1057
                                    echo $this->formLabel($element);
1058
                                    echo $this->formText($element);
1059
                                    ?>
15532 stevensc 1060
                                </div>
15399 efrain 1061
                            </div>
15532 stevensc 1062
                        </div>
1063
                        <div class="row">
1064
                            <div class="col-sm-6">
1065
                                <div class="form-group">
1066
                                    <?php
1067
 
1068
                                    $label = 'LABEL_CORPORATE_EMAIL';
1069
                                    $field = 'corporate_email';
1070
 
15399 efrain 1071
                                    $element = $form->get($field);
1072
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1073
                                    $element->setOptions(['label' => $label]);
1074
                                    echo $this->formLabel($element);
1075
                                    echo $this->formText($element);
1076
                                    ?>
15532 stevensc 1077
                                </div>
15399 efrain 1078
                            </div>
15532 stevensc 1079
                            <div class="col-sm-6">
1080
                                <div class="form-group">
1081
                                    <?php
1082
                                    $label = 'LABEL_COMPANY';
1083
                                    $field = 'company';
1084
 
15399 efrain 1085
                                    $element = $form->get($field);
1086
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1087
                                    $element->setOptions(['label' => $label]);
1088
                                    echo $this->formLabel($element);
1089
                                    echo $this->formText($element);
1090
                                    ?>
15532 stevensc 1091
                                </div>
15399 efrain 1092
                            </div>
15532 stevensc 1093
                        </div>
1094
                        <div class="row">
1095
                            <div class="col-sm-6">
1096
                                <div class="form-group">
1097
                                    <?php
1098
                                    $label = 'LABEL_POSITION';
1099
                                    $field = 'position';
1100
 
1101
 
15399 efrain 1102
                                    $element = $form->get($field);
1103
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1104
                                    $element->setOptions(['label' => $label]);
1105
                                    echo $this->formLabel($element);
1106
                                    echo $this->formText($element);
1107
                                    ?>
15532 stevensc 1108
                                </div>
15399 efrain 1109
                            </div>
15532 stevensc 1110
                            <div class="col-sm-6">
1111
                                <div class="form-group">
1112
                                    <?php
1113
                                    $label = 'LABEL_COUNTRY';
15399 efrain 1114
                                    $field = 'country';
1115
                                    $element = $form->get($field);
1116
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1117
                                    $element->setOptions(['label' => $label]);
1118
                                    echo $this->formLabel($element);
1119
                                    echo $this->formText($element);
1120
                                    ?>
15532 stevensc 1121
                                </div>
15399 efrain 1122
                            </div>
15532 stevensc 1123
                        </div>
1124
                        <div class="row">
1125
                            <div class="col-sm-6">
1126
                                <div class="form-group">
1127
                                    <?php
1128
                                    $label = 'LABEL_STATE';
1129
                                    $field = 'state';
15399 efrain 1130
 
15532 stevensc 1131
 
15399 efrain 1132
                                    $element = $form->get($field);
1133
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1134
                                    $element->setOptions(['label' => $label]);
1135
                                    echo $this->formLabel($element);
1136
                                    echo $this->formText($element);
1137
                                    ?>
15532 stevensc 1138
                                </div>
15399 efrain 1139
                            </div>
15532 stevensc 1140
                            <div class="col-sm-6">
1141
                                <div class="form-group">
1142
                                    <?php
1143
                                    $label = 'LABEL_CITY';
1144
                                    $field = 'city';
1145
 
15399 efrain 1146
                                    $element = $form->get($field);
1147
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1148
                                    $element->setOptions(['label' => $label]);
1149
                                    echo $this->formLabel($element);
1150
                                    echo $this->formText($element);
1151
                                    ?>
15532 stevensc 1152
                                </div>
15399 efrain 1153
                            </div>
15532 stevensc 1154
                        </div>
1155
                        <div class="row">
1156
                            <div class="col-sm-6">
1157
                                <div class="form-group">
1158
                                    <?php
1159
                                    $label = 'LABEL_PHONE';
1160
                                    $field = 'phone';
1161
 
1162
 
1163
 
1164
 
15399 efrain 1165
                                    $element = $form->get($field);
1166
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1167
                                    $element->setOptions(['label' => $label]);
1168
                                    echo $this->formLabel($element);
1169
                                    echo '<br>';
1170
                                    echo $this->formText($element);
1171
                                    ?>
15532 stevensc 1172
                                </div>
15399 efrain 1173
                            </div>
15532 stevensc 1174
                            <div class="col-sm-6">
1175
                                <div class="form-group">
1176
                                    <?php
1177
                                    $label = 'LABEL_PHONE_EXTENSION';
1178
                                    $field = 'phone_extension';
1179
 
1180
 
15399 efrain 1181
                                    $element = $form->get($field);
1182
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1183
                                    $element->setOptions(['label' => $label]);
15532 stevensc 1184
 
15399 efrain 1185
                                    echo $this->formLabel($element);
15532 stevensc 1186
 
15399 efrain 1187
                                    echo $this->formText($element);
1188
                                    ?>
15532 stevensc 1189
                                </div>
15399 efrain 1190
                            </div>
15532 stevensc 1191
                        </div>
15399 efrain 1192
                        <div class="row">
15532 stevensc 1193
                            <div class="col-sm-6">
1194
                                <div class="form-group">
1195
                                    <?php
1196
                                    $label = 'LABEL_PERSONAL_EMAIL';
1197
                                    $field = 'personal_email';
1198
 
1199
 
1200
 
1201
 
15399 efrain 1202
                                    $element = $form->get($field);
1203
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1204
                                    $element->setOptions(['label' => $label]);
1205
                                    echo $this->formLabel($element);
1206
                                    echo $this->formText($element);
1207
                                    ?>
15532 stevensc 1208
                                </div>
15399 efrain 1209
                            </div>
15532 stevensc 1210
                            <div class="col-sm-6">
1211
                                <div class="form-group">
1212
                                    <?php
1213
                                    $label = 'LABEL_CELULAR';
1214
                                    $field = 'celular';
1215
 
15399 efrain 1216
                                    $element = $form->get($field);
1217
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1218
                                    $element->setOptions(['label' => $label]);
1219
                                    echo $this->formLabel($element);
1220
                                    echo '<br>';
1221
                                    echo $this->formText($element);
1222
                                    ?>
15532 stevensc 1223
                                </div>
15399 efrain 1224
                            </div>
15532 stevensc 1225
                        </div>
15399 efrain 1226
                        <div class="row">
15532 stevensc 1227
                            <div class="col-sm-6">
1228
                                <div class="form-group">
1229
                                    <?php
1230
                                    $label = 'LABEL_WHATSAPP';
1231
                                    $field = 'whatsapp';
15399 efrain 1232
 
1233
                                    $element = $form->get($field);
1234
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1235
                                    $element->setOptions(['label' => $label]);
1236
                                    echo $this->formLabel($element);
1237
                                    echo '<br>';
1238
                                    echo $this->formText($element);
1239
                                    ?>
15532 stevensc 1240
                                </div>
15399 efrain 1241
                            </div>
15532 stevensc 1242
                            <div class="col-sm-6">
1243
                                <div class="form-group">
1244
                                    <?php
1245
                                    $label = 'LABEL_LINKEDIN';
1246
                                    $field = 'linkedin';
1247
 
15399 efrain 1248
                                    $element = $form->get($field);
1249
                                    $element->setAttributes(['id' => $field, 'class' => 'form-control', 'class' => 'form-control']);
1250
                                    $element->setOptions(['label' => $label]);
1251
                                    echo $this->formLabel($element);
1252
                                    echo $this->formText($element);
1253
                                    ?>
15532 stevensc 1254
                                </div>
15399 efrain 1255
                            </div>
15532 stevensc 1256
 
1257
 
1258
 
1259
                        </div>
1260
 
15399 efrain 1261
                    </div>
1262
                    <div class="card-footer clearfix">
1263
                        <div style="float:right;">
1264
                            <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
15532 stevensc 1265
                            <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
15399 efrain 1266
                        </div>
1267
                    </div>
15532 stevensc 1268
                    <?php echo $this->form()->closeTag($form); ?>
15399 efrain 1269
                </div>
1270
            </div>
1271
        </div>
1272
    </div>
15532 stevensc 1273
</section>
15399 efrain 1274
 
1275
 
1276
 
15532 stevensc 1277
<section class="content" id="interactions-row" style="display: none">
15399 efrain 1278
    <div class="container-fluid">
15532 stevensc 1279
        <div class="row">
15399 efrain 1280
            <div class="col-12">
15532 stevensc 1281
                <h2>LABEL_CONTACT</h2>
15399 efrain 1282
            </div>
15532 stevensc 1283
        </div>
15399 efrain 1284
        <div class="row">
1285
            <div class="col-12">
1286
                <div class="card card-primary card-outline card-tabs">
15537 stevensc 1287
                    <div class="card-body p-0 pt-2">
15532 stevensc 1288
 
15538 stevensc 1289
                        <div class="row mx-0">
15532 stevensc 1290
                            <?php
1291
                            $fields = [
1292
                                'LABEL_FIRST_NAME' => 'interactions-first_name',
1293
                                'LABEL_LAST_NAME' => 'interactions-last_name',
1294
                                'LABEL_CORPORATE_EMAIL' => 'interactions-corporate_email',
1295
                                'LABEL_COMPANY' => 'interactions-company',
1296
                                'LABEL_POSITION' => 'interactions-position',
1297
                                'LABEL_COUNTRY' => 'interactions-country',
1298
                                'LABEL_STATE' => 'interactions-state',
1299
                                'LABEL_CITY' => 'interactions-city',
1300
                                'LABEL_PHONE' => 'interactions-phone',
1301
                                'LABEL_PHONE_EXTENSION' => 'interactions-phone_extension',
1302
                                'LABEL_PERSONAL_EMAIL' => 'interactions-personal_email',
1303
                                'LABEL_CELULAR' => 'interactions-celular',
1304
                                'LABEL_WHATSAPP' => 'interactions-whatsapp',
1305
                                'LABEL_LINKEDIN' => 'interactions-linkedin',
1306
 
1307
 
1308
                            ];
1309
                            foreach ($fields as $label => $field) :
1310
 
1311
                            ?>
1312
 
1313
                                <div class="col-sm-6">
1314
                                    <div class="form-group">
1315
                                        <label for="<?php echo $field ?>"><?php echo $label ?></label>
1316
                                        <input type="text" id="<?php echo $field ?>" class="form-control" value="" readonly="readonly" />
1317
                                    </div>
1318
                                </div>
1319
 
15399 efrain 1320
                            <?php endforeach; ?>
1321
 
15532 stevensc 1322
                        </div>
1323
 
15539 stevensc 1324
                        <ul class="nav nav-tabs border-bottom-0" id="custom-tabs-three-tab" role="tablist">
15532 stevensc 1325
                            <li class="nav-item">
15535 stevensc 1326
                                <a class="nav-link px-2 active" id="discovery-contacts-tabs-interactions-tab" data-toggle="pill" href="#discovery-contacts-tabs-interactions" role="tab" aria-controls="discovery-contacts-tabs-interactions" aria-selected="false">LABEL_INTERACTIONS</a>
15532 stevensc 1327
                            </li>
1328
                            <li class="nav-item">
15535 stevensc 1329
                                <a class="nav-link px-2" id="discovery-contacts-tabs-logs-tab" data-toggle="pill" href="#discovery-contacts-tabs-logs" role="tab" aria-controls="discovery-contacts-tabs-logs" aria-selected="false">LABEL_LOGS</a>
15532 stevensc 1330
                            </li>
1331
                        </ul>
1332
                    </div>
1333
 
15536 stevensc 1334
                    <div class="card-body p-0">
15532 stevensc 1335
                        <div class="tab-content" id="custom-tabs-three-tabContent">
1336
                            <div class="tab-pane fade show active" id="discovery-contacts-tabs-interactions" role="tabpanel" aria-labelledby="discovery-contacts-tabs-interactions-tab">
1337
                                <table class="table table-striped table-hover">
1338
                                    <thead>
15399 efrain 1339
                                        <tr>
1340
                                            <th>LABEL_FIRST_NAME</th>
1341
                                            <th>LABEL_LAST_NAME</th>
1342
                                            <th>LABEL_EMAIL</th>
1343
                                            <th>LABEL_DATE</th>
1344
                                            <th>LABEL_ACTIONS</th>
1345
                                        </tr>
1346
                                    </thead>
1347
                                    <tbody id="grid-discovery-contacts-tabs-interactions">
1348
                                    </tbody>
15532 stevensc 1349
                                </table>
1350
                                <br>
1351
                                <ul id="discovery-contacts-pagination-interactions" class="pagination pagination-sm m-0 float-right">
1352
 
1353
                                </ul>
1354
 
1355
 
1356
 
1357
                            </div>
1358
                            <div class="tab-pane fade" id="discovery-contacts-tabs-logs" role="tabpanel" aria-labelledby="discovery-contacts-tabs-logs-tab">
1359
                                <table class="table table-striped table-hover">
1360
                                    <thead>
15399 efrain 1361
                                        <tr>
1362
                                            <th>LABEL_FIRST_NAME</th>
1363
                                            <th>LABEL_LAST_NAME</th>
1364
                                            <th>LABEL_EMAIL</th>
1365
                                            <th>LABEL_ACTIVITY</th>
1366
                                        </tr>
1367
                                    </thead>
1368
                                    <tbody id="grid-discovery-contacts-tabs-logs">
1369
                                    </tbody>
15532 stevensc 1370
                                </table>
1371
                                <br>
1372
                                <ul id="discovery-contacts-pagination-logs" class="pagination pagination-sm m-0 float-right">
15399 efrain 1373
 
15532 stevensc 1374
                                </ul>
15399 efrain 1375
 
15532 stevensc 1376
                            </div>
1377
                        </div>
1378
                    </div>
1379
 
1380
 
1381
 
15399 efrain 1382
                    <div class="card-footer clearfix">
1383
                        <div style="float:right;">
15532 stevensc 1384
                            <button type="button" class="btn btn-primary btn-close-view"><i class="fa fa-chevron-left"></i> LABEL_BACK </button>
15399 efrain 1385
                            <?php if ($allowInteractionAdd) : ?>
1386
                                <button type="button" class="btn btn-primary btn-add-interaction"><i class="fa fa-plus"></i> LABEL_ADD </button>
1387
                            <?php endif; ?>
1388
                        </div>
1389
                    </div>
1390
                </div>
1391
            </div>
1392
        </div>
1393
    </div>
1394
</section>
1395
 
1396
<!-- The Modal -->
1397
<div class="modal" id="modal-interaction">
1398
    <div class="modal-dialog  modal-xl">
1399
        <div class="modal-content">
1400
 
1401
            <!-- Modal Header -->
1402
            <div class="modal-header">
1403
                <h4 class="modal-title">LABEL_INTERACTION</h4>
1404
                <button type="button" class="close" data-dismiss="modal">&times;</button>
1405
            </div>
1406
 
1407
            <!-- Modal body -->
1408
            <div class="modal-body">
1409
                <?php
1410
                $form = $this->formInteraction;
1411
                $form->setAttributes([
1412
                    'method'    => 'post',
1413
                    'name'      => 'form-interaction',
1414
                    'id'        => 'form-interaction'
1415
                ]);
1416
 
1417
                $form->prepare();
1418
                echo $this->form()->openTag($form);
1419
                ?>
15532 stevensc 1420
                <div class="form-group">
15399 efrain 1421
                    <?php
1422
                    $element = $form->get('interaction_type_id');
1423
                    $element->setOptions(['label' => 'LABEL_INTERACTION_TYPE']);
1424
                    $element->setAttributes(['class' => 'form-control']);
15532 stevensc 1425
 
15399 efrain 1426
                    echo $this->formLabel($element);
1427
                    echo $this->formSelect($element);
1428
                    ?>
1429
                </div>
15532 stevensc 1430
 
15399 efrain 1431
                <div class="form-group">
1432
                    <?php
1433
                    $element = $form->get('notes');
1434
                    $element->setOptions(['label' => 'LABEL_NOTES']);
1435
                    $element->setAttributes(['class' => 'form-control']);
1436
 
1437
                    echo $this->formLabel($element);
1438
                    echo $this->formTextArea($element);
1439
                    ?>
1440
                </div>
15532 stevensc 1441
 
15399 efrain 1442
                <div class="text-right">
1443
                    <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
1444
                    <button type="button" class="btn btn-light btn-cancel-interaction">LABEL_CANCEL</button>
1445
                </div>
1446
                <?php echo $this->form()->closeTag($form); ?>
1447
            </div>
1448
 
1449
 
1450
        </div>
1451
    </div>
1452
</div>
1453
 
1454
 
15546 efrain 1455
<!-- The Modal -->
1456
<div class="modal" id="modalContactUpload">
15624 anderson 1457
    <div class="modal-dialog  modal-xl">
1458
        <div class="modal-content">
15399 efrain 1459
 
15546 efrain 1460
            <!-- Modal Header -->
15624 anderson 1461
            <div class="modal-header">
1462
                <h4 class="modal-title">LABEL_UPLOAD</h4>
1463
                <button type="button" class="close" data-dismiss="modal">&times;</button>
1464
            </div>
15546 efrain 1465
 
1466
            <!-- Modal body -->
15624 anderson 1467
            <div class="modal-body">
1468
                <?php
1469
                $form = $this->contactUploadForm;
1470
                $form->setAttributes([
1471
                    'method'    => 'post',
1472
                    'name'      => 'form-contact-upload',
1473
                    'id'        => 'form-contact-upload'
1474
                ]);
15546 efrain 1475
 
15624 anderson 1476
                $form->prepare();
1477
                echo $this->form()->openTag($form);
1478
                ?>
1479
 
1480
                <div class="form-group">
1481
 
1482
 
1483
                    <?php
1484
                    $element = $form->get('file');
1485
                    $element->setOptions(['label' => 'LABEL_EXCEL']);
1486
                    echo $this->formLabel($element);
1487
                    ?>
1488
                    <div class="file-loading">
1489
                        <?php
15546 efrain 1490
                        $element->setAttributes(['class' => 'form-control', 'accept' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel']);
1491
                        echo $this->formFile($element);
1492
                        ?>
15624 anderson 1493
                    </div>
1494
                </div>
15546 efrain 1495
 
1496
 
1497
 
15624 anderson 1498
                <div class="form-group">
1499
                    <button type="submit" class="btn btn-primary">LABEL_UPLOAD</button>
1500
                    <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
1501
                </div>
1502
                <?php echo $this->form()->closeTag($form); ?>
1503
            </div>
1504
 
15546 efrain 1505
            <!-- Modal footer -->
15624 anderson 1506
            <div class="modal-footer">
1507
                <button type="button" class="btn btn-danger" data-dismiss="modal">LABEL_CLOSE</button>
1508
            </div>
15546 efrain 1509
 
15624 anderson 1510
        </div>
1511
    </div>
1512
</div>
15546 efrain 1513
 
1514
 
1515
 
1516
<!-- The Modal -->
1517
<div class="modal" id="modalContactUploadTable">
15624 anderson 1518
    <div class="modal-dialog modal-xl">
1519
        <div class="modal-content">
15546 efrain 1520
 
1521
            <!-- Modal Header -->
15624 anderson 1522
            <div class="modal-header">
1523
                <h4 class="modal-title">LABEL_CONTACTS</h4>
1524
                <button type="button" class="close" data-dismiss="modal">&times;</button>
1525
            </div>
15546 efrain 1526
 
1527
            <!-- Modal body -->
15624 anderson 1528
            <div class="modal-body">
1529
                <form>
1530
                    <input type="hidden" name="table-upload-contacts-key" id="table-upload-contacts-key">
1531
                </form>
1532
 
1533
 
1534
 
1535
                <div id="table-wrapper">
1536
                    <table id="gridTableUploadContacts" class="table table-bordered table-hover">
1537
                        <thead>
1538
                            <tr>
1539
                                <th>LABEL_FIRST_NAME</th>
1540
                                <th>LABEL_LAST_NAME</th>
1541
                                <th>LABEL_EMAIL</th>
1542
                                <th>LABEL_CORPORATE_EMAIL</th>
15546 efrain 1543
                                <th>LABEL_COMPANY</th>
1544
                                <th>LABEL_POSITION</th>
1545
                                <th>LABEL_COUNTRY</th>
1546
                                <th>LABEL_STATE</th>
1547
                                <th>LABEL_CITY</th>
1548
                                <th>LABEL_PHONE</th>
1549
                                <th>LABEL_PHONE_EXTENSION</th>
1550
                                <th>LABEL_PERSONAL_EMAIL</th>
1551
                                <th>LABEL_CELULAR</th>
1552
                                <th>LABEL_WHATSAPP</th>
1553
                                <th>LABEL_LINKEDIN</th>
1554
 
15624 anderson 1555
                            </tr>
1556
                        </thead>
1557
                        <tbody>
1558
                        </tbody>
1559
                    </table>
1560
                </div>
15546 efrain 1561
 
15624 anderson 1562
            </div>
1563
 
15546 efrain 1564
            <!-- Modal footer -->
15624 anderson 1565
            <div class="modal-footer">
1566
                <button type="submit" class="btn btn-primary btn-upload-contacts-step2">LABEL_SAVE</button>
1567
                <button type="button" class="btn btn-danger" data-dismiss="modal">LABEL_CLOSE</button>
1568
            </div>
15546 efrain 1569
 
15624 anderson 1570
        </div>
1571
    </div>
1572
</div>
15546 efrain 1573
 
1574
 
15399 efrain 1575
<script id="interactionTemplate" type="text/x-jsrender">
1576
    {{for items}}
15532 stevensc 1577
    <tr>
1578
        <td>{{>first_name}}</td>
1579
        <td>{{>last_name}}</td>
1580
        <td>{{>email}}</td>
1581
        <td> {{>added_on}}</td>
1582
        <td>
1583
            <button class="btn btn-danger btn-delete-interaction" data-href="{{>link_delete}}" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>
1584
        </td>
1585
    </tr>
1586
    <tr>
1587
        <td colspan="2">
1588
            {{>name}}
1589
        </td>
1590
        <td colspan="3">
1591
            {{>notes}}
1592
        </td>
1593
    </tr>
15399 efrain 1594
    {{/for}}
1595
</script>
1596
 
1597
 
1598
<script id="logTemplate" type="text/x-jsrender">
1599
    {{for items}}
15532 stevensc 1600
    <tr>
1601
        <td>{{>first_name}}</td>
1602
        <td>{{>last_name}}</td>
1603
        <td>{{>email}}</td>
15533 stevensc 1604
        <td>
15534 stevensc 1605
            {{>activity}} -
1606
            {{>added_on}}
15532 stevensc 1607
        </td>
15533 stevensc 1608
    </tr>
15532 stevensc 1609
 
15533 stevensc 1610
    <tr>
1611
        <td>
1612
        </td>
1613
        <td>
1614
        </td>
1615
        <td>
1616
        </td>
1617
 
1618
        <td>
15532 stevensc 1619
            {{>details}}
1620
        </td>
15533 stevensc 1621
    </tr>
15532 stevensc 1622
 
15399 efrain 1623
    {{/for}}
1624
</script>
1625
 
15546 efrain 1626
 
1627
<script id="uploadContactTemplate" type="text/x-jsrender">
1628
    {{for items}}
1629
    <tr>
1630
        <td>{{>first_name}}</td>
1631
        <td>{{>last_name}}</td>
1632
        <td>{{>email_personal}}</td>
1633
        <td>{{>email_company}}</td>
1634
        <td>{{>company}}</td>
1635
        <td>{{>position}}</td>
1636
        <td>{{>country}}</td>
1637
        <td>{{>state}}</td>
1638
        <td>{{>city}}</td>
1639
        <td>{{>phone}}</td>
1640
        <td>{{>extension}}</td>
1641
        <td>{{>movil}}</td>
1642
        <td>{{>whatsapp}}</td>
1643
        <td>{{>linkedin}}</td>
1644
 
1645
    </tr>
1646
 
1647
 
1648
    {{/for}}
1649
</script>
1650
 
15399 efrain 1651
<script id="logPaginationTemplate" type="text/x-jsrender">
1652
    {{if has_previous_page}}
15532 stevensc 1653
    <li class="page-item"><a class="page-link class-btn-log-previous" href="#"> <i class="fa fa-chevron-left" aria-hidden="true"></i> LABEL_PREVIOUS </a></li>
15399 efrain 1654
    {{/if}}
1655
 
1656
    {{if has_next_page}}
15532 stevensc 1657
    <li class="page-item"><a class="page-link class-btn-log-next" href="#"> LABEL_NEXT <i class="fa fa-chevron-right" aria-hidden="true"></i> </a></li>
15399 efrain 1658
    {{/if}}
1659
</script>
1660
 
1661
<script id="interactionPaginationTemplate" type="text/x-jsrender">
1662
    {{if has_previous_page}}
15532 stevensc 1663
    <li class="page-item"><a class="page-link class-btn-interaction-previous" href="#"> <i class="fa fa-chevron-left" aria-hidden="true"></i> LABEL_PREVIOUS </a></li>
15399 efrain 1664
    {{/if}}
1665
 
1666
    {{if has_next_page}}
15532 stevensc 1667
    <li class="page-item"><a class="page-link class-btn-interaction-next" href="#"> LABEL_NEXT <i class="fa fa-chevron-right" aria-hidden="true"></i> </a></li>
15399 efrain 1668
    {{/if}}
1669
</script>