MPEDA / src /lib /farmLocal.ts
sarveshpatel's picture
Upload 139 files
f305a41 verified
import { farmApplications, FarmApplication, User } from "@/data/dummyData";
const LOCAL_KEY = "farm_local_applications";
function readLocal(): FarmApplication[] {
if (typeof window === "undefined") return [];
try {
const raw = localStorage.getItem(LOCAL_KEY);
if (!raw) return [];
const parsed = JSON.parse(raw);
if (!Array.isArray(parsed)) return [];
return parsed as FarmApplication[];
} catch {
return [];
}
}
function writeLocal(apps: FarmApplication[]) {
if (typeof window === "undefined") return;
try {
localStorage.setItem(LOCAL_KEY, JSON.stringify(apps));
} catch {
// ignore
}
}
export function getUserFarmApplications(user?: User | null): FarmApplication[] {
if (!user) return [];
const base = farmApplications.filter(
(app) => app.email.toLowerCase() === user.email.toLowerCase(),
);
const local = readLocal().filter(
(app) => app.email.toLowerCase() === user.email.toLowerCase(),
);
return [...base, ...local].sort(
(a, b) => new Date(b.submittedDate).getTime() - new Date(a.submittedDate).getTime(),
);
}
export function getFarmApplicationById(id: string): FarmApplication | undefined {
const base = farmApplications.find((app) => app.id === id);
if (base) return base;
const local = readLocal().find((app) => app.id === id);
return local;
}
export interface NewFarmApplicationInput {
farmName: string;
farmerName: string;
waterArea: string;
species: string;
state: string;
district: string;
address: string;
enrollmentId: string;
email: string;
phone: string;
}
export function createFarmApplicationForUser(
user: User,
data: NewFarmApplicationInput,
): FarmApplication {
const now = new Date();
const id = `FL${now.getTime()}`;
const applicationNo = `SHAP/F/${now.getFullYear()}/${now
.getTime()
.toString()
.slice(-4)}`;
const app: FarmApplication = {
id,
applicationNo,
farmName: data.farmName,
farmerName: data.farmerName,
enrollmentId: data.enrollmentId,
email: user.email,
phone: data.phone,
state: data.state,
district: data.district,
address: data.address,
waterArea: data.waterArea,
species: data.species,
status: "submitted",
currentStage: "submission",
submittedDate: now.toISOString().slice(0, 10),
assignedFOI: undefined,
assignedFO: undefined,
assignedCCOfficer: undefined,
assignedAuditor: undefined,
paymentStatus: "pending",
paymentAmount: 0,
audits: [],
certificates: [],
cropDetails: [],
};
const all = readLocal();
writeLocal([...all, app]);
return app;
}