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