89 lines
2.4 KiB
TypeScript
89 lines
2.4 KiB
TypeScript
/**
|
|
* Tenant creation service - Simplified implementation
|
|
*/
|
|
|
|
import { useCallback, useState } from 'react';
|
|
import { useRegisterBakery } from '../../../../api';
|
|
import { useTenantStore } from '../../../../stores/tenant.store';
|
|
import { useOnboardingStore } from '../core/store';
|
|
import type { BakeryRegistration, TenantResponse } from '../../../../api';
|
|
|
|
export const useTenantCreation = () => {
|
|
const registerBakeryMutation = useRegisterBakery();
|
|
const { setCurrentTenant, loadUserTenants } = useTenantStore();
|
|
const { setStepData } = useOnboardingStore();
|
|
|
|
// Simple, direct state management
|
|
const [isLoading, setIsLoading] = useState(false);
|
|
const [error, setError] = useState<string | null>(null);
|
|
const [isSuccess, setIsSuccess] = useState(false);
|
|
const [tenantData, setTenantData] = useState<TenantResponse | null>(null);
|
|
|
|
const createTenant = useCallback(async (bakeryData: BakeryRegistration): Promise<boolean> => {
|
|
if (!bakeryData) {
|
|
setError('Los datos de la panadería son requeridos');
|
|
return false;
|
|
}
|
|
|
|
setIsLoading(true);
|
|
setError(null);
|
|
|
|
try {
|
|
// Call API to register bakery
|
|
const tenantResponse: TenantResponse = await registerBakeryMutation.mutateAsync(bakeryData);
|
|
|
|
// Update tenant store
|
|
setCurrentTenant(tenantResponse);
|
|
|
|
// Reload user tenants
|
|
await loadUserTenants();
|
|
|
|
// Update state
|
|
setTenantData(tenantResponse);
|
|
setIsSuccess(true);
|
|
|
|
// Update onboarding data
|
|
setStepData('setup', {
|
|
bakery: {
|
|
...bakeryData,
|
|
tenantCreated: true,
|
|
tenant_id: tenantResponse.id,
|
|
} as any,
|
|
});
|
|
|
|
console.log('✅ Tenant created successfully');
|
|
return true;
|
|
} catch (error) {
|
|
const errorMessage = error instanceof Error ? error.message : 'Error creating tenant';
|
|
setError(errorMessage);
|
|
setIsSuccess(false);
|
|
return false;
|
|
} finally {
|
|
setIsLoading(false);
|
|
}
|
|
}, [registerBakeryMutation, setCurrentTenant, loadUserTenants, setStepData]);
|
|
|
|
const clearError = useCallback(() => {
|
|
setError(null);
|
|
}, []);
|
|
|
|
const reset = useCallback(() => {
|
|
setIsLoading(false);
|
|
setError(null);
|
|
setIsSuccess(false);
|
|
setTenantData(null);
|
|
}, []);
|
|
|
|
return {
|
|
// State
|
|
isLoading,
|
|
error,
|
|
isSuccess,
|
|
tenantData,
|
|
|
|
// Actions
|
|
createTenant,
|
|
clearError,
|
|
reset,
|
|
};
|
|
}; |