2024-11-06 15:17:53 +03:00

180 lines
5.0 KiB
Svelte
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script>
// @ts-nocheck
import { browser } from "$app/environment";
import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth.js";
import { makeGet, makePost } from "$lib/tools/requests/requests.js";
import { sayError } from "$lib/tools/toaster/Toaster.js";
import { redirect } from "$lib/tools/url/URLTools.js";
export let data;
let { reqID } = data;
let {currency} = data;
let { token } = data;
let reqInfo = [];
let value_bankName;
let value_cardNumber;
let value_phone;
let value_status;
let value_limit;
let canChange = false;
$: reqInfo, bindValues();
$: value_cardNumber, value_phone, value_status, checkFields();
function bindValues() {
value_bankName = reqInfo[0]?.bank_name;
value_cardNumber = reqInfo[0]?.cardnumber;
value_phone = reqInfo[0]?.phone;
value_status = reqInfo[0]?.status === "t";
value_limit = Number(reqInfo[0]?.daily_volume_limit);
value_bankName = reqInfo[0]?.bank_id;
}
function checkFields() {
if (value_cardNumber?.length !== 16) {
canChange = false;
return;
}
if (value_phone?.length < 6) {
canChange = false;
return;
}
if (value_limit < 0) {
canChange = false;
return;
}
canChange = true;
}
async function getReqInfo() {
const result = await makePost(
"getRequisite",
{
token: token,
},
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
if (result.status === 401) {
sayError("Данные авторизации устарели");
// window.location.href = "/";
redirect("/admin/");
return;
}
if (result.error) {
sayError("Не удалось получить реквизиты пользователя");
return;
}
console.log(result.data);
reqInfo = result.data.filter((s) => s.id === reqID);
}
async function changeRequisite() {
//changeRequisite
canChange = false;
const result = await makePost(
"changeRequisite",
{
...reqInfo[0],
bankname: value_bankName,
cardnumber: value_cardNumber,
phone: value_phone,
status: value_status ? "true" : "false",
limit: value_limit.toString(),
},
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
if (result.status === 401) {
sayError("Данные авторизации устарели");
// window.location.href = "/";
redirect("/admin/");
// canChange = true;
return;
}
if (result.error) {
sayError("Не удалось изменить реквизит пользователя");
canChange = true;
return;
}
document.getElementById("ref")?.click();
// canChange = true;
}
let activeBanks = [];
async function getActiveBanks() {
let res = await makeGet(
"client/banksList",
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
if (res.error) {
sayError("Не удалось получить банки. Ошибка #4143");
} else {
console.log(res.data);
activeBanks = res.data;
}
}
if (browser) {
getReqInfo();
getActiveBanks();
}
</script>
<div class="w-full flex flex-col gap-8">
<div class="flex gap-4">
<div class="bg-accent rounded-[4px] w-[10px] h-full"></div>
<h1 class="text-2xl font-semibold">Изменение реквизита (ID: {reqID})</h1>
</div>
<div class="w-full flex flex-col p-4 gap-2 rounded-box bg-base-300">
{#each reqInfo as req}
<select
bind:value={value_bankName}
class="select select-bordered w-full text-base"
>
<option disabled selected value="-1">Банк</option>
{#each activeBanks as bank}
<option value={bank.id}>{bank.name}</option>
{/each}
<!-- <option value="sber">Сбер</option> -->
<!-- <option value="2">Модератор</option>
<option value="4">Администратор</option> -->
</select>
<label class="input input-bordered flex items-center gap-2">
Номер карты
<input
type="text"
class="grow text-info"
bind:value={value_cardNumber}
/>
</label>
<label class="input input-bordered flex items-center gap-2">
Телефон
<input type="text" class="grow text-info" bind:value={value_phone} />
</label>
<label class="input input-bordered flex items-center gap-2">
Лимит ({currency})
<input type="number" class="grow text-info" bind:value={value_limit} />
</label>
<div class="flex p-4 items-center gap-2">
<p>Активный:</p>
<input
bind:checked={value_status}
type="checkbox"
class="toggle toggle-primary"
/>
</div>
<button
on:click={() => {
changeRequisite();
}}
class="btn btn-primary"
disabled={!canChange}>Сохранить</button
>
<a href={"/admin/user/profile/" + token} class="hidden" id="ref"></a>
{/each}
</div>
</div>