Merge pull request #588 from Tria-plc/freight_feature/usermanagement

fix issues
This commit is contained in:
marshal
2026-07-09 23:27:02 +03:00
committed by GitHub
29 changed files with 1143 additions and 147 deletions

View File

@@ -44,7 +44,8 @@ import {
} from "@/types/rule-engine";
import type {
AssignBookingsPayload,
BatchBoardSchedule,
BatchBoardFilters,
BatchBoardListResponse,
BatchBoardScheduleDetail,
BookableSchedule,
BookingWindow,
@@ -223,11 +224,14 @@ export const api = {
() => QUERY_KEYS.TRAIN_SCHEDULING.schedules(),
),
batchBoard: endpoint<void, BatchBoardSchedule[]>(
batchBoard: endpoint<
{ filters?: BatchBoardFilters },
BatchBoardListResponse
>(
"train-scheduling",
"batch-board",
() => trainSchedulingService.getBatchBoard(),
() => QUERY_KEYS.TRAIN_SCHEDULING.batchBoard(),
({ filters }) => trainSchedulingService.getBatchBoard(filters),
({ filters }) => QUERY_KEYS.TRAIN_SCHEDULING.batchBoard(filters),
),
allBookingWindows: endpoint<void, StaffBookingWindow[]>(

View File

@@ -21,6 +21,19 @@ export interface BookingListFilter {
bookingType?: string;
tradeDirection?: string;
paymentCurrency?: string;
paymentStatus?: string;
/** ISO date-time — bookings created on/after. */
createdFrom?: string;
/** ISO date-time — bookings created on/before (pass end-of-day for inclusive). */
createdTo?: string;
/** ISO date-time — bookings scheduled on/after. */
scheduledFrom?: string;
/** ISO date-time — bookings scheduled on/before (pass end-of-day for inclusive). */
scheduledTo?: string;
originYardId?: string;
destinationYardId?: string;
/** "true" = government bookings only, "false" = private only. */
isGovernment?: "true" | "false";
page?: number;
pageSize?: number;
sortBy?: string;
@@ -130,6 +143,14 @@ export const bookingsService = {
if (filter.bookingType) params.bookingType = filter.bookingType;
if (filter.tradeDirection) params.tradeDirection = filter.tradeDirection;
if (filter.paymentCurrency) params.paymentCurrency = filter.paymentCurrency;
if (filter.paymentStatus) params.paymentStatus = filter.paymentStatus;
if (filter.createdFrom) params.createdFrom = filter.createdFrom;
if (filter.createdTo) params.createdTo = filter.createdTo;
if (filter.scheduledFrom) params.scheduledFrom = filter.scheduledFrom;
if (filter.scheduledTo) params.scheduledTo = filter.scheduledTo;
if (filter.originYardId) params.originYardId = filter.originYardId;
if (filter.destinationYardId) params.destinationYardId = filter.destinationYardId;
if (filter.isGovernment) params.isGovernment = filter.isGovernment;
}
const response = await client.get<BookingListSummary>(B.LIST_SUMMARY, {
params,
@@ -154,6 +175,14 @@ export const bookingsService = {
if (filter.bookingType) params.bookingType = filter.bookingType;
if (filter.tradeDirection) params.tradeDirection = filter.tradeDirection;
if (filter.paymentCurrency) params.paymentCurrency = filter.paymentCurrency;
if (filter.paymentStatus) params.paymentStatus = filter.paymentStatus;
if (filter.createdFrom) params.createdFrom = filter.createdFrom;
if (filter.createdTo) params.createdTo = filter.createdTo;
if (filter.scheduledFrom) params.scheduledFrom = filter.scheduledFrom;
if (filter.scheduledTo) params.scheduledTo = filter.scheduledTo;
if (filter.originYardId) params.originYardId = filter.originYardId;
if (filter.destinationYardId) params.destinationYardId = filter.destinationYardId;
if (filter.isGovernment) params.isGovernment = filter.isGovernment;
}
const response = await client.get<PaginatedBookings>(B.BASE, {
params,

View File

@@ -3,7 +3,8 @@ import { api as client } from "../auth/http";
import { unwrap } from "@/utils/endpoint";
import { URL_CONSTANTS } from "@/constants/URLS";
import type {
BatchBoardSchedule,
BatchBoardFilters,
BatchBoardListResponse,
BatchBoardScheduleDetail,
BookableSchedule,
BookingWindow,
@@ -100,9 +101,25 @@ export const trainSchedulingService = {
return unwrap(response.data);
},
getBatchBoard: async (): Promise<BatchBoardSchedule[]> => {
const response = await client.get<BatchBoardSchedule[]>(
getBatchBoard: async (
filters: BatchBoardFilters = {},
): Promise<BatchBoardListResponse> => {
const params: Record<string, string | number> = {};
if (filters.page) params.page = filters.page;
if (filters.pageSize) params.pageSize = filters.pageSize;
if (filters.statuses?.length) params.statuses = filters.statuses.join(",");
if (filters.bookingWindowStatus)
params.bookingWindowStatus = filters.bookingWindowStatus;
if (filters.search?.trim()) params.search = filters.search.trim();
if (filters.departureFrom) params.departureFrom = filters.departureFrom;
if (filters.departureTo) params.departureTo = filters.departureTo;
if (filters.createdFrom) params.createdFrom = filters.createdFrom;
if (filters.createdTo) params.createdTo = filters.createdTo;
if (filters.sortBy) params.sortBy = filters.sortBy;
if (filters.sortOrder) params.sortOrder = filters.sortOrder;
const response = await client.get<BatchBoardListResponse>(
URL_CONSTANTS.TRAIN_SCHEDULING.BATCH_BOARD,
{ params },
);
return unwrap(response.data);
},