bug fix
This commit is contained in:
@@ -242,10 +242,10 @@ export default function FinancePage({ user }: { user: Role }) {
|
||||
<CreditCard size={18} />
|
||||
{t("Bandlovlar va to‘lovlar")}
|
||||
</button>
|
||||
{user === "moderator" ||
|
||||
{(user === "moderator" ||
|
||||
user === "buxgalter" ||
|
||||
user === "admin" ||
|
||||
(user === "superuser" && (
|
||||
user === "superuser") && (
|
||||
<button
|
||||
className={`px-6 py-3 rounded-lg flex items-center gap-2 transition-all ${
|
||||
tab === "agencies"
|
||||
@@ -257,7 +257,7 @@ export default function FinancePage({ user }: { user: Role }) {
|
||||
<Users size={18} />
|
||||
{t("Agentlik hisobotlari")}
|
||||
</button>
|
||||
))}
|
||||
)}
|
||||
</div>
|
||||
|
||||
{tab === "bookings" && (
|
||||
@@ -443,10 +443,10 @@ export default function FinancePage({ user }: { user: Role }) {
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
{user === "moderator" ||
|
||||
{(user === "moderator" ||
|
||||
user === "buxgalter" ||
|
||||
user === "admin" ||
|
||||
(user === "superuser" && (
|
||||
user === "superuser") && (
|
||||
<>
|
||||
{tab === "agencies" && (
|
||||
<>
|
||||
@@ -548,8 +548,7 @@ export default function FinancePage({ user }: { user: Role }) {
|
||||
<ChevronLeft className="w-5 h-5" />
|
||||
</button>
|
||||
|
||||
{[...Array(agencyData?.data.data.total_pages)].map(
|
||||
(_, i) => (
|
||||
{[...Array(agencyData?.data.data.total_pages)].map((_, i) => (
|
||||
<button
|
||||
key={i}
|
||||
onClick={() => setCurrentPageAgency(i + 1)}
|
||||
@@ -561,8 +560,7 @@ export default function FinancePage({ user }: { user: Role }) {
|
||||
>
|
||||
{i + 1}
|
||||
</button>
|
||||
),
|
||||
)}
|
||||
))}
|
||||
|
||||
<button
|
||||
disabled={
|
||||
@@ -584,7 +582,7 @@ export default function FinancePage({ user }: { user: Role }) {
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
))}
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -109,20 +109,20 @@ export const TourformSchema = z.object({
|
||||
tariff: z.number().min(1, { message: "Transport ID majburiy" }),
|
||||
price: z
|
||||
.number()
|
||||
.min(0, { message: "Narx 0 dan kichik bo‘lishi mumkin emas" }),
|
||||
.min(0, { message: "Narx 0 dan kichik bo'lishi mumkin emas" }),
|
||||
}),
|
||||
)
|
||||
.min(1, { message: "Kamida bitta transport tanlang." }),
|
||||
.optional(),
|
||||
transport: z
|
||||
.array(
|
||||
z.object({
|
||||
transport: z.number().min(1, { message: "Transport ID majburiy" }),
|
||||
price: z
|
||||
.number()
|
||||
.min(0, { message: "Narx 0 dan kichik bo‘lishi mumkin emas" }),
|
||||
.min(0, { message: "Narx 0 dan kichik bo'lishi mumkin emas" }),
|
||||
}),
|
||||
)
|
||||
.min(1, { message: "Kamida bitta transport tanlang." }),
|
||||
.optional(),
|
||||
banner: z.any().nullable(),
|
||||
images: z
|
||||
.array(z.union([z.instanceof(File), z.string()]))
|
||||
@@ -199,7 +199,7 @@ export const TourformSchema = z.object({
|
||||
name_ru: z.string().min(1, { message: "Xizmat nomi (RU) majburiy" }),
|
||||
price: z
|
||||
.number()
|
||||
.min(0, { message: "Narx manfiy bo‘lishi mumkin emas." }),
|
||||
.min(0, { message: "Narx manfiy bo'lishi mumkin emas." }),
|
||||
}),
|
||||
)
|
||||
.optional(),
|
||||
|
||||
@@ -64,6 +64,7 @@ export interface GetOneTours {
|
||||
{
|
||||
price: number;
|
||||
transport: {
|
||||
id: number;
|
||||
name: string;
|
||||
icon_name: string;
|
||||
};
|
||||
@@ -394,6 +395,7 @@ export interface GetDetailTours {
|
||||
transports: {
|
||||
price: number;
|
||||
transport: {
|
||||
id: number;
|
||||
name: string;
|
||||
icon_name: string;
|
||||
};
|
||||
@@ -447,9 +449,7 @@ export interface GetDetailTours {
|
||||
];
|
||||
tariff: [
|
||||
{
|
||||
tariff: {
|
||||
name: string;
|
||||
};
|
||||
tariff: number;
|
||||
price: number;
|
||||
},
|
||||
];
|
||||
|
||||
@@ -330,11 +330,11 @@ const StepOne = ({
|
||||
if (value.banner instanceof File) {
|
||||
formData.append("image_banner", value.banner);
|
||||
}
|
||||
value.tarif.forEach((e, i) => {
|
||||
value.tarif?.forEach((e, i) => {
|
||||
formData.append(`tariff[${i}]tariff`, String(e.tariff));
|
||||
formData.append(`tariff[${i}]price`, String(e.price));
|
||||
});
|
||||
value.transport.forEach((e, i) => {
|
||||
value.transport?.forEach((e, i) => {
|
||||
formData.append(`transports[${i}]transport`, String(e.transport));
|
||||
formData.append(`transports[${i}]price`, String(e.price));
|
||||
});
|
||||
@@ -1005,9 +1005,8 @@ const StepOne = ({
|
||||
onChange={(e) => {
|
||||
const raw = e.target.value.replace(/\D/g, "");
|
||||
const num = Number(raw);
|
||||
const updatedTransport = form
|
||||
.getValues("tarif")
|
||||
.map((t, i) =>
|
||||
const currentTarifs = form.getValues("tarif") || [];
|
||||
const updatedTransport = currentTarifs.map((t, i) =>
|
||||
i === idx ? { ...t, price: num } : t,
|
||||
);
|
||||
|
||||
@@ -1024,7 +1023,7 @@ const StepOne = ({
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => {
|
||||
const current = form.getValues("tarif");
|
||||
const current = form.getValues("tarif") || [];
|
||||
form.setValue(
|
||||
"tarif",
|
||||
current.filter((_, i) => i !== idx),
|
||||
@@ -1057,15 +1056,14 @@ const StepOne = ({
|
||||
<CommandList>
|
||||
<CommandGroup heading={t("Mavjud tariflar")}>
|
||||
{tariff?.data?.data?.results?.map((item: any) => {
|
||||
const selected = form
|
||||
.getValues("tarif")
|
||||
.some((t) => t.tariff === item.id);
|
||||
const currentTarifs = form.getValues("tarif") || [];
|
||||
const selected = currentTarifs.some((t) => t.tariff === item.id);
|
||||
|
||||
return (
|
||||
<CommandItem
|
||||
key={item.id}
|
||||
onSelect={() => {
|
||||
const current = form.getValues("tarif");
|
||||
const current = form.getValues("tarif") || [];
|
||||
if (selected) {
|
||||
form.setValue(
|
||||
"tarif",
|
||||
@@ -1139,9 +1137,8 @@ const StepOne = ({
|
||||
onChange={(e) => {
|
||||
const raw = e.target.value.replace(/\D/g, "");
|
||||
const num = Number(raw);
|
||||
const updatedTransport = form
|
||||
.getValues("transport")
|
||||
.map((t, i) =>
|
||||
const currentTransports = form.getValues("transport") || [];
|
||||
const updatedTransport = currentTransports.map((t, i) =>
|
||||
i === idx ? { ...t, price: num } : t,
|
||||
);
|
||||
|
||||
@@ -1158,7 +1155,7 @@ const StepOne = ({
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => {
|
||||
const current = form.getValues("transport");
|
||||
const current = form.getValues("transport") || [];
|
||||
form.setValue(
|
||||
"transport",
|
||||
current.filter((_, i) => i !== idx),
|
||||
@@ -1193,15 +1190,14 @@ const StepOne = ({
|
||||
<CommandList>
|
||||
<CommandGroup heading={t("Mavjud transportlar")}>
|
||||
{transport?.data?.data?.results?.map((item: any) => {
|
||||
const selected = form
|
||||
.getValues("transport")
|
||||
.some((t) => t.transport === item.id);
|
||||
const currentTransports = form.getValues("transport") || [];
|
||||
const selected = currentTransports.some((t) => t.transport === item.id);
|
||||
|
||||
return (
|
||||
<CommandItem
|
||||
key={item.id}
|
||||
onSelect={() => {
|
||||
const current = form.getValues("transport");
|
||||
const current = form.getValues("transport") || [];
|
||||
if (selected) {
|
||||
form.setValue(
|
||||
"transport",
|
||||
|
||||
@@ -145,7 +145,7 @@ const Tours = ({ user }: { user: Role }) => {
|
||||
<Button
|
||||
onClick={() => navigate("/tours/create")}
|
||||
variant="default"
|
||||
disabled={user !== "tour_admin"}
|
||||
// disabled={user !== "tour_admin"}
|
||||
>
|
||||
<PlusCircle className="w-5 h-5 mr-2" /> {t("Yangi tur qo'shish")}
|
||||
</Button>
|
||||
|
||||
Reference in New Issue
Block a user