Files
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

495 lines
21 KiB
PHP

<div id="overlay" style="display:none;">
<div class="spinner"></div>
<br />
Exporting...
</div <div class="panel panel-flat" style="background-color: aliceblue;">
<div class="panel-body">
<div class="row">
<div id="lineoption">
</div>
</div>
<div class="row">
<div class="col-lg-3">
<!-- Current server load -->
<div class="panel">
<div class="panel-heading">
<h5>Tracked Email Items</h5>
</div>
<div>
<form id="tracked-email-form" autocomplete="off" class="pad-10-20">
<div class="row">
<div class="form-group col-md-6">
<div class="subject">
<label for="subject" class="font-weight-bold col-lg-1 col-form-label">
Subject
</label>
<div class="">
<input type="search" name="subject" id="subject" value="<?= $subject ?>" class="form-control" />
</div>
</div>
</div>
<div class="form-group col-md-6">
<div class="sender">
<label for="message_from" class="font-weight-bold col-lg-1 col-form-label">
Sender
</label>
<div class="">
<input type="search" name="message_from" id="message_from" value="<?= $message_from ?>" class="form-control" />
</div>
</div>
</div>
</div>
<div class="form-group text-right">
<div class="btn-group">
<input type="button" name="search" id="search" value="Search" class="btn btn-xs btn-info" />
<input type="button" id="exportZIP" value="Export" class="btn btn-warning btn-xs" />
</div>
<input type="hidden" name="member_id" id="member_id" value="<?= $member_id ?>" class="form-control" />
</div>
</form>
<span style="color:red" id="message"></span>
<div class="alert alert-danger" id="print-error-msg" style="display:none">
<a href="#" class="close">&times;</a>
<p id="error-msg"></p>
</div>
</div>
<div class="panel-heading mb-20">
<div class="heading-elements">
<? if (is_array($tpages)) { ?><table>
<tr>
<td>Page <?= $tpage ?> out of <?= $ttotal_pages ?></td>
<td><?= $pagination_config['full_tag_open'] ?>
<?php foreach ($tpages??[] as $key => $val) {
if ($member_tracked_offset == $val) {
echo $pagination_config['cur_tag_open'] . $key . $pagination_config['cur_tag_close'];
} else {
echo $pagination_config['num_tag_open'] .
"<a href='#'
onclick=\"viewMemberActionLimitOffset(
'EMAILRECIP',
${member_id},
'${limit}',
'${val}',
'subject=${subject}&message_from=${message_from}','member_tracked'
);
return false;\">
${key}
</a>" . $pagination_config['num_tag_close'];
}
}
echo $pagination_config['full_tag_close']; ?></td>
</tr>
</table><? } ?>
</div>
</div>
<div class="panel-body tbl-sm-pad" style="padding: 4px">
<?= $member_tracked ?>
</div>
</div>
<!-- /current server load -->
</div>
<div class="col-lg-9">
<?php if(isset($email_data_fetch_info)) { ?>
<div class="panel">
<div class="panel-heading">
<div class="row">
<div class="col-md-3 text-left"><strong>Email Account: </strong> <?= $email_data_fetch_info['email_account']??'' ?></div>
<div class="col-md-3 text-center"><strong>Account Status: </strong> <?= $email_data_fetch_info['account_status']??'' ?></div>
<div class="col-md-3 text-center"><strong>Email Status: </strong> <?= $email_data_fetch_info['email_status']??'' ?></div>
<?php
$last_data_fetch = '';
if(!empty($email_data_fetch_info['last_data_fetch']) && strlen($email_data_fetch_info['last_data_fetch'])>=10) {
try {
$last_data_fetch = (new DateTime($email_data_fetch_info['last_data_fetch']))->format('Y-m-d H:m:s');
}catch (Exception $ex){}
}
?>
<div class="col-md-3 text-right"><strong>Last Data Fetch: </strong> <?= $last_data_fetch ?></div>
</div>
</div>
</div>
<?php } ?>
<div class="panel">
<div class="panel-heading">
<h5>Parsed Email Receipts</h5>
</div>
<div class="pad-10-20">
<form name="parsed_email_form" id="parsed-email-form" autocomplete="off">
<div class="form-group">
<div class="travel_date">
<label for="start_travel_date" class="font-weight-bold col-form-label">
Travel Date
</label>
<div class="search-by-range">
<div class="">
<input type="search" name="start_travel_date" id="start_travel_date" value="<?= $start_travel_date ?>" class="form-control mw-100"/>
</div>
<div class="">
<input type="search" name="end_travel_date" id="end_travel_date" value="<?= $end_travel_date ?>" class="form-control mw-100"/>
</div>
</div>
</div>
<div class="duration">
<label for="duration_start" class="font-weight-bold col-lg-1 col-form-label">
Duration
</label>
<div class="search-by-range">
<div class="">
<input type="search" maxlength="10" name="duration_start" id="duration_start" value="<?= $duration_start ?>" class="form-control mw-100"/>
</div>
<div class="">
<input type="search" maxlength="10" name="duration_end" id="duration_end" value="<?= $duration_end ?>" class="form-control mw-100"/>
</div>
</div>
</div>
<div class="cost">
<label for="cost_start" class="font-weight-bold col-lg-1 col-form-label">
Cost
</label>
<div class="search-by-range">
<div class="">
<input type="search" maxlength="10" name="cost_start" id="cost_start" value="<?= $cost_start ?>" class="form-control mw-100"/>
</div>
<div class="">
<input type="search" maxlength="10" name="cost_end" id="cost_end" value="<?= $cost_end ?>" class="form-control mw-100"/>
</div>
</div>
</div>
<div class="distance">
<label for="distance_start" class="font-weight-bold col-lg-1 col-form-label">
Distance
</label>
<div class="search-by-range">
<div class="">
<input type="search" maxlength="10" name="distance_start" id="distance_start" value="<?= $distance_start ?>" class="form-control mw-100"/>
</div>
<div class="">
<input type="search" maxlength="10" name="distance_end" id="distance_end" value="<?= $distance_end ?>" class="form-control mw-100"/>
</div>
</div>
</div>
<div class="surge">
<label for="surge" class="font-weight-bold col-lg-1 col-form-label">
Surge
</label>
<div class="surge__input">
<select id="surge" class="form-control" name="surge">
<option value="" selected> --- </option>
<option value="0" <?= $surge == '0' ? 'selected' : ''?>> No</option>
<option value="1" <?= $surge == '1' ? 'selected' : ''?> >Yes</option>
</select>
</div>
</div>
<input type="button" name="search_parsed_email" id="search_parsed_email" value="Search" class="btn btn-info" />
</div>
</form>
<?php if (!empty($errors)) { ?>
<div class="alert alert-danger" id="parsed-email-error-msg">
<a href="#" class="close">&times;</a>
<p id="error-msg">
<?php foreach ($errors as $ele) { ?>
<p><?= $ele ?></p>
<?php } ?>
</p>
</div>
<?php } ?>
</div>
<div class="panel-heading mt-20">
<div class="heading-elements">
<?php if (is_array($pages)) { ?><table>
<tr>
<td>Page <?= $page ?> out of <?= $total_pages ?></td>
<td><?= $pagination_config['full_tag_open'] ?>
<?php foreach ($pages??[] as $key => $val) {
if ($member_parsedemail_offset == $val) {
echo $pagination_config['cur_tag_open'] . $key . $pagination_config['cur_tag_close'];
} else {
echo $pagination_config['num_tag_open'] .
"<a href='#' onclick=\"viewMemberActionLimitOffset(
'EMAILRECIP',
${member_id},
'${limit}',
'${val}',
generateParamsFromForm('parsed-email-form'),'member_parsedemail'
);
return false;\">${key}</a>"
. $pagination_config['num_tag_close'];
}
}
echo $pagination_config['full_tag_close']; ?></td>
</tr>
</table><?php } ?>
</div>
</div>
<div class="panel-body tbl-sm-pad">
<?= $member_parsedemail ?>
</div>
</div>
<!-- /members online -->
</div>
</div>
</div>
</div>
<script src="/assets/js/plugins/pickers/datepicker.js"></script>
<script type="text/javascript">
if(typeof window.paging_state === "undefined"){
window.paging_state = {
member_parsedemail: {
offset: 0
},
member_tracked: {
offset: 0
}
};
}
function viewMemberActionLimitOffset(action_name, member_id, limit, offset, params, type) {
$('#transp_detail').html('Processing...');
$('#acc' + member_id).prop('disabled', true);
//save data
if(type == 'member_parsedemail' || type == 'member_tracked'){
window.paging_state[type].offset = offset;
}
$.ajax({
url: "/member/viewMemberAction?proc=PROCESS&action_name=" + action_name +
"&member_id=" + member_id +
"&limit=" + limit +
"&offset=" + offset +
"&member_parsedemail_offset="+ window.paging_state.member_parsedemail.offset +
"&member_tracked_offset="+ window.paging_state.member_tracked.offset +
'&' + params
}).done(function(data) {
$('#transp_detail').html(data);
$('#acc' + member_id).prop('disabled', false);
});
}
function generateParamsFromForm(form) {
return $('#' + form).serialize();
}
$(document).ready(function() {
$('#search').on('click', function(event) {
event.preventDefault();
viewMemberActionLimitOffset(
'EMAILRECIP', <?= $member_id ?>, '50', '0', $('#tracked-email-form').serialize());
})
$('#search_parsed_email').on('click', function(event) {
event.preventDefault();
viewMemberActionLimitOffset(
'EMAILRECIP', <?= $member_id ?>, '50', '0', $('#parsed-email-form').serialize());
})
$("#start_date, #start_travel_date").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
format: 'yyyy-mm-dd',
onClose: function(selectedDate) {
$("#start_date, #start_travel_date").datepicker("option", "minDate", selectedDate);
}
})
$("#end_date, #end_travel_date").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
format: 'yyyy-mm-dd',
onClose: function(selectedDate) {
$("#end_date, #end_travel_date").datepicker("option", "maxDate", selectedDate);
}
})
$('.close').on('click', function() {
$(this).parent().toggle();
})
$('#exportZIP').on('click', function(e) {
$('#message').empty();
e.preventDefault();
// validate upload form
// $("#tracked-email-form").validate({
// rules: {
// member_id_filter: {
// required: true,
// number: true
// }
// },
// messages: {
// member_id_filter: {
// required: 'Please input Member ID',
// number: 'Please input number'
// }
// }
// });
if ($("#tracked-email-form").valid() === false) {
return;
}
$('#overlay').fadeIn();
export_zip_file()
.then((data) => {
})
.catch(error => {
$('message').append('<b>Something went wrong !!!</b>');
}).finally(() => {
$('#overlay').fadeOut();
});
})
function export_zip_file() {
return new Promise(function(resolve, reject) {
const params = {
proc: 'PROCESS',
action_name: 'EMAILRECIP',
member_id: '<?= $member_id ?>',
export: 'ZIP',
filters: $('#tracked-email-form').serialize()
};
const xhr = new XMLHttpRequest();
xhr.onerror = function() {
reject(Error("Network Error"));
};
xhr.open('POST', '/member/viewMemberAction', true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
if (xhr.status == 200) {
// get file name
let filename = "";
const disposition = xhr.getResponseHeader('Content-Disposition');
if (disposition && disposition.indexOf('attachment') !== -1) {
const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
const matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) {
filename = matches[1].replace(/['"]/g, '');
}
}
let a = document.createElement('a');
let url = window.URL.createObjectURL(this.response);
a.href = url;
a.download = filename;
document.body.append(a);
a.click();
a.remove();
resolve(xhr.response);
} else if (xhr.status == 404) {
$('#message').append(`<b>Data Not Found!!!</b>`);
$('#overlay').fadeOut();
} else {
reject(Error(xhr.statusText));
}
};
xhr.responseType = 'blob';
xhr.send(new URLSearchParams(params).toString());
})
}
})
</script>
<style>
#parsed-email-form .form-group {
display: flex;
align-items: flex-end;
justify-content: space-between;
}
#tracked-email-form .form-group {
}
.cost,
.duration,
.travel_date,
.distance,
.subject,
.sender,
.surge {
display: flex;
flex-direction: column;
}
.search-by-range {
display: flex;
align-items: flex-end;
}
.search-by-range div {
padding: 1px;
}
#overlay {
background: #ffffff;
color: #666666;
position: fixed;
height: 100%;
width: 100%;
z-index: 5000;
top: 0;
left: 0;
float: left;
text-align: center;
padding-top: 25%;
opacity: .80;
}
.spinner {
margin: 0 auto;
height: 64px;
width: 64px;
animation: rotate 0.8s infinite linear;
border: 5px solid firebrick;
border-right-color: transparent;
border-radius: 50%;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.mw-100{
max-width: 100px;
}
.pad-10-20{
padding: 10px 20px;
}
.tbl-sm-pad td{
padding: 6px !important;
}
</style>