309 lines
14 KiB
JavaScript
309 lines
14 KiB
JavaScript
/*
|
|
* Copyright 2024 DPD Polska Sp. z o.o.
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* Licensed under the EUPL-1.2 or later.
|
|
* You may not use this work except in compliance with the Licence.
|
|
*
|
|
* You may obtain a copy of the Licence at:
|
|
* https://joinup.ec.europa.eu/software/page/eupl
|
|
* It is also bundled with this package in the file LICENSE.txt
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the Licence is distributed on an AS IS basis,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the Licence for the specific language governing permissions
|
|
* and limitations under the Licence.
|
|
*
|
|
* @author DPD Polska Sp. z o.o.
|
|
* @copyright 2024 DPD Polska Sp. z o.o.
|
|
* @license https://joinup.ec.europa.eu/software/page/eupl
|
|
*/
|
|
|
|
$(document).ready(function () {
|
|
|
|
$('#form_dpdshipping_pickup_courier_sender_address').on('change', function (event) {
|
|
event.preventDefault();
|
|
$('.errorMessagePickupCourier').hide();
|
|
const pickupOrderSettingsId = $(this).val();
|
|
$('#senderAddressContainer').hide();
|
|
$.ajax({
|
|
url: dpdshipping_pickup_courier_ajax_url, method: 'GET', data: {
|
|
pickupOrderSettingsId: pickupOrderSettingsId,
|
|
token: dpdshipping_token
|
|
}, success: function (response, status, xhr) {
|
|
if (response.success === true && response.data !== null) {
|
|
$('#form_customer_company').val(response.data.customerFullName);
|
|
$('#form_customer_name').val(response.data.customerName);
|
|
$('#form_customer_phone').val(response.data.customerPhone);
|
|
$('#senderFullName').text(response.data.senderFullName);
|
|
$('#senderName').text(response.data.senderName);
|
|
$('#senderAddress').text(response.data.senderAddress);
|
|
$('#senderPostalCode').text(response.data.senderPostalCode);
|
|
$('#senderCity').text(response.data.senderCity);
|
|
$('#senderCountryCode').text(response.data.senderCountryCode);
|
|
$('#senderPhone').text(response.data.senderPhone);
|
|
$('#payerNumber').text(response.data.payerNumber);
|
|
$('#senderAddressContainer').show();
|
|
} else if (response.success === false && response.errors && response.errors.length > 0) {
|
|
$('.errorMessagePickupCourier').text(response.errors[0]);
|
|
$('.errorMessagePickupCourier').show();
|
|
} else {
|
|
$('.errorMessagePickupCourier').text('Unknown error');
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
}, error: function () {
|
|
$('.errorMessagePickupCourier').text('Unknown error');
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#button_get_pickup_time_frames').on('click', function (event) {
|
|
$('.errorMessagePickupCourier').hide();
|
|
const pickupOrderSettingsId = $('#form_dpdshipping_pickup_courier_sender_address').val()
|
|
const countryCode = $('#senderCountryCode').text()
|
|
const postalCode = $('#senderPostalCode').text()
|
|
|
|
$('#pickupTimeContainer').hide();
|
|
$.ajax({
|
|
url: dpdshipping_pickup_courier_get_pickup_time_frames_ajax_url, method: 'GET', data: {
|
|
pickupOrderSettingsId: pickupOrderSettingsId,
|
|
countryCode: countryCode,
|
|
postalCode: postalCode,
|
|
token: dpdshipping_token
|
|
}, success: function (response, status, xhr) {
|
|
if (response.success === true && response.data !== null) {
|
|
const select = $('#form_pickup_time');
|
|
select.empty();
|
|
|
|
const currentTime = new Date();
|
|
$.each(response.data, function (index, item) {
|
|
function getEndTime() {
|
|
const [startTime, endTime] = item.range.split('-');
|
|
const [endHour, endMinute] = endTime.split(':');
|
|
const endDate = new Date();
|
|
endDate.setHours(parseInt(endHour));
|
|
endDate.setMinutes(parseInt(endMinute));
|
|
endDate.setSeconds(0);
|
|
return endDate;
|
|
}
|
|
|
|
const pickedDate = new Date($('#form_pickup_date').val());
|
|
const isToday = pickedDate.toDateString() === currentTime.toDateString();
|
|
const isAfterCurrentTime = getEndTime() > currentTime;
|
|
|
|
if ((isToday && isAfterCurrentTime) || !isToday) {
|
|
const option = $('<option></option>')
|
|
.attr('value', item.range)
|
|
.text(item.range);
|
|
select.append(option);
|
|
}
|
|
});
|
|
|
|
const jsonString = JSON.stringify(response.data);
|
|
select.attr('data-timeframes', jsonString);
|
|
select.val(response.data.length > 0 ? response.data[0].range : '').change();
|
|
|
|
$('#pickupTimeContainer').show();
|
|
} else if (response.success === false && response.errors && response.errors.length > 0) {
|
|
$('.errorMessagePickupCourier').text(response.errors[0]);
|
|
$('.errorMessagePickupCourier').show();
|
|
} else {
|
|
$('.errorMessagePickupCourier').text('Unknown error');
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
}, error: function () {
|
|
$('.errorMessagePickupCourier').text('Unknown error');
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#pickup-courier-add-save-button').on('click', function (event) {
|
|
event.preventDefault();
|
|
$('.errorMessagePickupCourier').hide();
|
|
|
|
const form = document.getElementById('dpdshipping_pickup_courier_form');
|
|
|
|
if (!form.checkValidity()) {
|
|
form.reportValidity();
|
|
return;
|
|
}
|
|
if (!validateAddPickupCourier())
|
|
return;
|
|
|
|
|
|
const pickupOrderSettingsId = $('#form_dpdshipping_pickup_courier_sender_address').val()
|
|
|
|
$.ajax({
|
|
url: dpdshipping_pickup_courier_pickup_courier_ajax_url, method: 'POST', data: {
|
|
pickupOrderSettingsId: pickupOrderSettingsId,
|
|
customerFullName: $('#form_customer_company').val(),
|
|
customerName: $('#form_customer_name').val(),
|
|
customerPhone: $('#form_customer_phone').val(),
|
|
senderFullName: $('#senderFullName').text(),
|
|
senderName: $('#senderName').text(),
|
|
senderAddress: $('#senderAddress').text(),
|
|
senderPostalCode: $('#senderPostalCode').text(),
|
|
senderCity: $('#senderCity').text(),
|
|
senderCountryCode: $('#senderCountryCode').text(),
|
|
senderPhone: $('#senderPhone').text(),
|
|
payerNumber: $('#payerNumber').text(),
|
|
payerName: "DPD_API",
|
|
pickupDate: $('#form_pickup_date').val(),
|
|
pickupTime: $('#form_pickup_time').val(),
|
|
letters: $('#form_letters').is(':checked'),
|
|
lettersCount: $('#form_letters_count').val(),
|
|
packages: $('#form_packages').is(':checked'),
|
|
packagesCount: $('#form_packages_count').val(),
|
|
packagesWeightSum: $('#form_packages_weight_sum').val(),
|
|
packagesWeightMax: $('#form_packages_weight_max').val(),
|
|
packagesSizeXMax: $('#form_packages_size_x_max').val(),
|
|
packagesSizeYMax: $('#form_packages_size_y_max').val(),
|
|
packagesSizeZMax: $('#form_packages_size_z_max').val(),
|
|
palette: $('#form_palette').is(':checked'),
|
|
paletteCount: $('#form_palette_count').val(),
|
|
paletteWeightSum: $('#form_palette_weight_sum').val(),
|
|
paletteWeightMx: $('#form_palette_weight_max').val(),
|
|
paletteSizeYMax: $('#form_palette_size_y_max').val(),
|
|
token: dpdshipping_token
|
|
}, success: function (response, status, xhr) {
|
|
if (response.success === true && response.data !== null) {
|
|
window.location.href = response.data.redirectPath;
|
|
} else if (response.success === false && response.errors && response.errors.length > 0) {
|
|
$('.errorMessagePickupCourier').text(response.errors[0]);
|
|
$('.errorMessagePickupCourier').show();
|
|
} else {
|
|
$('.errorMessagePickupCourier').text('Unknown error');
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
}, error: function () {
|
|
$('.errorMessagePickupCourier').text('Unknown error');
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
});
|
|
|
|
function isEmptyInputData(fields) {
|
|
return fields.some(function (selector) {
|
|
return !$.trim($(selector).val()) && !$.trim($(selector).text());
|
|
});
|
|
}
|
|
|
|
function validateAddPickupCourier() {
|
|
function showError(errorMsg) {
|
|
$('.errorMessagePickupCourier').text(errorMsg);
|
|
$('.errorMessagePickupCourier').show();
|
|
}
|
|
|
|
if (isEmptyInputData([
|
|
'#form_customer_company',
|
|
'#form_customer_name',
|
|
'#form_customer_phone'])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_customer);
|
|
return false;
|
|
}
|
|
|
|
if (isEmptyInputData([
|
|
'#senderFullName',
|
|
'#senderName',
|
|
'#senderAddress',
|
|
'#senderPostalCode',
|
|
'#senderCity',
|
|
'#senderCountryCode',
|
|
'#senderPhone',
|
|
])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_sender);
|
|
return false;
|
|
}
|
|
|
|
if (isEmptyInputData([
|
|
'#payerNumber',
|
|
])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_payer);
|
|
return false;
|
|
}
|
|
|
|
if (isEmptyInputData([
|
|
'#form_pickup_date',
|
|
'#form_pickup_time',
|
|
])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_pickup_date_time);
|
|
return false;
|
|
}
|
|
if (!$('#form_letters').is(':checked') &&
|
|
!$('#form_packages').is(':checked') &&
|
|
!$('#form_palette').is(':checked')) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_parcel);
|
|
return false;
|
|
}
|
|
if ($('#form_letters').is(':checked')) {
|
|
if (isEmptyInputData([
|
|
'#form_letters_count',
|
|
])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_letters);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if ($('#form_packages').is(':checked')) {
|
|
if (isEmptyInputData([
|
|
'#form_packages_count',
|
|
'#form_packages_weight_sum',
|
|
'#form_packages_weight_max',
|
|
'#form_packages_size_x_max',
|
|
'#form_packages_size_y_max',
|
|
'#form_packages_size_z_max',
|
|
])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_packages);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if ($('#form_palette').is(':checked')) {
|
|
if (isEmptyInputData([
|
|
'#form_palette_count',
|
|
'#form_palette_weight_sum',
|
|
'#form_palette_weight_max',
|
|
'#form_palette_size_y_max'
|
|
])) {
|
|
showError(dpdshipping_pickup_courier_pickup_courier_ajax_empty_palette);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
$('#form_pickup_time').on('change', function (event) {
|
|
const selectedRange = $(this).val();
|
|
const timeFrames = $('#form_pickup_time').data('timeframes');
|
|
const selectedTimeFrame = timeFrames.find(tf => tf.range === selectedRange);
|
|
|
|
function getFormatedHour() {
|
|
const rangeParts = selectedTimeFrame.range.split('-');
|
|
const startTime = rangeParts[0];
|
|
|
|
const startDate = new Date();
|
|
const [startHour, startMinute] = startTime.split(':');
|
|
startDate.setHours(parseInt(startHour));
|
|
startDate.setMinutes(parseInt(startMinute));
|
|
startDate.setSeconds(0);
|
|
|
|
const offsetDate = new Date(startDate.getTime() - selectedTimeFrame.offset * 60000);
|
|
|
|
const offsetHour = offsetDate.getHours().toString().padStart(2, '0');
|
|
const offsetMinute = offsetDate.getMinutes().toString().padStart(2, '0');
|
|
return `${offsetHour}:${offsetMinute}`;
|
|
}
|
|
|
|
if (selectedTimeFrame) {
|
|
$('#timeFrameHour').text(getFormatedHour());
|
|
$('#timeFrameDate').text($('#form_pickup_date').val());
|
|
} else {
|
|
console.error('No matching time frame found for the selected range:', selectedRange);
|
|
}
|
|
});
|
|
}); |