query_functions 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # Modalità "query"
  2. # Variabili e funzioni di supporto
  3. # a modalità query
  4. # Prendendo in ingresso un'entrata
  5. # restituisce la durata in ore
  6. # del turno corrispondente
  7. get_shift_duration(){
  8. echo "$1" | cut -f3 | cut -d'=' -f2
  9. return 0
  10. }
  11. # Controlla che l'id in ingresso esista
  12. # e lo converte nel nome dell'operatore corrispondente
  13. # (se non esiste, ferma il programma esce con un errore)
  14. id_to_name_check(){
  15. case "$1" in
  16. 0)
  17. echo "$ID_0_150"
  18. ;;
  19. 1)
  20. echo "$ID_1_150"
  21. ;;
  22. 2)
  23. echo "$ID_2_150"
  24. ;;
  25. *)
  26. echoerr "Illegal operator ID specified. Choose between 0,1,2."
  27. esac
  28. return 0
  29. }
  30. # Prendendo in ingresso l'id di un operatore
  31. # restituisce il numero totale di ore di lavoro
  32. get_operator_total(){
  33. OPERATOR_NAME=$(id_to_name_check "$1") || exit 1
  34. awk -F\; -v pattern="$OPERATOR_NAME" '
  35. BEGIN { counter=0 }
  36. $0 ~ pattern { counter+=$3; }
  37. END{ print counter }' "$SHIFT_FILE"
  38. return 0
  39. }
  40. # Grand total mode
  41. print_gtotal(){
  42. echo -e "\nHere it comes the operators' grand total:"
  43. for i in {0..2}
  44. do
  45. printf "%-30s%10s/150h\n" "$(id_to_name_check $i):" "$(get_operator_total $i)"
  46. done
  47. }