import { Button, Dialog, FormContainer, FormItem, Input, Notification, Select, Tabs, toast, } from '@/components/ui' import TabList from '@/components/ui/Tabs/TabList' import TabNav from '@/components/ui/Tabs/TabNav' import { SeedTenantDataInput } from '@/proxy/admin/tenant/models' import { deleteTenantDefaultConnectionString, getTenantDefaultConnectionString, postSeedTenantData, putTenantDefaultConnectionString, } from '@/services/tenant.service' import { useLocalization } from '@/utils/hooks/useLocalization' import { Field, FieldProps, Form, Formik, FormikHelpers } from 'formik' import { Suspense, useEffect, useRef, useState } from 'react' import * as Yup from 'yup' import { dataSourceTypeOptions } from '../listForm/edit/options' import { DataSourceTypeEnum } from '@/proxy/form/models' export interface ConnectionStringDto { id: string name: string value: string isNew?: boolean dataSourceType?: number } const schemaCs = Yup.object().shape({ id: Yup.string().required(), name: Yup.string().required(), dataSourceType: Yup.number().required(), value: Yup.string().required(), }) const schemaSeed = Yup.object().shape({ id: Yup.string().required(), adminEmail: Yup.string().required(), adminPassword: Yup.string().required(), }) function TenantConnectionString({ open, onDialogClose, name, id, }: { open: boolean onDialogClose: () => void name: string id: string }) { const { translate } = useLocalization() const [currentTab, setCurrentTab] = useState('cs') const [loading, setLoading] = useState(true) const [connectionString, setConnectionString] = useState() const fetchDataTenants = async () => { if (!id) { return } setLoading(true) const response = await getTenantDefaultConnectionString(id) let value = '' let isNew = false if (response.data.length == 0) { isNew = true value = '' } else { isNew = false value = response.data } setConnectionString({ id, name: 'Default', value, isNew, ...(value && { dataSourceType: value.startsWith('Server') ? 1 : 2 }), }) setLoading(false) } useEffect(() => { fetchDataTenants() }, [id]) const deleteConnectionString = async () => { if (!id) { return } setLoading(true) try { await deleteTenantDefaultConnectionString(id) toast.push( {translate('::AbpTenantManagement.Tenants.ConnectionStringDeleted')} , { placement: 'top-end', }, ) onDialogClose() } catch (error) { toast.push( {'Hata'} , { placement: 'top-end', }, ) } finally { setLoading(false) } } const handleSubmit = async ( values: ConnectionStringDto, { setSubmitting }: FormikHelpers, ) => { if (!id) { return } setLoading(true) setSubmitting(true) try { await putTenantDefaultConnectionString(id, values.value) toast.push( {translate('::AbpTenantManagement.Tenants.ConnectionStringSaved')} , { placement: 'top-end', }, ) await fetchDataTenants() //onDialogClose() } catch (error) { toast.push( {'Hata'} , { placement: 'top-end', }, ) } finally { setLoading(false) setSubmitting(false) } } const handleSubmitSeed = async ( values: SeedTenantDataInput, { setSubmitting }: FormikHelpers, ) => { if (!id) { return } setLoading(true) setSubmitting(true) try { await postSeedTenantData(values) toast.push( {translate('::AbpTenantManagement.Tenants.DatabaseSeeded')} , { placement: 'top-end', }, ) } catch (error) { toast.push( {'Hata'} , { placement: 'top-end', }, ) } finally { setLoading(false) setSubmitting(false) } } if (!connectionString) { return <> } return (
{name}

Connection String {connectionString.isNew ? translate('::Abp.Account.SignUp') : translate('::AbpTenantManagement.Tenants.DatabaseSeed')}
}> {currentTab === 'cs' && ( {({ touched, errors, values, isSubmitting }) => { return (
{({ field, form }: FieldProps) => (