Viewing file: 1793de33707665487cfd75c73e66f0fa.php (28.77 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php $__env->startSection('title','Dynamic Campaign'); ?>
<?php $__env->startSection('extra-css'); ?>
<link rel="stylesheet" href="<?php echo e(asset('plugins/select2/css/select2.min.css')); ?>">
<link rel="stylesheet" href="<?php echo e(asset('plugins/ion-rangeslider/css/ion.rangeSlider.min.css')); ?>">
<link rel="stylesheet" href="<?php echo e(asset('plugins/daterangepicker/daterangepicker.css')); ?>">
<link rel="stylesheet" href="<?php echo e(asset('css/msg_overview.css')); ?>">
<style>
.select2-container--default .select2-selection--single {
min-height: 38px;
border-radius: 4px 0 0 4px;
}
.active {
margin: 0 auto;
background: #7181844d;
color: #121213;
border-radius: 5px;
}
.campaign_side_bar {
padding: 10px 20px;
}
.js-irs-2 {
display: none !important;
}
#range_5 {
display: none !important;
}
.irs-handle .single {
cursor: pointer !important;
}
.active_btn {
background: #ec0b0b !important;
border-color: inherit !important;
}
.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {
background-color: #d4d9da !important;
}
#custom_tabs_one_tabContent .tab-pane {
padding: 0px !important;
}
.campaign_side_bar {
cursor: not-allowed !important;
}
.response_value{
padding: 10px 0px 10px 20px;
cursor: pointer;
color: black !important;
border-bottom: 0.5px solid #e0e2e6;
}
#showResponse{
z-index: 99;
color: black;
overflow-y: auto;
border-radius: 5px;
position: absolute;
background: #f2efef;
top: 79%;
width: 95%;
left: 20px;
}
.from_type_btn.active{
background-color: rgb(5 187 201) !important;
border-color: rgb(5 187 201) !important;
color: white;
}
.daterangepicker.show-calendar{
top: 712px !important;
}
.loader-img-section img{
height: 100%;
width: 100%;
}
.loader-img-section{
height: 90px;
width: 90px;
margin: 0 auto;
}
.modal_content{
width: 100%;
}
</style>
<?php $__env->stopSection(); ?>
<?php $__env->startSection('content'); ?>
<!-- Main content -->
<section class="content">
<div class="row">
<div class="col-12 mx-auto col-sm-12 mt-3">
<div class="card">
<div class="card-header">
<h2 class="card-title"><?php echo app('translator')->get('customer.new_campaign'); ?>
<i data-toggle="tooltip" data-placement="right" class="fa fa-question-circle alert-tooltip"
title="Make sure before importing contact groups, you run cron jobs"></i>
</h2>
<a class="btn btn-info float-right"
href="<?php echo e(route('customer.dynamic.campaign')); ?>"><?php echo app('translator')->get('customer.back'); ?></a>
</div>
<form method="post" role="form" enctype="multipart/form-data" id="campaignForm" action="<?php echo e(route('customer.dynamic.campaign.store')); ?>">
<?php echo csrf_field(); ?>
<div class="card-body">
<div class="row">
<div class="col-sm-8">
<?php echo $__env->make('customer.dynamic_campaign.form', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>
<div class="form-group text-right">
<button type="button" id="send_schedule" class="btn btn-primary mr-2"><?php echo app('translator')->get('Send Schedule'); ?></button>
<button type="button" class="btn btn-primary submit_campaign_form"><?php echo app('translator')->get('Send Now'); ?></button>
</div>
</div>
<div class="col-md-4 col-4" id="mobileVersion">
<div class="iphone"
style="background-image: url('<?php echo e(asset('images/iphone6.png')); ?>')">
<div class="border">
<div class="responsive-html5-chat">
<form class="chat">
<span></span>
<div class="messages">
<div class="message">
<div class="myMessage"><p></p>
<date><b></b> 23.06.2023 14:30:7</date>
</div>
</div>
</div>
<input type="text" placeholder="Your message" disabled="">
<input type="submit" value="Send" disabled="">
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<!-- /.card -->
</div>
<!-- /.row -->
</section>
<!-- /.content -->
<!-- Modal -->
<div class="modal fade" id="scheduleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Schedule Date Time</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="form-group col-sm-6 col-6">
<label for="">Start Date</label>
<input name="start_date" value="<?php echo e(old('start_date')??(isset($campaign)??$campaign->start_date)); ?>" type='text' class="form-control datetimepicker date_range"/>
</div>
<div class="form-group col-sm-6 col-6">
<label for="">End Date</label>
<input name="end_date" value="<?php echo e(old('end_date')??(isset($campaign)??$campaign->end_date)); ?>" type='text' class="form-control datetimepicker date_range"/>
</div>
<div class="form-group col-sm-6 col-6 mt-2">
<label for="start_time">Start Time</label>
<input id="start_time" name="start_time" value="<?php echo e(old('start_time')??(isset($campaign)?$campaign->start_time:'')); ?>" type='time' class="form-control "/>
</div>
<div class="form-group col-sm-6 col-6 mt-2">
<label for="end_time">End Time</label>
<input id="end_time" max="23:59" name="end_time" value="<?php echo e(old('end_time')??(isset($campaign)?$campaign->end_time:'')); ?>" type='time' class="form-control"/>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary submit_campaign_form">Confirm</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="importCsvLoaderModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="text-center justify-content-center modal_content">
<div class="loader-img-section">
<img style="width: 100%; height: 100%;" src="<?php echo e(asset('images/loading-screen.gif')); ?>" alt="">
</div>
</div>
</div>
</div>
<?php $__env->stopSection(); ?>
<?php $__env->startSection('extra-scripts'); ?>
<script src="<?php echo e(asset('plugins/jquery-validation/jquery.validate.min.js')); ?>"></script>
<script src="<?php echo e(asset('plugins/select2/js/select2.full.min.js')); ?>"></script>
<script src="<?php echo e(asset('plugins/ion-rangeslider/js/ion.rangeSlider.min.js')); ?>"></script>
<script src="<?php echo e(asset('plugins/daterangepicker/moment.min.js')); ?>"></script>
<script src="<?php echo e(asset('plugins/daterangepicker/daterangepicker.js')); ?>"></script>
<script !src="">
"use strict";
let isLoading = false;
$.validator.addMethod("phone_number", function (value, element) {
return new RegExp(/^[0-9\-\+]{9,15}$/).test(value);
}, 'Invalid phone number');
$(document).on('click','#send_schedule', function (e){
$('#scheduleModal').modal('show');
$('input[name=check_schedule]').val('yes')
});
$(document).on('click','.submit_campaign_form', function (e){
$('#scheduleModal').modal('hide');
$('#campaignForm').submit();
});
$('#campaignForm').validate({
rules: {
title: {
required: true,
},
'from_number[]': {
required: true,
},
start_time: {
required: true,
},
end_time: {
required: true,
},
},
messages: {
title: {
required: 'Please enter campaign title',
},
'from_number[]': {
required: 'Please select an from number',
},
start_time: {
required: 'Please select campaign start time',
},
end_time: {
required: 'Please select campaign end time',
},
},
errorElement: 'span',
errorPlacement: function (error, element) {
error.addClass('invalid-feedback');
element.closest('.form-group').append(error);
},
highlight: function (element, errorClass, validClass) {
$(element).addClass('is-invalid');
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass('is-invalid');
}
});
$('#forward_to_dial_code,#contact_dial_code').select2();
$("#campaignToNumber").on('change', function (e) {
let id = $(this).val();
let contectCount = 0;
try {
$.ajax({
method: 'get',
url: '<?php echo e(route('customer.group.get.numbers')); ?>',
data: {id: id},
success: function (res) {
if (res.status == 'success') {
const totalContact = res.data.contact;
const tcontact = $('#contectCount').text();
const messageValue = $('#message').val();
$('#contectCount').text(Number(totalContact));
if (messageValue.length <= 0) {
$('#amountCount').text(totalContact);
return;
}
let totalMessage = parseInt($('#smsCount').text());
$('#amountCount').text((totalMessage * tcontact) - tcontact);
$('#message').trigger('keyup').trigger('change');
}
},
error: function(error) {
const messageValue = $('#message').val();
let totalMessage = Math.floor(messageValue.length / 160);
$('#amountCount').text(totalMessage);
$('#contectCount').text('0');
$('#message').trigger('keyup').trigger('change');
}
})
}catch(error){
const messageValue = $('#message').val();
let totalMessage = Math.floor(messageValue.length / 160);
$('#amountCount').text(totalMessage);
$('#contectCount').text('0');
}
});
$('.select2-single').select2({
multiple:false
});
$(document).on('click', '.from_type_btn', function(e){
$('.from_type_btn').removeClass('active');
$(this).addClass('active');
const type=$(this).attr('data-type');
$('.from_selected_type').val(type);
if(type=='mms' || type=='whatsapp'){
$('#mms_section').removeClass('d-none');
$('input[name=message_file]').val('').attr('required', 'required');
}else{
$('#mms_section').addClass('d-none');
$('input[name=message_file]').removeAttr('required').removeClass('is-invalid');
}
const s_type=$('.senderType').val();
if(type=='voicecall'){
$('#voice_section').removeClass('d-none');
}else{
$('#voice_section').addClass('d-none');
}
const from_type='';
const from_group_type='';
if(s_type=='number'){
from_type='From Numbers';
from_group_type='From Groups';
}else{
from_type='From SenderID';
from_group_type='SenderID Groups';
}
// if(type=='mms'){
// $('#sender_type').addClass('d-none');
// }else{
// $('#sender_type').removeClass('d-none');
// }
$.ajax({
type:'GET',
url:'<?php echo e(route('customer.get.capabilities.numbers')); ?>',
data:{
type:type
},
success:function (res){
if(res.status=='success'){
let contacts='';
let groups='';
$.each(res.numbers, function (index, value){
contacts+=`<option value='${JSON.stringify(value)}'>${value['number']}</option>`;
});
$.each(res.groups, function (index, value){
groups+=`<option value='${JSON.stringify(value)}'>${value['number']}</option>`;
});
$('#campaignFromNumber').html(`<optgroup label="${from_type}">${contacts}</optgroup><optgroup label="${from_group_type}">${groups}</optgroup>`);
$('#campaignFromNumber').trigger('change');
}
}
})
})
</script>
<script>
$(function () {
$('#range_5').ionRangeSlider({
min: 1,
max: 500,
type: 'single',
step: 1,
postfix: ' ',
prettify: false,
hasGrid: true
})
});
var select2 = $('#campaignFromNumber').select2({
minimumInputLength: 1,
tags: true,
tokenSeparators: [",", " "],
})
var select2 = $('#campaignToNumber').select2({
minimumInputLength: 1,
tags: true,
tokenSeparators: [",", " "],
})
$(document).on('click', '.select_template', function (e) {
e.preventDefault();
const id = $(this).attr('data-id');
$('#template_active_nav').val(id);
});
$('#campaignFromNumber').select2({
tags: false,
placeholder: 'Select an from number'
});
$('#campaignToNumber').select2({
tags: false,
placeholder: 'Select an from group'
});
function typeInTextarea(newText, el = document.activeElement) {
const [start, end] = [el.selectionStart, el.selectionEnd];
el.setRangeText(newText, start, end, 'select');
}
function variable(value){
let text_to_insert = '{'+value+'}';
const id = $('#template_active_nav').val();
if (id) {
typeInTextarea(text_to_insert, document.getElementById('message'));
}else {
typeInTextarea(text_to_insert, document.getElementById('message'));
}
$('#message').focus();
const message = $('#message').val();
$('#message').trigger('keyup');
responsiveChatPush('.chat', '', 'me', '23.06.2023 14:30:7', message);
}
$('#fromType').on('change', function (e) {
const type = $(this).val();
$('.from-number-section').hide();
$('#' + type + "_section").show();
});
</script>
//Import Template
<script>
$(document).on('change', '#import-file', function(e){
e.preventDefault();
var fileInput = $('#import-file')[0];
var imageFile = fileInput.files[0];
// Create a new FormData object
var formData = new FormData();
formData.append('import_file', imageFile);
$('#importCsvLoaderModal').modal('show');
$.ajax({
url: '<?php echo e(route('customer.import.template')); ?>',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(res) {
if(res.status=='success'){
let html='';
let variables='';
$.each(res.data, function (index, value){
html+=`<option value="${value}">${value}</option>`;
variables+=`<button type="button" data-name="${value}" onclick="variable('${value}')" class="btn btn-sm btn-primary sms_template_variable mt-2 ml-2">${value}</button>`;
});
$('#campaignToNumber').html(html);
$('#campaignToNumber').trigger('change');
$('#dynamic_veriable').html(variables)
}
setTimeout(function () {
$('#importCsvLoaderModal').modal('hide');
}, 500);
},
error: function(xhr, textStatus, errorThrown) {
$('#importCsvLoaderModal').modal('hide');
toastr.success(textStatus, {timeOut: 2200});
}
});
});
</script>
<script>
function responsiveChatPush(element, sender, origin, date, message) {
// message=escapeHtml(message);
let originClass;
if (origin == 'me') {
originClass = 'myMessage';
} else {
originClass = 'fromThem';
}
$(element + ' .messages').html('<div class="message"><div class="' + originClass + '"><p>' + message + '</p><date><b>' + sender + '</b> ' + date + '</date></div></div>');
}
function responsiveChat(element) {
$(element).html('<div class="chat"><span></span><div class="messages" ></div><input type="text" placeholder="Your message" disabled><input type="submit" value="Send" disabled></div>');
}
responsiveChat('.responsive-html5-chat');
</script>
<script>
$(document).on('click', '.response_value', function (e){
let value = $(this).attr('data-title');
$("#message").val(value);
$('#message').trigger('keyup');
$('#message').trigger('change');
});
$(document).on('change', '#message', function (e) {
const data = $('#message').val();
let message = data.replace(/\n/g,"<br />");
responsiveChatPush('.chat', '', 'me', '23.06.2023 14:30:7', message);
setTimeout(()=>{
checkCharecter();
},100)
});
function checkCharecter(){
let totalContact = $('#contectCount').text();
const sms = $('#smsCount').text();
$('#amountCount').text(totalContact * sms);
}
$('#switch-input').change(function () {
if ($(this).prop("checked")) {
$('#schedule-time').removeClass('d-none');
}else {
$('#schedule-time').addClass('d-none');
}
// not checked
});
$('#response_value_disabled').on('click', false);
$('.datetimepicker').daterangepicker({
autoUpdateInput: true,
singleDatePicker: true,
timePicker: false,
minDate:new Date(),
locale: {
format: 'MM/DD/YYYY'
}
});
$('#start_time').on('change',function (e) {
$('#end_time').attr('min',$(this).val());
})
</script>
<script>
let plain_sms = <?php echo e(intval($plain_sms,'0')); ?>;
(function($){
$.fn.smsArea = function(options){
//Generate Ascii Character Array
var maxCh = 1000;
var minCh = 0;
var arrAscii = [];
for(minCh =1; minCh < maxCh; minCh++){
arrAscii.push(minCh * 160);
}
//End
//Generate Unicode Character Array
var unMaxCh = 1000;
var unMinCh = 0;
var arrUnicode = [];
for(unMinCh =1; unMinCh < unMaxCh; unMinCh++){
arrUnicode.push(unMinCh * 70);
}
//End
var
e = this,
cutStrLength = 0,
s = $.extend({
cut: true,
maxSmsNum: 1000,
interval: 5,
counters: {
message: $('#smsCount'),
character: $('#smsLength')
},
lengths: {
ascii: arrAscii,
unicode: arrUnicode
}
}, options);
e.keyup(function(){
clearTimeout(this.timeout);
this.timeout = setTimeout(function(){
var
smsType,
smsLength = 0,
smsCount = -plain_sms,
charsLeft = 0,
text = e.val(),
isUnicode = false;
for(var charPos = 0; charPos < text.length; charPos++){
switch(text[charPos]){
case "\n":
case "[":
case "]":
case "\\":
case "^":
case "{":
case "}":
case "|":
case "€":
smsLength += 2;
break;
default:
smsLength += 1;
}
//!isUnicode && text.charCodeAt(charPos) > 127 && text[charPos] != "€" && (isUnicode = true)
if(text.charCodeAt(charPos) > 127 && text[charPos] != "€")
isUnicode = true;
}
if(isUnicode) smsType = s.lengths.unicode;
else smsType = s.lengths.ascii;
for(var sCount = 0; sCount < s.maxSmsNum; sCount++){
cutStrLength = smsType[sCount];
if(smsLength <= smsType[sCount]){
smsCount = sCount + 1;
charsLeft = smsType[sCount] - smsLength;
break
}
}
if(s.cut) e.val(text.substring(0, cutStrLength));
smsCount == -1 && (smsCount = s.maxSmsNum, charsLeft = 0);
s.counters.message.html(smsCount * plain_sms);
s.counters.character.html(charsLeft);
}, s.interval);
}).keyup();
}}(jQuery));
//Start
$(function(){
$('#message').smsArea();
})
</script>
<script>
$(document).on('change', '.senderType', function (e){
const type=$(this).val();
const from_selected_type = $('.from_selected_type').val();
if(!type){
toastr.success('Select valid type','Copied!', {timeOut: 2200});
return;
}
$.ajax({
type:'GET',
url:'<?php echo e(route('customer.all.senders')); ?>',
data:{
type:type,from_selected_type:from_selected_type
},
success: function(res){
if(res.status=='success'){
let numbers = '';
if(res.number.length > 0) {
$.each(res.number, function (index, value) {
numbers+= `<option value='${JSON.stringify(value)}'>${value['number']}</option>`;
});
}
let groups = '';
if(res.groups.length > 0) {
$.each(res.groups, function (index, value) {
groups+= `<option value='${JSON.stringify(value)}'>${value['number']}</option>`;
});
}
if(type=='number'){
$('#campaignFromNumber').html(`<optgroup label="From Numbers">${numbers}</optgroup><optgroup label="From Groups">${groups}</optgroup>`);
}else{
$('#campaignFromNumber').html(`<optgroup label="From SenderID">${numbers}</optgroup><optgroup label="SenderID Groups">${groups}</optgroup>`);
}
}
}
})
})
</script>
<?php $__env->stopSection(); ?>
<?php echo $__env->make('layouts.customer', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?><?php /**PATH E:\Project\Pico-SMS-v-2\picosms\resources\views/customer/dynamic_campaign/create.blade.php ENDPATH**/ ?>
|