]> git.plutz.net Git - confetti/commitdiff
form submit of assignments
authorPaul Hänsch <paul@plutz.net>
Sat, 11 May 2024 20:09:22 +0000 (22:09 +0200)
committerPaul Hänsch <paul@plutz.net>
Sat, 11 May 2024 20:09:22 +0000 (22:09 +0200)
ledgers/iban_assign.sh

index cabeae7eb7fbfdace4fbb876b8e5ffcedbe997fd..9faf22303bf6bda48b0f0b9f394ec704b9e692ce 100755 (executable)
@@ -1,15 +1,22 @@
 #!/bin/sh
 
-printf '%s\r\n' "Content-Type: text/plain" ""
+. "$_EXEC/pdiread.sh"
+. "$_EXEC/session_lock.sh"
+
+UIDLIST="$(
+  pdi_load "$_DATA/vcard/"*.vcf \
+  | sed -Ez '
+    s/\nBEGIN;:VCARD\n([^\n]+\n)*FN;:([^\n]+)\n([^\n]+\n)*UID;:([^\n]+)\n([^\n]+\n)*END;:VCARD\n/UID:\4 FN:\2/g
+  '
+)"
+
+# printf '%s\r\n' "Content-Type: text/plain" ""
 
 for key in $(POST_KEYS); do case $key in
   use_*)
     use_iban="${use_iban} ${key#use_} "
     ;;
 esac; done
-echo Use IBANS:
-echo "$use_iban"
-echo
 
 [ "$use_iban" ] && for key in $(POST_KEYS); do case $key in
   check_*_*)
@@ -17,12 +24,26 @@ echo
     [ ! "${use_iban##* "${iban}" *}" ] && check="${check} ${key#check_} "
     ;;
 esac; done
-echo Checked:
-echo "$check"
-echo
 
-for use in $check; do
-  iban="${use%_*}"
-  fn="$(POST "fn_${use}")"
-  echo Assign $iban to $fn
-done
+{ printf '[ul .results'
+  for use in $check; do
+    iban="${use%_*}"
+    fn="$(POST "fn_${use}")"
+    uid="${UIDLIST%% FN:"$fn"${BR}*}" uid="${uid##*${BR}UID:}"
+  
+    cfile="${_DATA}/vcard/${uid}.vcf"
+    if SLOCK "$cfile" >/dev/null; then
+      card="$(pdi_load "$cfile")"
+      cnum="$(pdi_count "$card" X-IBAN)"
+      pdi_update_value "$card" X-IBAN "$((cnum + 1))" "$iban" >"$cfile"
+      printf '[li .success . [span .name . %s] [span .uid . (UID: %s)] assigned IBAN [span .iban . %s]]' \
+             "$(HTML "$fn")" "$(HTML "$uid")" "$(HTML "$iban")"
+      RELEASE_SLOCK "$cfile"
+    else
+      printf '[li .error . [span .name . %s] [span .uid . (UID: %s)] is being edited elsewhere]'
+             "$(HTML "$fn")" "$(HTML "$uid")"
+    fi
+  done
+  printf ']'
+  printf '[a .button href=/ledgers/ . %s]' "$(l10n Back)"
+} | yield_page ledgers_assign