* refactor(profile): comment out change role feature * refactor(orders): update OrderServices and ServiceSelect components to utilize ServiceCard, and enhance service fields with duration in GraphQL types * refactor(schedule): implement forbidden order states to disable editing slots with active orders * fix(deploy): update SSH configuration to use dynamic port from secrets for improved flexibility * refactor(api/orders): simplify order creation logic by removing unnecessary validations and improving error handling * refactor(contact-row): replace role display logic with useIsMaster hook for improved clarity * refactor(profile/orders-list): update header text from "Общие записи" to "Недавние записи" for better clarity gql: GetOrders add sort slot.date:desc * refactor(profile/orders-list): enhance OrderCard component by adding avatarSource prop based on user role * feat(order-form): implement date selection with event highlighting and monthly view for available time slots * refactor(i18n/config): update timeZone from 'Europe/Amsterdam' to 'Europe/Moscow' * refactor(order-form/datetime-select): enhance date selection logic to include slot availability check * refactor(datetime-format): integrate dayjs timezone support with default Moscow timezone for date and time formatting * fix(contact-row): replace useIsMaster hook with isCustomerMaster utility for role display logic * refactor(service-card): replace formatTime with getMinutes for duration display * refactor(order-datetime): update date and time handling to use datetime_start and datetime_end for improved consistency * refactor(profile): streamline profile and slot pages by integrating session user retrieval and updating booking logic with BookButton component * fix(navigation): append query parameter to bottom-nav links and enhance back navigation logic in success page
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
'use client';
|
||
|
||
import { OrderCard } from '../shared/order-card';
|
||
import { type ProfileProps } from './types';
|
||
import { useCustomerQuery, useIsMaster } from '@/hooks/api/customers';
|
||
import { useOrdersQuery } from '@/hooks/api/orders';
|
||
|
||
export function ProfileOrdersList({ telegramId }: Readonly<ProfileProps>) {
|
||
const { data: { customer } = {} } = useCustomerQuery();
|
||
const isMaster = useIsMaster();
|
||
|
||
const { data: { customer: profile } = {} } = useCustomerQuery({ telegramId });
|
||
|
||
const { data: { orders } = {}, isLoading } = useOrdersQuery(
|
||
{
|
||
filters: {
|
||
client: {
|
||
documentId: {
|
||
eq: isMaster ? profile?.documentId : customer?.documentId,
|
||
},
|
||
},
|
||
slot: {
|
||
master: {
|
||
documentId: {
|
||
eq: isMaster ? customer?.documentId : profile?.documentId,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
pagination: {
|
||
limit: 5,
|
||
},
|
||
},
|
||
Boolean(profile?.documentId) && Boolean(customer?.documentId),
|
||
);
|
||
|
||
if (!orders?.length || isLoading) return null;
|
||
|
||
return (
|
||
<div className="flex flex-col space-y-2 px-4">
|
||
<h1 className="font-bold">Недавние записи</h1>
|
||
{orders?.map(
|
||
(order) =>
|
||
order && (
|
||
<OrderCard
|
||
avatarSource={isMaster ? 'master' : 'client'}
|
||
key={order.documentId}
|
||
showDate
|
||
{...order}
|
||
/>
|
||
),
|
||
)}
|
||
</div>
|
||
);
|
||
}
|