Untitled
unknown
javascript
a year ago
4.7 kB
13
Indexable
async function handleSelectedDonation(radio) {
// Caso o tipo da doação seja valor fixo ou porcentagem fixa
// As informações dos produtos informados pelo parceiro, podem ser para valor fixo ou percentagem
// Bastando ele informar o tipo de doação
if (['fixed_donation', 'fixed_percentage'].includes(params.donationType)) {
const donationOptions = document.getElementsByName(radio.name);
const hasData = !['null', 'false', 'undefined', 'true'].includes(localStorage.getItem('hasDonationValue')) ? localStorage.getItem('hasDonationValue').split(',') : [];
// Verifica qual dos valores foi selecionado
// Adiciona ou remove produto do carrinho
donationOptions.forEach(checkbox => {
// Caso exista um valor salvo no localStorage e esse valor seja diferente do valor selecionado
// Remove o item do carrinho antes de atualizar o localStorage com o novo valor
if (hasData.length > 0) {
vtexjs.checkout.getOrderForm().then(function(orderForm) {
const donationIndex = orderForm.items.findIndex(item => item.id === hasData[0]);
// Verifica se o produto existe no carrinho antes de remove-lo
if (donationIndex !== -1) {
const donationObject = [
{
index: donationIndex,
quantity: 0,
}
];
return vtexjs.checkout.removeItems(donationObject);
}
});
}
// Caso o checkbox selecionado seja o mesmo do informado para a função
// Acrescenta o produto no carrinho e adiciona o valor no localStorage
if ((checkbox === radio && checkbox.checked)) {
// Objeto de doação que será adicionado ao carrinho
const donationObject = {
id: checkbox.value,
quantity: 1,
seller: '1',
}
// Verifica se o novo produto selecionado existe no carrinho
// Caso não exista, adiciona no carrinho
vtexjs.checkout.getOrderForm().then(function(orderForm) {
const productsInCart = orderForm.items || [];
if (productsInCart.find(product => product.id !== checkbox.value)) {
vtexjs.checkout.addToCart([donationObject], null, 1).done(function(){
_setDonation(`${checkbox.value},${checkbox.getAttribute('data-attr')}`);
});
}
});
} else {
checkbox.checked = false;
}
// Caso o checkbox tenha sido desselecionado
// Remove o produto do carrinho e seta o localStorage como null
if (!checkbox.checked && checkbox === radio) {
// Remove item do carrinho
vtexjs.checkout.getOrderForm().then(function(orderForm) {
_setDonation('null');
const donationIndex = orderForm.items.findIndex(item => item.id === checkbox.value);
if (donationIndex !== -1) {
const donationObject = [
{
index: donationIndex,
quantity: 0,
}
];
return vtexjs.checkout.removeItems(donationObject)
}
});
}
});
}
// Caso o tipo de doação seja por arredondamento
// Pega o valor total do carrinho e faz o arredondamento para o próximo valor cheio
if (params.donationType === 'round_donation') {
const containerElement = _getContainerElement();
const inputElement = _getInputElement();
if (check) {
containerElement.classList.add('active');
vtexjs.checkout.getOrderForm().then(function(orderForm) {
// Realiza o cálculo para o valor cheio
// Acrescenta no carrinho o 'produto' passando o novo valor
});
inputElement.checked = true;
_setDonation('true');
} else {
containerElement.classList.remove('active');
inputElement.checked = false;
_setDonation('false');
}
}
}Editor is loading...
Leave a Comment