Files
myprojplanet_vite/src/components/CMyCart/CMyCart.ts
Surya Paolo 574f389200 - creato editor di Pagine (iniziato)
- fix: mancano i "t," su alcuni componenti...
2025-09-02 16:22:13 +02:00

146 lines
3.7 KiB
TypeScript
Executable File

import { ref, onMounted, onBeforeMount, PropType, reactive, watch } from 'vue';
import { CCardState } from '../CCardState';
import { computed, defineComponent } from 'vue';
import { useGlobalStore } from '@store/globalStore';
import { useProducts } from '@store/Products';
import { CCopyBtn } from '@src/components/CCopyBtn';
import { CSingleCart } from '@src/components/CSingleCart';
import { CTitleBanner } from '@src/components/CTitleBanner';
import { tools } from '@store/Modules/tools';
import { useI18n } from 'vue-i18n';
import MixinUsers from '../../mixins/mixin-users';
import { useQuasar } from 'quasar';
import { ICart } from 'app/src/model';
export default defineComponent({
name: 'CMyCart',
props: {},
components: { CTitleBanner, CCardState, CCopyBtn, CSingleCart },
setup() {
const globalStore = useGlobalStore();
const productStore = useProducts();
const { t } = useI18n();
const $q = useQuasar();
const { getnumItemsCart } = MixinUsers();
const codice_sconto = ref('')
const descr_sconto = ref('')
const caricamentodati = ref(false)
const myCart = computed<ICart | null>(() => productStore.cart);
const myTotalPrice = computed(() => {
if (productStore.cart) {
return productStore.cart.totalPrice.toFixed(2);
} else {
return 0;
}
});
const totalPriceIntero = computed((): string => {
if (productStore.cart && productStore.cart.totalPriceIntero) {
return productStore.cart.totalPriceIntero.toFixed(2);
} else {
return '0';
}
});
const ordersCart = computed(() => {
if (!!productStore.cart) {
return productStore.cart.items;
} else {
return null;
}
});
const idOrdersCart = computed(() => {
if (!!productStore.cart) {
return productStore.cart._id;
} else {
return '';
}
});
const numOrders = computed(() => {
if (!!productStore.cart && productStore.cart.items) {
return productStore.cart.items.length;
} else {
return 0;
}
});
function closecart() {
globalStore.rightCartOpen = false;
}
function mounted() {
productStore.loadOrders();
}
function existsOrders() {
return productStore.getNumOrders() > 0;
}
async function applicaSconto(codice: string) {
try {
caricamentodati.value = true;
const rissconto = await productStore.ApplicaSconto({
cart_id: myCart.value._id,
codice_sconto: codice,
});
if (rissconto) {
if (rissconto.msg) {
tools.showNeutralNotif($q, `${rissconto.msg}`);
} else if (rissconto.valido && rissconto.mycart) {
tools.showPositiveNotif($q, 'Sconto Applicato!');
} else {
tools.showNegativeNotif($q, `${rissconto.errmsg}`);
}
codice_sconto.value = '';
descr_sconto.value = '';
if (rissconto.mycart) {
myCart.value = rissconto.mycart
};
}
} catch (error: any) {
console.log('error ApplicaSconto', error);
tools.showNegativeNotif($q, `Sconto Non Applicato! ${error?.message || ''}`);
codice_sconto.value = '';
descr_sconto.value = '';
} finally {
caricamentodati.value = false;
}
}
async function confermaCodiceSconto() {
await applicaSconto(codice_sconto.value);
}
onMounted(mounted);
return {
myCart,
myTotalPrice,
totalPriceIntero,
ordersCart,
numOrders,
closecart,
getnumItemsCart,
existsOrders,
globalStore,
t,
codice_sconto,
confermaCodiceSconto,
caricamentodati,
descr_sconto,
idOrdersCart,
};
},
});