]> git.plutz.net Git - invoices/blob - clients.sh
sort invoice list, newest to oldest
[invoices] / clients.sh
1 #!/bin/sh
2
3 edit_client(){
4   id="$1"
5   if [ -f "clients/$id" ]; then
6     read -r address hourly <"clients/$id"
7   fi
8   [ "$address" ] || address="address="
9   [  "$hourly" ] ||  hourly="hourly="
10   printf '
11     [form method="POST" action="/update_client"
12       [hidden "id" "%s"]
13       <textarea name="address" placeholder="address">
14 %s</textarea>
15       [label for=hourly Hourly Rate:]
16       [input #hourly type=number name=hourly value="%s"]
17       [submit "update" "%s" Update]
18     ]' \
19     "$(HTML $id)" \
20     "$(UNSTRING "${address#address=}" |HTML)" \
21     "$(UNSTRING "${hourly#hourly=}" |grep -xE '[0-9]+')" \
22     "$(transid "clients/$id")"
23 }
24
25 list_clients(){
26   [ -d clients/ ] && for c in clients/*; do
27     read -r address hourly <"$c"
28     address="$(UNSTRING "${address#address=}")"
29     [ "$address" ] || address="(no address)"
30     printf '[div .client .address <!--
31       -->%s
32
33 [label Hourly Rate:] %s€
34     [a href="/clients/%s" Edit]]
35     ' "$(HTML "$address")" \
36       "$(HTML "${hourly#hourly=}")" \
37       "$(HTML "${c#clients/}")"
38   done
39 }
40
41 update_client(){
42   local id="$(POST id |checkid)"
43   if [ "$(POST update)" = "$(transid "clients/$id")" ]; then
44     mkdir -p clients
45     printf 'address=%s  hourly=%s' \
46       "$(POST address |STRING)" "$(POST hourly |STRING)" \
47       >"clients/$id"
48
49     [ -d .git ] && {
50       git add "clients/$id"
51       git commit -m 'Update client info for "'"$(POST address |sed 1q)"'"' -- "clients/$id"
52     } >/dev/null
53
54     REDIRECT "/clients/"
55   else
56     error Invalid Data "$id" "$(POST update)"
57     REDIRECT "/clients/$1"
58   fi
59 }