Remove tenantLastName field from LocationEditForm and database
- Removed tenantLastName from BillingLocation interface - Updated LocationEditForm to remove tenantLastName input field - Removed tenantLastName from all database operations (insert and update) - Updated form validation schema to remove tenantLastName validation - Updated ViewLocationCard to use only tenantFirstName for payer name - Removed tenantLastName from tenant field state tracking 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,6 @@ export type State = {
|
||||
locationName?: string[];
|
||||
generateTenantCode?: string[];
|
||||
tenantFirstName?: string[];
|
||||
tenantLastName?: string[];
|
||||
tenantStreet?: string[];
|
||||
tenantTown?: string[];
|
||||
autoBillFwd?: string[];
|
||||
@@ -38,7 +37,6 @@ const FormSchema = (t:IntlTemplateFn) => z.object({
|
||||
locationName: z.coerce.string().min(1, t("location-name-required")),
|
||||
generateTenantCode: z.boolean().optional().nullable(),
|
||||
tenantFirstName: z.string().optional().nullable(),
|
||||
tenantLastName: z.string().optional().nullable(),
|
||||
tenantStreet: z.string().max(27).optional().nullable(),
|
||||
tenantTown: z.string().max(27).optional().nullable(),
|
||||
autoBillFwd: z.boolean().optional().nullable(),
|
||||
@@ -52,7 +50,7 @@ const FormSchema = (t:IntlTemplateFn) => z.object({
|
||||
})
|
||||
// dont include the _id field in the response
|
||||
.omit({ _id: true })
|
||||
// Add conditional validation: if generateTenantCode is true, tenant names are required
|
||||
// Add conditional validation: if generateTenantCode is true, tenant fields are required
|
||||
.refine((data) => {
|
||||
if (data.generateTenantCode) {
|
||||
return !!data.tenantFirstName && data.tenantFirstName.trim().length > 0;
|
||||
@@ -62,15 +60,6 @@ const FormSchema = (t:IntlTemplateFn) => z.object({
|
||||
message: t("tenant-first-name-required"),
|
||||
path: ["tenantFirstName"],
|
||||
})
|
||||
.refine((data) => {
|
||||
if (data.generateTenantCode) {
|
||||
return !!data.tenantLastName && data.tenantLastName.trim().length > 0;
|
||||
}
|
||||
return true;
|
||||
}, {
|
||||
message: t("tenant-last-name-required"),
|
||||
path: ["tenantLastName"],
|
||||
})
|
||||
.refine((data) => {
|
||||
if (data.generateTenantCode) {
|
||||
return !!data.tenantStreet && data.tenantStreet.trim().length > 0;
|
||||
@@ -125,7 +114,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
locationName: formData.get('locationName'),
|
||||
generateTenantCode: formData.get('generateTenantCode') === 'on',
|
||||
tenantFirstName: formData.get('tenantFirstName') || null,
|
||||
tenantLastName: formData.get('tenantLastName') || null,
|
||||
tenantStreet: formData.get('tenantStreet') || null,
|
||||
tenantTown: formData.get('tenantTown') || null,
|
||||
autoBillFwd: formData.get('autoBillFwd') === 'on',
|
||||
@@ -150,7 +138,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
locationName,
|
||||
generateTenantCode,
|
||||
tenantFirstName,
|
||||
tenantLastName,
|
||||
tenantStreet,
|
||||
tenantTown,
|
||||
autoBillFwd,
|
||||
@@ -193,7 +180,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
name: locationName,
|
||||
generateTenantCode: generateTenantCode || false,
|
||||
tenantFirstName: tenantFirstName || null,
|
||||
tenantLastName: tenantLastName || null,
|
||||
tenantStreet: tenantStreet || null,
|
||||
tenantTown: tenantTown || null,
|
||||
autoBillFwd: autoBillFwd || false,
|
||||
@@ -224,7 +210,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
name: locationName,
|
||||
generateTenantCode: generateTenantCode || false,
|
||||
tenantFirstName: tenantFirstName || null,
|
||||
tenantLastName: tenantLastName || null,
|
||||
tenantStreet: tenantStreet || null,
|
||||
tenantTown: tenantTown || null,
|
||||
autoBillFwd: autoBillFwd || false,
|
||||
@@ -248,7 +233,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
name: locationName,
|
||||
generateTenantCode: generateTenantCode || false,
|
||||
tenantFirstName: tenantFirstName || null,
|
||||
tenantLastName: tenantLastName || null,
|
||||
tenantStreet: tenantStreet || null,
|
||||
tenantTown: tenantTown || null,
|
||||
autoBillFwd: autoBillFwd || false,
|
||||
@@ -271,7 +255,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
notes: null,
|
||||
generateTenantCode: generateTenantCode || false,
|
||||
tenantFirstName: tenantFirstName || null,
|
||||
tenantLastName: tenantLastName || null,
|
||||
tenantStreet: tenantStreet || null,
|
||||
tenantTown: tenantTown || null,
|
||||
autoBillFwd: autoBillFwd || false,
|
||||
@@ -346,7 +329,6 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
|
||||
notes: null,
|
||||
generateTenantCode: generateTenantCode || false,
|
||||
tenantFirstName: tenantFirstName || null,
|
||||
tenantLastName: tenantLastName || null,
|
||||
tenantStreet: tenantStreet || null,
|
||||
tenantTown: tenantTown || null,
|
||||
autoBillFwd: autoBillFwd || false,
|
||||
|
||||
@@ -53,8 +53,6 @@ export interface BillingLocation {
|
||||
generateTenantCode?: boolean | null;
|
||||
/** (optional) tenant first name */
|
||||
tenantFirstName?: string | null;
|
||||
/** (optional) tenant last name */
|
||||
tenantLastName?: string | null;
|
||||
/** (optional) tenant street */
|
||||
tenantStreet?: string | null;
|
||||
/** (optional) tenant town */
|
||||
|
||||
@@ -46,7 +46,6 @@ export const LocationEditForm: FC<LocationEditFormProps> = ({ location, yearMont
|
||||
// Track tenant field values for real-time validation
|
||||
const [tenantFields, setTenantFields] = useState({
|
||||
tenantFirstName: location?.tenantFirstName ?? "",
|
||||
tenantLastName: location?.tenantLastName ?? "",
|
||||
tenantStreet: location?.tenantStreet ?? "",
|
||||
tenantTown: location?.tenantTown ?? "",
|
||||
tenantEmail: location?.tenantEmail ?? "",
|
||||
@@ -123,29 +122,6 @@ export const LocationEditForm: FC<LocationEditFormProps> = ({ location, yearMont
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="form-control w-full">
|
||||
<label className="label">
|
||||
<span className="label-text">{t("tenant-last-name-label")}</span>
|
||||
</label>
|
||||
<input
|
||||
id="tenantLastName"
|
||||
name="tenantLastName"
|
||||
type="text"
|
||||
placeholder={t("tenant-last-name-placeholder")}
|
||||
className="input input-bordered w-full placeholder:text-gray-600"
|
||||
defaultValue={location?.tenantLastName ?? ""}
|
||||
onChange={(e) => handleTenantFieldChange("tenantLastName", e.target.value)}
|
||||
/>
|
||||
<div id="tenantLastName-error" aria-live="polite" aria-atomic="true">
|
||||
{state.errors?.tenantLastName &&
|
||||
state.errors.tenantLastName.map((error: string) => (
|
||||
<p className="mt-2 text-sm text-red-500" key={error}>
|
||||
{error}
|
||||
</p>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="form-control w-full">
|
||||
<label className="label">
|
||||
<span className="label-text">{t("tenant-street-label")}</span>
|
||||
|
||||
@@ -16,7 +16,7 @@ export interface ViewLocationCardProps {
|
||||
|
||||
export const ViewLocationCard:FC<ViewLocationCardProps> = ({location, userSettings}) => {
|
||||
|
||||
const { _id, name, yearMonth, bills, tenantFirstName, tenantLastName, tenantStreet, tenantTown } = location;
|
||||
const { _id, name, yearMonth, bills, tenantFirstName, tenantStreet, tenantTown } = location;
|
||||
|
||||
const t = useTranslations("home-page.location-card");
|
||||
|
||||
@@ -25,7 +25,7 @@ export const ViewLocationCard:FC<ViewLocationCardProps> = ({location, userSettin
|
||||
|
||||
const paymentParams:PaymentParams = {
|
||||
Iznos: (monthlyExpense/100).toFixed(2).replace(".",","),
|
||||
ImePlatitelja: (tenantFirstName && tenantLastName) ? `${tenantFirstName} ${tenantLastName}` : "",
|
||||
ImePlatitelja: tenantFirstName ?? "",
|
||||
AdresaPlatitelja: tenantStreet ?? "",
|
||||
SjedistePlatitelja: tenantTown ?? "",
|
||||
Primatelj: (userSettings?.firstName && userSettings?.lastName) ? `${userSettings.firstName} ${userSettings.lastName}` : "",
|
||||
|
||||
Reference in New Issue
Block a user