File size: 2,113 Bytes
f305a41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { taClaims, TAClaim, User } from "@/data/dummyData";

const LOCAL_KEY = "auditor_local_ta_claims";

function readLocal(): TAClaim[] {
  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 TAClaim[];
  } catch {
    return [];
  }
}

function writeLocal(claims: TAClaim[]) {
  if (typeof window === "undefined") return;
  try {
    localStorage.setItem(LOCAL_KEY, JSON.stringify(claims));
  } catch {
    // ignore
  }
}

export function getAuditorTaClaims(user?: User | null): TAClaim[] {
  if (!user) return [];
  const base = taClaims.filter((c) => c.auditorId === user.id);
  const local = readLocal().filter((c) => c.auditorId === user.id);
  return [...base, ...local].sort(
    (a, b) =>
      new Date(b.submittedDate).getTime() - new Date(a.submittedDate).getTime(),
  );
}

export interface NewTaClaimInput {
  auditId: string;
  travelDate: string;
  fromLocation: string;
  toLocation: string;
  travelMode: string;
  distance: string;
  fareAmount: string;
  daAmount: string;
}

export function createTaClaimForAuditor(

  user: User,

  input: NewTaClaimInput,

): TAClaim {
  const now = new Date();
  const id = `TC${now.getTime()}`;
  const totalAmount =
    Number(input.fareAmount || 0) + Number(input.daAmount || 0);

  const claim: TAClaim = {
    id,
    auditorId: user.id,
    auditorName: user.name,
    auditId: input.auditId,
    applicationNo: "",
    travelDate: input.travelDate,
    fromLocation: input.fromLocation,
    toLocation: input.toLocation,
    travelMode: input.travelMode,
    distance: Number(input.distance || 0),
    fareAmount: Number(input.fareAmount || 0),
    daAmount: Number(input.daAmount || 0),
    totalAmount,
    status: "submitted",
    submittedDate: now.toISOString().slice(0, 10),
    processedDate: undefined,
  };

  const all = readLocal();
  writeLocal([...all, claim]);
  return claim;
}