Auto commit: 2025-05-24T11:21:22.644Z
This commit is contained in:
parent
5c2617a1e3
commit
c42c46f6b1
File diff suppressed because one or more lines are too long
@ -0,0 +1,41 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
const now = new Date();
|
||||
await queryInterface.bulkInsert('loyaltytier', [
|
||||
{
|
||||
name: 'Mosafer',
|
||||
annualfee: 0.00,
|
||||
pointspersar: 0.01,
|
||||
description: 'Basic support, Track bookings & visa status',
|
||||
createdAt: now,
|
||||
updatedAt: now,
|
||||
},
|
||||
{
|
||||
name: 'Elite',
|
||||
annualfee: 99.00,
|
||||
pointspersar: 0.02,
|
||||
description: 'Priority support, Exclusive hotel deals, Free booking cancellations',
|
||||
createdAt: now,
|
||||
updatedAt: now,
|
||||
},
|
||||
{
|
||||
name: 'VIB+',
|
||||
annualfee: 0.00,
|
||||
pointspersar: 0.03,
|
||||
description: 'Dedicated travel concierge, Free upgrades on select flights, VIP Umrah & Hajj benefits',
|
||||
createdAt: now,
|
||||
updatedAt: now,
|
||||
},
|
||||
], {});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.bulkDelete(
|
||||
'loyaltytier',
|
||||
{ name: { [Sequelize.Op.in]: ['Mosafer', 'Elite', 'VIB+'] } },
|
||||
{}
|
||||
);
|
||||
},
|
||||
};
|
||||
76
frontend/src/menuNavBar.ts.temp
Normal file
76
frontend/src/menuNavBar.ts.temp
Normal file
@ -0,0 +1,76 @@
|
||||
{
|
||||
href: '/loyalty',
|
||||
label: 'loyalty',
|
||||
},
|
||||
import {
|
||||
mdiMenu,
|
||||
mdiClockOutline,
|
||||
mdiCloud,
|
||||
mdiCrop,
|
||||
mdiAccount,
|
||||
mdiCogOutline,
|
||||
mdiEmail,
|
||||
mdiLogout,
|
||||
mdiThemeLightDark,
|
||||
mdiGithub,
|
||||
mdiVuejs,
|
||||
} from '@mdi/js';
|
||||
import { MenuNavBarItem } from './interfaces';
|
||||
|
||||
const menuNavBar: MenuNavBarItem[] = [
|
||||
{
|
||||
isCurrentUser: true,
|
||||
menu: [
|
||||
{
|
||||
icon: mdiAccount,
|
||||
label: 'My Profile',
|
||||
href: '/profile',
|
||||
},
|
||||
{
|
||||
isDivider: true,
|
||||
},
|
||||
{
|
||||
icon: mdiLogout,
|
||||
label: 'Log Out',
|
||||
isLogout: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
icon: mdiThemeLightDark,
|
||||
label: 'Light/Dark',
|
||||
isDesktopNoLabel: true,
|
||||
isToggleLightDark: true,
|
||||
},
|
||||
{
|
||||
icon: mdiLogout,
|
||||
label: 'Log out',
|
||||
isDesktopNoLabel: true,
|
||||
isLogout: true,
|
||||
},
|
||||
];
|
||||
|
||||
export const webPagesNavBar = [
|
||||
{
|
||||
href: '/home',
|
||||
label: 'home',
|
||||
},
|
||||
{
|
||||
href: '/about',
|
||||
label: 'about',
|
||||
},
|
||||
{
|
||||
href: '/services',
|
||||
label: 'services',
|
||||
},
|
||||
{
|
||||
href: '/contact',
|
||||
label: 'contact',
|
||||
},
|
||||
{
|
||||
href: '/faq',
|
||||
label: 'FAQ',
|
||||
},
|
||||
];
|
||||
|
||||
export default menuNavBar;
|
||||
19
frontend/src/pages/checkout.tsx
Normal file
19
frontend/src/pages/checkout.tsx
Normal file
@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
import type { ReactElement } from 'react';
|
||||
import LayoutAuthenticated from '../layouts/Authenticated';
|
||||
|
||||
const CheckoutPage = () => {
|
||||
return (
|
||||
<div className="container mx-auto py-8">
|
||||
<h1 className="text-3xl font-semibold mb-6">Checkout</h1>
|
||||
<p className="mb-4">Please log in to your account to proceed with payment and complete your booking.</p>
|
||||
{/* TODO: Insert checkout form and payment integration here */}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
CheckoutPage.getLayout = function getLayout(page: ReactElement) {
|
||||
return <LayoutAuthenticated>{page}</LayoutAuthenticated>;
|
||||
};
|
||||
|
||||
export default CheckoutPage;
|
||||
Loading…
x
Reference in New Issue
Block a user