Compare commits

...

7 Commits

11 changed files with 1363 additions and 1093 deletions

View File

@ -17,6 +17,11 @@ if ($_SESSION["user_type"] != "admin") {
$products = productList();
$vendorSearchResult = $_SESSION["vendorSearchResult"];
$payoutResponse = getAllPayout($_SESSION["token"]);
$payoutData = json_decode($payoutResponse, true);
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
@ -103,16 +108,16 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
</button>
</div>
</div>
<div class="card card-default p-4 ec-card-space">
<div class="col-lg-6 col-md-12">
<form style="display:flex; margin-bottom:50px;" method="POST" action="vendor-card-action.php">
<input type="text" name="search" class="form-control" id="searchProduct" placeholder="search with vendor name..">
<button class="submit" type="submit" id="search-btn" class="btn btn-flat">
<i class="mdi mdi-magnify" style="font-size:20px; color:gray; margin-left:-40px;"></i>
</button>
</form>
</div>
<div class="col-lg-6 col-md-12">
<form style="display:flex; margin-bottom:50px;" method="POST" action="vendor-card-action.php">
<input type="text" name="search" class="form-control" id="searchProduct" placeholder="search with vendor name..">
<button class="submit" type="submit" id="search-btn" class="btn btn-flat">
<i class="mdi mdi-magnify" style="font-size:20px; color:gray; margin-left:-40px;"></i>
</button>
</form>
</div>
<div class="ec-vendor-card mt-m-24px row">
<?php
@ -126,16 +131,16 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
$end = $start + $vendorsPerPage - 1;
$vendorsCopy = $vendors;
if (!empty($_GET['search']) ) {
$filteredProducts=[];
if (!empty($_GET['search'])) {
$filteredProducts = [];
foreach ($vendorsCopy as $result) {
$vendorName = strtolower($result['user_login']);
$vendorName = strtolower($result['user_login']);
if (
strpos($vendorName,strtolower($_GET['search']))!==false
strpos($vendorName, strtolower($_GET['search'])) !== false
) {
$filteredProducts[] = $result;
} else{
} else {
}
}
@ -149,6 +154,19 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
// $vendors = vendorList();
for ($x = $start; $x <= $end && $x < $totalVendors; $x++) {
$vendor = $vendors[$x];
$vendorId = $vendor['_id'];
$totalPayoutAmount = 0; // Initialize the total net amount for the current vendor
// Loop through the payout data and sum up the net amounts
foreach ($payoutData as $payout) {
if ($payout['vendor_details'][0]['vendor_id'] == $vendorId) {
$totalPayoutAmount += $payout['net_amount'];
}
}
$totalPayoutAmount = number_format($totalPayoutAmount, 2, '.', ',');
?>
<div class="col-lg-6 col-xl-4 col-xxl-3">
<div class="card card-default mt-24px">
@ -177,7 +195,7 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
<i class="mdi mdi-cellphone-basic mr-1"></i>
<span style="font-size:13px;">
<?php
echo isset($vendor['phone']) && !empty($vendor['phone']) ? $vendor['phone']: 'No Number yet';
echo isset($vendor['phone']) && !empty($vendor['phone']) ? $vendor['phone'] : 'No Number yet';
?>
</span>
</li>
@ -192,7 +210,7 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
</ul>
</a>
<div class="row justify-content-center ec-vendor-detail">
<div class="col-4">
<div class="col-3">
<h6 class="text-uppercase">Items</h6>
<?php
$vendorId = $vendor['_id'];
@ -202,13 +220,13 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
?>
<h5><?php echo count($product); ?></h5>
</div>
<div class="col-4">
<div class="col-3">
<h6 class="text-uppercase">Sell</h6>
<h5>1908</h5>
</div>
<div class="col-4">
<div class="col-6">
<h6 class="text-uppercase">Payout</h6>
<h5>$2691</h5>
<h5 style="font-size: 15px;"> <?php echo $totalPayoutAmount; ?></h5>
</div>
</div>
</div>
@ -231,11 +249,12 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
<!-- 02-28-2024 Stacy modified this block of code -->
<div class="modal-body pt-0">
<div style="text-align: center; display: column; justify-content: center; align-items: center;" class="col-md-6">
<!-- <input type="file" id="fileInput<?php #echo $vendor['_id']; ?>" accept=".png, .jpg, .jpeg" /> -->
<!-- <input type="file" id="fileInput<?php #echo $vendor['_id'];
?>" accept=".png, .jpg, .jpeg" /> -->
<div class="thumb-edit" style="padding-left:120px; margin-bottom:-40px;">
<input style="display:none;" type='file' id="fileInput<?php echo $vendor['_id']; ?>" class="ec-image-upload" accept=".png, .jpg, .jpeg" onchange="previewImage('<?php echo $vendor['_id']; ?>')"/>
<input style="display:none;" type='file' id="fileInput<?php echo $vendor['_id']; ?>" class="ec-image-upload" accept=".png, .jpg, .jpeg" onchange="previewImage('<?php echo $vendor['_id']; ?>')" />
<label><i class="fa-solid fa-file-import" style="cursor:pointer;" onclick="document.getElementById('fileInput<?php echo $vendor['_id']; ?>').click()"></i></label>
</div>
<div class="vendor-image" style="padding-top:20px; ">
<?php
@ -248,30 +267,29 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
</div>
<script>
function updateButtonText(input){
function updateButtonText(input) {
var label = document.getElementById('fileInputLabel');
if (input.files.length > 0) {
label.innerHTML = '<i class="fa-solid fa-file-arrow-up"></i> ' + input.files[0].name;
}else{
} else {
label.innerHTML = '<i class="fa-solid fa-file-arrow-up"></i> Upload file';
}
}
// 03-14-2024 Jun Jihad modified this block of code to show preview of the image to be uploaded
function previewImage(vendorId) {
var fileInput = document.getElementById('fileInput' + vendorId);
var file = fileInput.files[0];
console.log('clicked hereee');
const reader = new FileReader();
var fileInput = document.getElementById('fileInput' + vendorId);
var file = fileInput.files[0];
console.log('clicked hereee');
const reader = new FileReader();
reader.onload = function (e) {
const dataUri = e.target.result;
document.getElementById('imgPrev' + vendorId).src = dataUri; // Fixed concatenation here
};
reader.onload = function(e) {
const dataUri = e.target.result;
document.getElementById('imgPrev' + vendorId).src = dataUri; // Fixed concatenation here
};
reader.readAsDataURL(file);
}
reader.readAsDataURL(file);
}
// 03-14-2024 Jun Jihad modified this block of code to show preview of the image to be uploaded
</script>
</div>
<form>
@ -378,296 +396,293 @@ $vendorSearchResult = $_SESSION["vendorSearchResult"];
</div>
</div>
<script>
function deleteVendor(vendorId){
function deleteVendor(vendorId) {
let text = "Please confirm delete action!\nClick OK or Cancel button.";
if (confirm(text) == true) {
window.open("vendor-delete-action.php?id=" + vendorId, "_self");
}
}
function uploadFile(vendorId) {
const originalEmail = document.getElementById('email-' + vendorId).defaultValue;
const updatedEmail = document.getElementById('email-' + vendorId).value;
const isEmailModified = originalEmail !== updatedEmail;
const originalEmail = document.getElementById('email-' + vendorId).defaultValue;
const updatedEmail = document.getElementById('email-' + vendorId).value;
const isEmailModified = originalEmail !== updatedEmail;
if (isEmailModified) {
validateEmail(vendorId).then(isEmailAvailable => {
if (!isEmailAvailable) {
$('#email-error-message-' + vendorId).text('Email is already in use').show();
} else {
$('#email-error-message-' + vendorId).text('').hide();
if (isEmailModified) {
validateEmail(vendorId).then(isEmailAvailable => {
if (!isEmailAvailable) {
$('#email-error-message-' + vendorId).text('Email is already in use').show();
} else {
$('#email-error-message-' + vendorId).text('').hide();
var fileInput = document.getElementById('fileInput' + vendorId);
var file = fileInput.files[0];
const updatedUser = document.getElementById('user_login-' + vendorId).value;
const firstName = document.getElementById('firstName-' + vendorId).value;
const lastName = document.getElementById('lastName-' + vendorId).value;
const phone = document.getElementById('phone-' + vendorId).value;
const description = document.getElementById('description-' + vendorId).value;
const status = document.getElementById('status-' + vendorId).value;
const updatedAddress1 = document.getElementById('address_1-' + vendorId).value;
const updatedAddress2 = document.getElementById('address_2-' + vendorId).value;
const barangay = document.getElementById('barangay-' + vendorId).value;
const city = document.getElementById('city-' + vendorId).value;
const province = document.getElementById('province-' + vendorId).value;
const country = document.getElementById('country-' + vendorId).value;
var formData = new FormData();
formData.append('image_id', vendorId);
formData.append('category', 'vendor');
formData.append('image', file); // Include the file data in the form data
if(file){
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/upload_image', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
return response.json();
} else {
console.error('File upload failed');
throw new Error('File upload failed');
}
})
.then(result => {
const filename = result.filename;
const payload = {
vendor_image: `https://<?php echo $_SESSION["data_endpoint"]; ?>/images/storage/vendor_uploads/${filename}`,
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
return fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
})
.then(secondResponse => {
if (secondResponse.ok) {
console.log('Second request successful');
location.reload();
} else {
console.error('Second request failed');
}
})
.catch(error => {
console.error('Error during fetch:', error);
});
}else{
const payload = {
vendor_image: `https://<?php echo $_SESSION["data_endpoint"]; ?>/images/storage/vendor_uploads/${filename}`,
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => {
if (response.ok) {
location.reload();
return response.json();
} else {
console.error('vendor Update failed');
throw new Error('vendor Update failed');
}
})
;
}
}
});
}else {
$('#email-error-message-' + vendorId).text('').hide();
const updatedUser = document.getElementById('user_login-' + vendorId).value;
const firstName = document.getElementById('firstName-' + vendorId).value;
const lastName = document.getElementById('lastName-' + vendorId).value;
const updatedEmail = document.getElementById('email-' + vendorId).value;
const phone = document.getElementById('phone-' + vendorId).value;
const description = document.getElementById('description-' + vendorId).value;
const status = document.getElementById('status-' + vendorId).value;
const updatedAddress1 = document.getElementById('address_1-' + vendorId).value;
const updatedAddress2 = document.getElementById('address_2-' + vendorId).value;
const barangay = document.getElementById('barangay-' + vendorId).value;
const city = document.getElementById('city-' + vendorId).value;
const province = document.getElementById('province-' + vendorId).value;
const country = document.getElementById('country-' + vendorId).value;
var fileInput = document.getElementById('fileInput' + vendorId);
var file = fileInput.files[0];
var formData = new FormData();
formData.append('image_id', vendorId);
formData.append('category', 'vendor');
formData.append('image', file);
if (file){
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/upload_image', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
return response.json();
} else {
console.error('File upload failed');
throw new Error('File upload failed');
}
})
.then(result => {
const filename = result.filename;
const payload = {
vendor_image: `https://<?php echo $_SESSION["data_endpoint"]; ?>/images/storage/vendor_uploads/${filename}`,
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
// Make API request using the extracted filename
return fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
})
.then(secondResponse => {
if (secondResponse.ok) {
console.log('Second request successful');
location.reload();
} else {
console.error('Second request failed');
}
})
.catch(error => {
console.error('Error during fetch:', error);
});
}else{
const payload = {
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => {
if (response.ok) {
location.reload();
return response.json();
} else {
console.error('vendor Update failed');
throw new Error('vendor Update failed');
}
})
;
}
}
}
function validateEmail(vendorId) {
var emailInput = document.getElementById('email-' + vendorId);
var email = emailInput.value;
if (email.trim() !== '') {
return fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/search?q=' + email)
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Failed to check email availability');
}
})
.then(data => {
const isEmailAvailable = parseInt(data.results.length) === 0;
$('#email-error-message-' + vendorId).text(isEmailAvailable ? '' : 'Email is already in use').show();
return isEmailAvailable;
})
.catch(error => {
console.error('Error during email validation:', error);
return false;
});
} else {
$('#email-error-message-' + vendorId).text('').hide();
return Promise.resolve(true);
}
}
var fileInput = document.getElementById('fileInput' + vendorId);
var file = fileInput.files[0];
const updatedUser = document.getElementById('user_login-' + vendorId).value;
const firstName = document.getElementById('firstName-' + vendorId).value;
const lastName = document.getElementById('lastName-' + vendorId).value;
const phone = document.getElementById('phone-' + vendorId).value;
const description = document.getElementById('description-' + vendorId).value;
const status = document.getElementById('status-' + vendorId).value;
const updatedAddress1 = document.getElementById('address_1-' + vendorId).value;
const updatedAddress2 = document.getElementById('address_2-' + vendorId).value;
const barangay = document.getElementById('barangay-' + vendorId).value;
const city = document.getElementById('city-' + vendorId).value;
const province = document.getElementById('province-' + vendorId).value;
const country = document.getElementById('country-' + vendorId).value;
var formData = new FormData();
formData.append('image_id', vendorId);
formData.append('category', 'vendor');
formData.append('image', file); // Include the file data in the form data
if (file) {
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/upload_image', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
return response.json();
} else {
console.error('File upload failed');
throw new Error('File upload failed');
}
})
.then(result => {
const filename = result.filename;
const payload = {
vendor_image: `https://<?php echo $_SESSION["data_endpoint"]; ?>/images/storage/vendor_uploads/${filename}`,
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
return fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
})
.then(secondResponse => {
if (secondResponse.ok) {
console.log('Second request successful');
location.reload();
} else {
console.error('Second request failed');
}
})
.catch(error => {
console.error('Error during fetch:', error);
});
} else {
const payload = {
vendor_image: `https://<?php echo $_SESSION["data_endpoint"]; ?>/images/storage/vendor_uploads/${filename}`,
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => {
if (response.ok) {
location.reload();
return response.json();
} else {
console.error('vendor Update failed');
throw new Error('vendor Update failed');
}
});
}
}
});
} else {
$('#email-error-message-' + vendorId).text('').hide();
const updatedUser = document.getElementById('user_login-' + vendorId).value;
const firstName = document.getElementById('firstName-' + vendorId).value;
const lastName = document.getElementById('lastName-' + vendorId).value;
const updatedEmail = document.getElementById('email-' + vendorId).value;
const phone = document.getElementById('phone-' + vendorId).value;
const description = document.getElementById('description-' + vendorId).value;
const status = document.getElementById('status-' + vendorId).value;
const updatedAddress1 = document.getElementById('address_1-' + vendorId).value;
const updatedAddress2 = document.getElementById('address_2-' + vendorId).value;
const barangay = document.getElementById('barangay-' + vendorId).value;
const city = document.getElementById('city-' + vendorId).value;
const province = document.getElementById('province-' + vendorId).value;
const country = document.getElementById('country-' + vendorId).value;
var fileInput = document.getElementById('fileInput' + vendorId);
var file = fileInput.files[0];
var formData = new FormData();
formData.append('image_id', vendorId);
formData.append('category', 'vendor');
formData.append('image', file);
if (file) {
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/upload_image', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
return response.json();
} else {
console.error('File upload failed');
throw new Error('File upload failed');
}
})
.then(result => {
const filename = result.filename;
const payload = {
vendor_image: `https://<?php echo $_SESSION["data_endpoint"]; ?>/images/storage/vendor_uploads/${filename}`,
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
// Make API request using the extracted filename
return fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
})
.then(secondResponse => {
if (secondResponse.ok) {
console.log('Second request successful');
location.reload();
} else {
console.error('Second request failed');
}
})
.catch(error => {
console.error('Error during fetch:', error);
});
} else {
const payload = {
user_login: updatedUser,
first_name: firstName,
last_name: lastName,
user_email: updatedEmail,
phone: phone,
vendor_description: description,
status: status,
address: [{
address_1: updatedAddress1,
address_2: updatedAddress2,
barangay: barangay,
city: city,
province: province,
country: country,
}]
};
fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/' + vendorId, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => {
if (response.ok) {
location.reload();
return response.json();
} else {
console.error('vendor Update failed');
throw new Error('vendor Update failed');
}
});
}
}
}
function validateEmail(vendorId) {
var emailInput = document.getElementById('email-' + vendorId);
var email = emailInput.value;
if (email.trim() !== '') {
return fetch('https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/vendors/search?q=' + email)
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Failed to check email availability');
}
})
.then(data => {
const isEmailAvailable = parseInt(data.results.length) === 0;
$('#email-error-message-' + vendorId).text(isEmailAvailable ? '' : 'Email is already in use').show();
return isEmailAvailable;
})
.catch(error => {
console.error('Error during email validation:', error);
return false;
});
} else {
$('#email-error-message-' + vendorId).text('').hide();
return Promise.resolve(true);
}
}
</script>
<!-- <script>
@ -821,27 +836,27 @@ function validateEmail(vendorId) {
} */
$start = max(1, $currentpage - 2);
$end = min($totalPages, $start + 4);
$end = min($totalPages, $start + 4);
if ($start > 1) {
echo "<a href='?page=1'>1</a>";
if ($start > 2) {
echo "<span>&nbsp;...&nbsp;</span>";
}
if ($start > 1) {
echo "<a href='?page=1'>1</a>";
if ($start > 2) {
echo "<span>&nbsp;...&nbsp;</span>";
}
}
for ($i = $start; $i <= $end; $i++) {
echo "<a href='?page=$i' class='" . ($currentpage == $i ? 'active' : '') . "'>$i</a>&nbsp;";
}
for ($i = $start; $i <= $end; $i++) {
echo "<a href='?page=$i' class='" . ($currentpage == $i ? 'active' : '') . "'>$i</a>&nbsp;";
}
if ($end < $totalPages) {
if ($end < $totalPages - 1) {
echo "<span>&nbsp;...&nbsp;</span>";
}
echo "<a href='?page=$totalPages'>$totalPages</a>";
if ($end < $totalPages) {
if ($end < $totalPages - 1) {
echo "<span>&nbsp;...&nbsp;</span>";
}
echo "<a href='?page=$totalPages'>$totalPages</a>";
}
?>
</div>
<!-- Ec Pagination End -->
@ -858,35 +873,35 @@ function validateEmail(vendorId) {
<form action="add_vendor_action.php" method="post">
<div class="ec-vendor-block-img space-bottom-30">
<!-- <div class="ec-vendor-block-bg cover-upload">
<div class="thumb-upload">
<div class="thumb-edit">
<input type='file' id="thumbUpload01" class="ec-image-upload"
accept=".png, .jpg, .jpeg" />
<label><i class="fi-rr-edit"></i></label>
</div>
<div class="thumb-preview ec-preview">
<div class="image-thumb-preview">
<img loading="lazy" class="image-thumb-preview ec-image-preview v-img"
src="assets/images/banner/7.jpg" alt="edit" />
</div>
</div>
</div>
</div> -->
<!-- <div class="ec-vendor-block-detail">
<div class="thumb-upload">
<div class="thumb-edit">
<input type='file' id="thumbUpload02" class="ec-image-upload"
accept=".png, .jpg, .jpeg" />
<label><i class="fi-rr-edit"></i></label>
</div>
<div class="thumb-preview ec-preview">
<div class="image-thumb-preview">
<img loading="lazy" class="image-thumb-preview ec-image-preview v-img"
src="assets/images/vendor/5.jpg" alt="edit" />
</div>
</div>
</div>
</div> -->
<div class="thumb-upload">
<div class="thumb-edit">
<input type='file' id="thumbUpload01" class="ec-image-upload"
accept=".png, .jpg, .jpeg" />
<label><i class="fi-rr-edit"></i></label>
</div>
<div class="thumb-preview ec-preview">
<div class="image-thumb-preview">
<img loading="lazy" class="image-thumb-preview ec-image-preview v-img"
src="assets/images/banner/7.jpg" alt="edit" />
</div>
</div>
</div>
</div> -->
<!-- <div class="ec-vendor-block-detail">
<div class="thumb-upload">
<div class="thumb-edit">
<input type='file' id="thumbUpload02" class="ec-image-upload"
accept=".png, .jpg, .jpeg" />
<label><i class="fi-rr-edit"></i></label>
</div>
<div class="thumb-preview ec-preview">
<div class="image-thumb-preview">
<img loading="lazy" class="image-thumb-preview ec-image-preview v-img"
src="assets/images/vendor/5.jpg" alt="edit" />
</div>
</div>
</div>
</div> -->
<div class="ec-vendor-upload-detail">
<form class="row g-3">
<div class="col-md-12 space-t-15">

177
assets/js/user-history.js Normal file
View File

@ -0,0 +1,177 @@
async function postProductRating(product_id, formData,endpointData,sessionToken) {
const endpoint = `https://${endpointData}/api/v1/products/${product_id}/ratings`;
// const sessionToken = 'your-session-token-here'; // Replace with your actual session token logic
try {
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + sessionToken,
},
body: formData
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
}
async function updateOrderRating(product_id,endpointData,sessionToken) {
const endpoint = `https://${endpointData}/api/v1/orders/${product_id}`;
// const sessionToken = 'your-session-token-here'; // Replace with your actual session token logic
try {
const response = await fetch(endpoint, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + sessionToken,
},
body: JSON.stringify({
"isRate": true
})
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
}
async function uploadImageRating(formData,endpointData,sessionToken) {
const endpoint = `https://${endpointData}/api/v1/upload_image`;
// const sessionToken = 'your-session-token-here'; // Replace with your actual session token logic
try {
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + sessionToken,
},
body: formData
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
}
async function sendFeedback(variation, rating,
comments, images, videos, customer_id,
order_id,
vendor_id, files, productId,
endpoint, sessionToken
) {
const formData = new FormData();
const currentDate = new Date();
const formattedDate = currentDate
.toISOString().replace(/[-T:]/g, "")
.slice(0, -5);
formData.append('variation', variation);
formData.append('rating', rating);
formData.append('comments', comments);
formData.append('customer_id',
customer_id);
formData.append('order_id', order_id);
formData.append('vendor_id', vendor_id);
images?.forEach((image, index) => {
formData.append(
`images`,
image);
});
// Append videos to FormData
videos?.forEach((video, index) => {
formData.append(
`videos`,
video);
});
postProductRating(
productId,
formData,
endpoint, sessionToken
)
.then(response => {
console.log('Success:',
response);
if (!response) {
throw new Error(
'Failed to send text message'
);
} else {
updateOrderRating(
order_id,
endpoint,
sessionToken
)
.then(
response1 => {
console.log(
'Success:',
response1
);
if (
!
response1
) {
throw new Error(
`
update order failed `
);
} else {
sendButton1
[
order_id
]
.textContent =
"Submitted";
sendButton1
[
order_id
]
.disabled =
true
}
})
.catch(error => {
console
.error(
'Error:',
error
);
});
}
})
.catch(error => {
console.error('Error:',
error);
});
}

View File

@ -92,24 +92,34 @@ if (isset($_GET['id'])) {
<link rel="stylesheet" id="bg-switcher-css" href="assets/css/backgrounds/bg-4.css">
<script>
function updateCartItemCount() {
$.get("cartitems.php?id=<?php echo $_SESSION['customerId']; ?>", function(data, status) {
if (data != "") {
console.log("Data: " + data + "\nStatus: " + status);
document.getElementById("cartItemCount").innerHTML = data;
document.getElementById("cartNewItemCount").innerHTML = data;
var xhr = new XMLHttpRequest();
xhr.open("GET", "cartitems.php?id=<?php echo $_SESSION['customerId']; ?>", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
if (data !== "") {
console.log("Data: " + data);
document.getElementById("cartItemCount").innerHTML = data;
document.getElementById("cartNewItemCount").innerHTML = data;
}
}
});
};
xhr.send();
}
function updateWishItemCount() {
$.get("wishlistitems.php?id=<?php echo $_SESSION['customerId']; ?>", function(data) {
if (data != "") {
document.getElementById("wishItemCount").innerHTML = data;
document.getElementById("wishNewItemCount").innerHTML = data;
var xhr = new XMLHttpRequest();
xhr.open("GET", "wishlistitems.php?id=<?php echo $_SESSION['customerId']; ?>", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
if (data !== "") {
document.getElementById("wishItemCount").innerHTML = data;
document.getElementById("wishNewItemCount").innerHTML = data;
}
}
});
};
xhr.send();
}
</script>
@ -1628,7 +1638,7 @@ if (isset($_GET['id'])) {
alt="" /> -->
<div id="ec-spt-nav-review" class="tab-pane fade">
</div>
</div>
<style>
.rating_con {

View File

@ -445,47 +445,47 @@ $filteredProducts = [];
let card = document.createElement("div");
card.classList.add("col-md-12");
card.innerHTML = `
<div class="card" style="margin:5px">
<div class="card-body">
<div class="vendor-info" style="display: flex; align-items: center; flex-wrap:wrap; justify-content:center">
<div class="ec-catalog-vendor" style="display: inline-block; margin-bottom:10px">
<a href="catalog-single-vendor.php?id=${vendorId}">
<div class="card" style="margin:5px">
<div class="card-body">
<div class="vendor-info" style="display: flex; align-items: center; flex-wrap:wrap; justify-content:center">
<div class="ec-catalog-vendor" style="display: inline-block; margin-bottom:10px">
<a href="catalog-single-vendor.php?id=${vendorId}">
<img loading="lazy" src="${vendor.vendor_image ? vendor.vendor_image : 'https://api.obanana.com/images/storage/web_images/1708588564876-viber_image_2024-02-22_15-54-42-498.png'}" alt="${vendor.user_login}" class="vendor-image" style="max-width: 100px; max-height: 100px;">
</a>
</div>
<div class="vendor-details" style="display:inline-block; max-width:300px">
<a href="catalog-single-vendor.php?id=${vendorId}">
<h6 class="ec-pro-title" style="padding:0 30px;font-family: Poppins, sans-serif; text-decoration: none; color: #777;white-space: nowrap;text-overflow: ellipsis;display: block;font-size: 16px;font-weight: 400;">
${vendor.user_login}
</h6>
</a>
</div>
<div class="card text-center" style="margin-left: auto; margin-right: 5px;">
<div class="card-body">
<h6>Seller Products</h6>
<p>${productCount}</p>
</div>
</div>
<div class="card text-center" style="margin-left: 5px; margin-right: 5px; min-width:180px">
<div class="card-body">
<h6>Seller since</h6>
<p>${formattedDate}</p>
</div>
</div>
</div>
</div>
</div>`;
<img loading="lazy" src="${vendor.vendor_image ? vendor.vendor_image : 'https://api.obanana.com/images/storage/web_images/1708588564876-viber_image_2024-02-22_15-54-42-498.png'}" alt="${vendor.user_login}" class="vendor-image" style="max-width: 100px; max-height: 100px;">
</a>
</div>
<div class="vendor-details" style="display:inline-block; max-width:300px">
<a href="catalog-single-vendor.php?id=${vendorId}">
<h6 class="ec-pro-title" style="padding:0 30px;font-family: Poppins, sans-serif; text-decoration: none; color: #777;white-space: nowrap;text-overflow: ellipsis;display: block;font-size: 16px;font-weight: 400;">
${vendor.user_login}
</h6>
</a>
</div>
<div class="card text-center" style="margin-left: auto; margin-right: 5px;">
<div class="card-body">
<h6>Seller Products</h6>
<p>${productCount}</p>
</div>
</div>
<div class="card text-center" style="margin-left: 5px; margin-right: 5px; min-width:180px">
<div class="card-body">
<h6>Seller since</h6>
<p>${formattedDate}</p>
</div>
</div>
</div>
</div>
</div>`;
// Append the product card to the container
document.querySelector(".vendor-list")
.appendChild(card);
});
} else {
document.querySelector(".vendor-list").innerHTML = `
<h6>No vendors available</h6>
`;
<h6>No vendors available</h6>
`;
}
}

View File

@ -1030,7 +1030,7 @@ if ($_SESSION["isVendor"] == true) {
if ($order['return_order']['status'] === 'To Approve') {
echo '<a class="btn btn-lg btn-primary" style="margin:10px; white-space:nowrap" disabled>Refund Requested</a>';
} elseif ($order['return_order']['status'] === 'To Ship') {
echo '<a class="btn btn-lg btn-primary" style="margin:10px;" disabled>For Refund</a>';
echo '<a class="btn btn-lg btn-primary" style="margin:10px; white-space:nowrap" disabled>For Refund</a>';
} else {
$orderDate = strtotime($order['updatedAt']);
$sevenDaysAfterOrder = strtotime('+7 days', $orderDate); // Seven days after the order date
@ -1038,7 +1038,7 @@ if ($_SESSION["isVendor"] == true) {
if ($currentDate >= $sevenDaysAfterOrder || $order['isRate']=== true ) {
echo '<span class="tbl-btn" disabled></span>';
} else {
echo '<a class="btn btn-lg btn-primary" style="margin:10px;"
echo '<a class="btn btn-lg btn-primary" style="margin:10px; white-space:nowrap"
data-bs-toggle="modal"
data-bs-target="#modal-refund-' . $order['_id'] . '">Return/Refund</a>';
}
@ -1206,192 +1206,70 @@ if ($_SESSION["isVendor"] == true) {
.addEventListener('click', () => {
sendReview();
});
async function sendFeedback(variation, rating,
comments, images, videos, customer_id,
order_id,
vendor_id, files
) {
var sessionToken =
`<?php echo isset($_SESSION["token"]) ? $_SESSION["token"] : ""; ?>`;
const formData = new FormData();
const currentDate = new Date();
const formattedDate = currentDate
.toISOString().replace(/[-T:]/g, "")
.slice(0, -5);
// async function uploadMediaFeed(file,
// mediaType) {
// const formData = new FormData();
// console.log(file)
// const currentDate = new Date();
// const formattedDate =
// currentDate
// .toISOString().replace(
// /[-T:]/g, "")
// .slice(0, -5);
// const fileName =
// `
// $ {
// formattedDate
// } - $ {
// file.name
// }
// `;
// formData.append('image_id',
// '<?php echo $order['items'][0]['product']['product_id'] ?>'
// );
// formData.append('category',
// 'product');
// formData.append('image', file);
// uploadImageRating(formData,
// '<?php echo $_SESSION["data_endpoint"]; ?>',
// sessionToken)
// .then(response => {
// console.log('Success:',
// response);
// if (!response.ok) {
// throw new Error(
// `
// Failed to upload $ {
// mediaType
// }
// `
// );
// } else {
// const responseData =
// await response
// .json();
formData.append('variation', variation);
formData.append('rating', rating);
formData.append('comments', comments);
formData.append('customer_id',
customer_id);
formData.append('order_id', order_id);
formData.append('vendor_id', vendor_id);
images?.forEach((image, index) => {
formData.append(
`images`,
image);
});
// Append videos to FormData
videos?.forEach((video, index) => {
formData.append(
`videos`,
video);
});
// console.log("file")
// const formData = new FormData();
// formData.append('data', JSON.stringify({
// variation: variation,
// rating: String(rating),
// comments: comments,
// customer_id: customer_id,
// order_id: order_id,
// vendor_id: vendor_id,
// }));
// // Assuming images and videos are arrays of File objects
// images?.forEach((image, index) => {
// formData.append(
// `images[${index}]`,
// image);
// });
// videos?.forEach((video, index) => {
// formData.append(
// `videos[${index}]`,
// video);
// });
console.log(files)
const response = await fetch(
`https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/products/<?php echo $order['items'][0]['product']['product_id'];?>/ratings`, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' +
sessionToken,
},
body: formData
});
// JSON.stringify({
// variation: variation,
// rating: String(
// rating
// ),
// comments: comments,
// images: images,
// videos: videos,
// customer_id: customer_id,
// order_id: order_id,
// vendor_id: vendor_id,
// })
if (!response.ok) {
throw new Error(
'Failed to send text message'
);
} else {
// fileInput.value = '';
// messageInput.value = '';
// send_btn.textContent = "Send";
// send_btn.disabled = false
// JSON.stringify({
// ratings: [{
// variation: variation,
// rating: String(
// rating
// ),
// comments: comments,
// images: images,
// videos: videos,
// customer_id: customer_id,
// order_id: order_id,
// vendor_id: vendor_id,
// }]
// })
const response1 = await fetch(
`https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/orders/<?php echo $order['_id'];?>`, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' +
sessionToken,
},
body: JSON.stringify({
"isRate": true
})
});
if (!response1.ok) {
throw new Error(
`
update order failed `
);
} else {
sendButton1[
'<?php echo $order['_id']; ?>'
].textContent =
"Submitted";
sendButton1[
'<?php echo $order['_id']; ?>'
].disabled = true
}
}
const messageData = await response
.json();
}
async function uploadMediaFeed(file,
mediaType, ) {
const formData = new FormData();
console.log(file)
const currentDate = new Date();
const formattedDate =
currentDate
.toISOString().replace(
/[-T:]/g, "")
.slice(0, -5);
const fileName =
`
$ {
formattedDate
} - $ {
file.name
}
`;
formData.append('image_id',
'<?php echo $order['items'][0]['product']['product_id'] ?>'
);
formData.append('category',
'product');
formData.append('image', file);
// return responseData
// .filename;
// }
// })
// .catch(error => {
// console.error('Error:',
// error);
// });
const response = await fetch(
'<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/upload_image', {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error(
`
Failed to upload $ {
mediaType
}
`
);
} else {
const responseData =
await response
.json();
// // const response = await fetch(
// // '<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/upload_image', {
// // method: 'POST',
// // body: formData
// // });
return responseData
.filename;
}
// const responseData = await response.json();
}
// // const responseData = await response.json();
// }
async function sendReview() {
@ -1427,6 +1305,7 @@ if ($_SESSION["isVendor"] == true) {
sendButton1[
'<?php echo $order['_id']; ?>'
].disabled = true
let files = []
try {
// Send text message
await sendFeedback(
@ -1437,7 +1316,11 @@ if ($_SESSION["isVendor"] == true) {
videos,
customer_id,
order_id,
vendor_id
vendor_id,
files,
'<?php echo $order['items'][0]['product']['product_id'];?>',
'<?php echo $_SESSION["data_endpoint"]; ?>',
'<?php echo $_SESSION["token"]; ?>'
);
} catch (error) {
console.error(
@ -1541,7 +1424,10 @@ if ($_SESSION["isVendor"] == true) {
videos,
customer_id,
order_id,
vendor_id, files
vendor_id, files,
'<?php echo $order['items'][0]['product']['product_id'];?>',
'<?php echo $_SESSION["data_endpoint"]; ?>',
'<?php echo $_SESSION["token"]; ?>'
)
} catch (error) {
@ -2675,6 +2561,8 @@ if ($_SESSION["isVendor"] == true) {
<!-- Main Js -->
<script src="assets/js/vendor/index.js"></script>
<script src="assets/js/main.js"></script>
<script src="assets/js/user-history.js"></script>
</body>

View File

@ -219,7 +219,7 @@ if ($_SESSION["isVendor"] == true) {
class="ec-vendor-detail-block ec-vendor-block-contact space-bottom-30">
<h6>Contact number</h6>
<ul>
<li><strong><?php echo $customer_data['phone_number'] ?></li>
<li><strong><?php echo $customer_data[0]['phone_number'] ?></li>
</ul>
</div>
</div>
@ -544,8 +544,11 @@ if ($_SESSION["isVendor"] == true) {
</div>
<div class="form-group">
<label for="addressBuilding" class="text-dark font-weight-medium pt-3 mb-2">House/Unit/Flr #, Bldg Name, Blk or Lot #</label>
<input type="text" class="form-control" id="addressBuilding2" value="<?php echo $address['address_1']; ?>">
<label for="addressBuilding"
class="text-dark font-weight-medium pt-3 mb-2">House/Unit/Flr #, Bldg Name, Blk or
Lot #</label>
<input type="text" class="form-control" id="addressBuilding2"
value="<?php echo $address['address_1']; ?>">
<!-- <label for="addressBuilding" class="text-dark font-weight-medium pt-3 mb-2"> Building,Number </label>
<input type="text" class="form-control" id="addressBuilding"> -->
@ -875,7 +878,7 @@ if ($_SESSION["isVendor"] == true) {
if (selectedCityCode) {
fetch(
`https://psgc.gitlab.io/api/cities-municipalities/${selectedCityCode}/barangays/`
)
)
.then(response => {
if (response.ok) {
return response.json();
@ -1009,7 +1012,7 @@ if ($_SESSION["isVendor"] == true) {
if (selectedCityCode) {
fetch(
`https://psgc.gitlab.io/api/cities-municipalities/${selectedCityCode}/barangays/`
)
)
.then(response => {
if (response.ok) {
return response.json();

File diff suppressed because it is too large Load Diff

View File

@ -64,7 +64,7 @@ if ($_SESSION["isCustomer"] == true) {
<meta name="msapplication-TileImage" content="assets/images/favicon/favicon.png" />
<!-- css Icon Font -->
<link rel="stylesheet" href="assets/css/vendor/ecicons.min.css" />
<link rel="stylesheet" href="assets/css/vendor/ecicons.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A=="
crossorigin="anonymous" referrerpolicy="no-referrer" />

View File

@ -56,7 +56,7 @@ if ($_SESSION["isCustomer"] == true) {
<meta name="msapplication-TileImage" content="assets/images/favicon/favicon.png" />
<!-- css Icon Font -->
<link rel="stylesheet" href="assets/css/vendor/ecicons.min.css" />
<link rel="stylesheet" href="assets/css/vendor/ecicons.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
@ -103,6 +103,22 @@ if ($_SESSION["isCustomer"] == true) {
border: 1px solid #ccc;
border-radius: 4px;
}
.roww {
width: 100%;
display: flex;
/* justify-content: center;
align-items: center; */
flex-wrap: nowrap !important;
flex-direction: row !important;
}
@media(max-width:992px) {
.roww {
flex-wrap: wrap !important;
}
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
@ -144,7 +160,7 @@ if ($_SESSION["isCustomer"] == true) {
<div class="container">
<div class="row">
<div class="col-12">
<div class="row ec_breadcrumb_inner">
<div class="row ec_breadcrumb_inner roww">
<div class="col-md-6 col-sm-12">
<h2 class="ec-breadcrumb-title">User History</h2>
</div>
@ -164,9 +180,9 @@ if ($_SESSION["isCustomer"] == true) {
<!-- Ec breadcrumb end -->
<section class="ec-page-content ec-vendor-uploads ec-user-account section-space-p">
<div class="container">
<div class="row">
<div class="row roww">
<!-- Sidebar Area Start -->
<div class="ec-shop-leftside ec-vendor-sidebar col-lg-3 col-md-12">
<div class="ec-shop-leftside ec-vendor-sidebar col-lg-3 col-md-12 ">
<div class="ec-sidebar-wrap ec-border-box">
<!-- Sidebar Category Block -->
<div class="ec-sidebar-block">

View File

@ -51,7 +51,8 @@ $vendorPayoutData = json_decode($response, true);
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<title>oBanana B2B - Elevate Your Business</title>
<meta name="keywords" content="apparel, catalog, clean, ecommerce, ecommerce HTML, electronics, fashion, html eCommerce, html store, minimal, multipurpose, multipurpose ecommerce, online store, responsive ecommerce template, shops" />
<meta name="keywords"
content="apparel, catalog, clean, ecommerce, ecommerce HTML, electronics, fashion, html eCommerce, html store, minimal, multipurpose, multipurpose ecommerce, online store, responsive ecommerce template, shops" />
<meta name="description" content="Best ecommerce html template for single and multi vendor store.">
<meta name="author" content="ashishmaraviya">
@ -61,7 +62,7 @@ $vendorPayoutData = json_decode($response, true);
<meta name="msapplication-TileImage" content="assets/images/favicon/favicon.png" />
<!-- css Icon Font -->
<link rel="stylesheet" href="assets/css/vendor/ecicons.min.css" />
<link rel="stylesheet" href="assets/css/vendor/ecicons.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
@ -87,27 +88,46 @@ $vendorPayoutData = json_decode($response, true);
<!-- Background css -->
<link rel="stylesheet" id="bg-switcher-css" href="assets/css/backgrounds/bg-4.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@latest/dist/css/select2.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@latest/dist/css/select2.min.css"
crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@latest/dist/js/select2.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@latest/dist/js/select2.min.js" crossorigin="anonymous"
referrerpolicy="no-referrer"></script>
<script>
function renewToken() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "vendor-payoutsTokenRN.php", true);
xhr.send();
}
function renewToken() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "vendor-payoutsTokenRN.php", true);
xhr.send();
}
setInterval(function() {
var currentTime = <?php echo time(); ?>;
var renewalTime = <?php echo $renewal_time; ?>;
var expirationTime = <?php echo $expiration_time; ?>;
setInterval(function() {
var currentTime = <?php echo time(); ?>;
var renewalTime = <?php echo $renewal_time; ?>;
var expirationTime = <?php echo $expiration_time; ?>;
if (currentTime >= renewalTime || currentTime >= expirationTime) {
renewToken();
}
}, 60000);
if (currentTime >= renewalTime || currentTime >= expirationTime) {
renewToken();
}
}, 60000);
</script>
</head>
<style>
.roww {
width: 100%;
display: flex;
/* justify-content: center;
align-items: center; */
flex-wrap: nowrap !important;
flex-direction: row !important;
}
@media(max-width:992px) {
.roww {
flex-wrap: wrap !important;
}
}
</style>
<body class="shop_page">
<div id="ec-overlay">
@ -135,7 +155,7 @@ $vendorPayoutData = json_decode($response, true);
<div class="container">
<div class="row">
<div class="col-12">
<div class="row ec_breadcrumb_inner">
<div class="row ec_breadcrumb_inner roww">
<div class="col-md-6 col-sm-12">
<h2 class="ec-breadcrumb-title">Vendor Payouts</h2>
</div>
@ -157,7 +177,7 @@ $vendorPayoutData = json_decode($response, true);
<!-- Vendor setting section -->
<section class="ec-page-content ec-vendor-uploads section-space-p">
<div class="container">
<div class="row">
<div class="row roww">
<!-- Sidebar Area Start -->
<div class="ec-shop-leftside ec-vendor-sidebar col-lg-3 col-md-12">
<div class="ec-sidebar-wrap ec-border-box">
@ -167,9 +187,13 @@ $vendorPayoutData = json_decode($response, true);
<!-- 03-12-2024 Stacy added placeholder for vendor banner -->
<?php
if (!empty($vendorData['vendor_banner'])) { ?>
<div class="ec-vendor-block-bg" style="background-image: url(<?php echo $vendorData['vendor_banner'] ?>) !important;"></div>
<?php } else { ?>
<div class="ec-vendor-block-bg" style="background-color: orange; background-image: url(<?php echo $vendorData['vendor_banner'] ?>) !important;"></div>
<div class="ec-vendor-block-bg"
style="background-image: url(<?php echo $vendorData['vendor_banner'] ?>) !important;">
</div>
<?php } else { ?>
<div class="ec-vendor-block-bg"
style="background-color: orange; background-image: url(<?php echo $vendorData['vendor_banner'] ?>) !important;">
</div>
<?php } ?>
<!-- <div class="ec-vendor-block-bg" style="background-image: url(<?php #echo $vendorData['vendor_banner'] ?>) !important;"></div> -->
<div class="ec-vendor-block-detail">
@ -177,9 +201,12 @@ $vendorPayoutData = json_decode($response, true);
<!-- 03-12-2024 Stacy added placeholder for vendor profile -->
<?php
if (!empty($vendorData['vendor_image'])) { ?>
<img loading="lazy" class="v-img" src=<?php echo $vendorData['vendor_image'] ?> alt="vendor image">
<img loading="lazy" class="v-img" src=<?php echo $vendorData['vendor_image'] ?>
alt="vendor image">
<?php } else { ?>
<img loading="lazy" class="v-img" src="https://yourteachingmentor.com/wp-content/uploads/2020/12/istockphoto-1223671392-612x612-1.jpg" alt="vendor image">
<img loading="lazy" class="v-img"
src="https://yourteachingmentor.com/wp-content/uploads/2020/12/istockphoto-1223671392-612x612-1.jpg"
alt="vendor image">
<?php } ?>
<h5 class="name"><?php echo $vendorData['user_login'] ?></h5>
</div>
@ -249,7 +276,8 @@ $vendorPayoutData = json_decode($response, true);
}
$bankNumEnding = substr($bankAccountNumber, -3);
?>
Receipient: <?php echo $bankName; ?> Account ending in <?php echo $bankNumEnding?>
Receipient: <?php echo $bankName; ?> Account ending in
<?php echo $bankNumEnding?>
</div>
</div>
</div>
@ -317,18 +345,10 @@ $vendorPayoutData = json_decode($response, true);
</div>
<div class="ec-vendor-card-body">
<div class="ec-vendor-card-table">
<table class="table ec-table"
id="payout-table" style="overflow-x: auto;"
data-role="table"
data-pagination="true"
data-searching="true"
data-filtering="true"
data-sorting="true"
data-show-rows-steps="5,10,20,-1"
data-horizontal-scroll="true"
data-rownum="true"
data-table-info-title="Display from $1 to $2 of $3 payment(s)"
>
<table class="table ec-table" id="payout-table" style="overflow-x: auto;"
data-role="table" data-pagination="true" data-searching="true" data-filtering="true"
data-sorting="true" data-show-rows-steps="5,10,20,-1" data-horizontal-scroll="true"
data-rownum="true" data-table-info-title="Display from $1 to $2 of $3 payment(s)">
<thead>
<tr>
<th data-sortable="true" scope="col">Amount</th>
@ -348,35 +368,37 @@ $vendorPayoutData = json_decode($response, true);
$payoutDate = date("F d, Y", strtotime($val['createdAt']));
$payoutId = $val['_id'];
if ((empty($vendorIdCheck) == false) && ($vendorIdCheck == $vendorId) && ($status == "Deposited")) { ?>
<tr>
<td> <?php echo "" . $val['net_amount'] ?> </td>
<?php if (empty($val['bank_information'][0]['bank_name']) == false) {
<tr>
<td> <?php echo "" . $val['net_amount'] ?> </td>
<?php if (empty($val['bank_information'][0]['bank_name']) == false) {
?>
<td> <?php echo $val['bank_information'][0]['bank_name'] ?> </td>
<?php } else { ?>
<td> N/A </td>
<?php }
<td> <?php echo $val['bank_information'][0]['bank_name'] ?> </td>
<?php } else { ?>
<td> N/A </td>
<?php }
if (empty($val['bank_information'][0]['bank_account_number']) == false) {
$accNum = $val['bank_information'][0]['bank_account_number'];
// Replace characters with asterisks for all characters except the last three segments
$maskedAccNum = substr_replace($accNum, str_repeat('*', strlen($accNum) - 3), 0, -3); ?>
<td> <?php echo $maskedAccNum ?> </td>
<?php } else { ?>
<td> N/A </td>
<?php } ?>
<td> <?php echo $payoutDate ?> </td>
<td> <?php echo $status ?> </td>
<td>
<button type="button" class="btn btn-primary btn-sm showSinglePayoutBtn" data-order-id="<?php echo $payoutId; ?>" data-bs-toggle="modal" data-bs-target="#payoutsModal">View</button>
</td>
</tr>
<td> <?php echo $maskedAccNum ?> </td>
<?php } else { ?>
<td> N/A </td>
<?php } ?>
<td> <?php echo $payoutDate ?> </td>
<td> <?php echo $status ?> </td>
<td>
<button type="button" class="btn btn-primary btn-sm showSinglePayoutBtn"
data-order-id="<?php echo $payoutId; ?>" data-bs-toggle="modal"
data-bs-target="#payoutsModal">View</button>
</td>
</tr>
<?php
}
} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@ -437,7 +459,7 @@ $vendorPayoutData = json_decode($response, true);
</div>
<!-- Cart Floating Button end -->
<!-- Feature tools -->
<div class="ec-tools-sidebar-overlay"></div>
@ -525,7 +547,7 @@ $vendorPayoutData = json_decode($response, true);
<script src="assets/js/plugins/nouislider.js"></script>
<script src="https://cdn.datatables.net/v/bs5/dt-2.0.3/r-3.0.0/sp-2.3.0/datatables.min.js"></script>
<!-- <script src="https://cdn.metroui.org.ua/current/metro.js"></script> -->
<!-- <script>
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
@ -537,52 +559,56 @@ $vendorPayoutData = json_decode($response, true);
<!-- JS CRIPT FOR DYNAMIC MODAL BOX USING AJAX - JOHN LOUIE C. SUPERALIS MARCH 22, 2024 -->
<script>
$(document).ready(function() {
$('.showSinglePayoutBtn').click(function() {
var payoutId = $(this).data('order-id');
var token = "<?php echo $authToken; ?>";
$('#payoutIdSpan').text(payoutId);
$.ajax({
// url: 'https://api.obanana.shop/api/v1/payouts/' + payoutId,
url: 'https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/payouts/' + payoutId,
type: 'GET',
headers: {
'Authorization': 'Bearer ' + token
},
success: function(response) {
// Handle successful response
console.log(response);
var grossAmount = response.gross_amount;
var totalFees = response.fees_deduction_adjustment;
var feeBreakdown = response.breakdown[0].transfer_fee;
var netAmount = response.net_amount;
var payoutStatus = response.status;
payoutStatus = payoutStatus.charAt(0).toUpperCase() + payoutStatus.slice(1).toLowerCase();
var bankName = response.bank_information[0].bank_name;
var bankNum = response.bank_information[0].bank_account_number;
var bankNumEnding = bankNum.slice(-3); // Extract last three characters of bankNum
var maskedBankNum = "Ending in " + bankNumEnding; // Create message
var bankAccName = response.bank_information[0].bank_account_name;
var transactionLogsHtml = ''; // Initialize empty string to store HTML for transaction logs
response.transaction_logs.forEach(function(log)
{
var paymentType = log.Type;
var transDate = new Date(log?.Transaction_date).toLocaleString('en-US', {
year: 'numeric',
month: '2-digit',
$(document).ready(function() {
$('.showSinglePayoutBtn').click(function() {
var payoutId = $(this).data('order-id');
var token = "<?php echo $authToken; ?>";
$('#payoutIdSpan').text(payoutId);
$.ajax({
// url: 'https://api.obanana.shop/api/v1/payouts/' + payoutId,
url: 'https://<?php echo $_SESSION["data_endpoint"]; ?>/api/v1/payouts/' +
payoutId,
type: 'GET',
headers: {
'Authorization': 'Bearer ' + token
},
success: function(response) {
// Handle successful response
console.log(response);
var grossAmount = response.gross_amount;
var totalFees = response.fees_deduction_adjustment;
var feeBreakdown = response.breakdown[0].transfer_fee;
var netAmount = response.net_amount;
var payoutStatus = response.status;
payoutStatus = payoutStatus.charAt(0).toUpperCase() + payoutStatus
.slice(1).toLowerCase();
var bankName = response.bank_information[0].bank_name;
var bankNum = response.bank_information[0].bank_account_number;
var bankNumEnding = bankNum.slice(-
3); // Extract last three characters of bankNum
var maskedBankNum = "Ending in " + bankNumEnding; // Create message
var bankAccName = response.bank_information[0].bank_account_name;
var transactionLogsHtml =
''; // Initialize empty string to store HTML for transaction logs
response.transaction_logs.forEach(function(log) {
var paymentType = log.Type;
var transDate = new Date(log?.Transaction_date)
.toLocaleString('en-US', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: 'numeric',
minute: '2-digit',
hour12: true
});
var transGrossAmount = log?.Gross_Amount;
var transFee = log.Fee;
var transNetAmount = log?.Net_Amount;
var transDesc = log.Description;
// Append HTML for current transaction log to the transactionLogsHtml string
transactionLogsHtml += `
var transGrossAmount = log?.Gross_Amount;
var transFee = log.Fee;
var transNetAmount = log?.Net_Amount;
var transDesc = log.Description;
// Append HTML for current transaction log to the transactionLogsHtml string
transactionLogsHtml += `
<tr>
<td>${paymentType}</td>
<td>${transDate}</td>
@ -591,11 +617,11 @@ $vendorPayoutData = json_decode($response, true);
<td> ${transNetAmount}</td>
<td>${transDesc}</td>
</tr>`;
});
});
// Populate data dynamically using the response
var payoutDetailsHtml = `
// Populate data dynamically using the response
var payoutDetailsHtml = `
<div class="row">
<div class="col-md-7 mb-4">
<div class="d-flex flex-column">
@ -667,13 +693,13 @@ $vendorPayoutData = json_decode($response, true);
</div>
</div>
</div>`;
$('#payoutDetailsContainer').html(payoutDetailsHtml);
$('#payoutDetailsContainer').html(payoutDetailsHtml);
},
})
},
})
});
});
});
</script>
</body>

View File

@ -438,27 +438,27 @@ if ($_SESSION["isCustomer"] == true) {
<form>
<div class="form-group">
<label for="addressFirstName" class="text-dark font-weight-medium pt-3 mb-2">First Name</label>
<input type="text" class="form-control" id="addressFirstName">
<input type="text" class="form-control" id="addressFirstName" required>
</div>
<div class="form-group">
<label for="addressLastName" class="text-dark font-weight-medium pt-3 mb-2">Last Name</label>
<input type="text" class="form-control" id="addressLastName">
<input type="text" class="form-control" id="addressLastName" required>
</div>
<div class="form-group">
<label for="addressContact" class="text-dark font-weight-medium pt-3 mb-2">Contact Number</label>
<input type="text" class="form-control" id="addressContact" value="+63 " oninput="preventErasePrefix(this)">
<input type="text" class="form-control" id="addressContact" value="+63 " oninput="preventErasePrefix(this)" required>
</div>
<div class="form-group">
<label for="addressBuilding" class="text-dark font-weight-medium pt-3 mb-2"> House/Unit/Flr #, Bldg Name, Blk or Lot # </label>
<input type="text" class="form-control" id="addressBuilding">
<input type="text" class="form-control" id="addressBuilding" required>
</div>
<div class="form-group">
<label for="addressStreet" class="text-dark font-weight-medium pt-3 mb-2"> Street </label>
<input type="text" class="form-control" id="addressStreet">
<input type="text" class="form-control" id="addressStreet" required>
</div>
<div class="form-group">
<label for="provinceSelect">Province</label>
<select class="form-select" id="provinceSelect">
<select class="form-select" id="provinceSelect" required>
<option value="" disabled selected hidden>Select Province</option>
</select>
</div>
@ -476,7 +476,7 @@ if ($_SESSION["isCustomer"] == true) {
</div>
<div class="form-group">
<label for="addressCountry" class="text-dark font-weight-medium pt-3 mb-2">Country</label>
<input type="text" class="form-control" id="addressCountry" value="Philippines">
<input type="text" class="form-control" id="addressCountry" value="Philippines" required>
</div>
<button type="button" class="btn btn-primary mt-4" id="submitBtn">Submit</button>