version: '3.2'

{% if epas_client_timbrature_behind_haproxy %}
networks:
  {{ epas_client_timbrature_haproxy_public_net }}:
    external: true
{% endif %}

volumes:
  {{ epas_client_timbrature_data_volume }}:
{% if epas_client_timbrature_data_remote_volume %}
    driver: local
    driver_opts:
      type: nfs4
      o: "{{ epas_client_timbrature_data_remote_volume_opts }}"
      device: "{{ epas_client_timbrature_data_remote_volume_dev }}"

{% endif %}

services:
  {{ epas_client_timbrature_service_name }}:
    image: {{ epas_client_timbrature_docker_client_timbrature_image }}
{% if epas_client_timbrature_behind_haproxy %}
    networks:
      - {{ epas_client_timbrature_haproxy_public_net }}
{% endif %}
    volumes:
      - {{ epas_client_timbrature_data_volume }}:/client/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    environment:
      - STAMPINGS_SERVER_PROTOCOL={{ epas_client_timbrature_stampings_server_protocol }}  # Protocollo per prelevare le timbrature. Possibili valori: smartclock, local, ftp, sftp
      - FTP_SERVER_NAME={{ epas_client_timbrature_ftp_server_name }}          # Obbligatorio
      - FTP_USERNAME={{ epas_client_timbrature_ftp_username }}             # Obbligatorio
      - FTP_PASSWORD={{ epas_client_timbrature_ftp_pwd }}             # Obbligatorio
      - FTP_SERVER_DIR={{ epas_client_timbrature_ftp_server_dir }}          # Opzionale. default: AT
      - FTP_FILE_PREFIX={{ epas_client_timbrature_ftp_file_prefix }}         # Opzionale. default: AT
      - SERVER_HOST={{ epas_client_timbrature_epas_server_name }}             # default: link al container con alias epas (docker-compose v2)
      - SERVER_PROTOCOL={{ epas_client_timbrature_epas_server_protocol }}         # default: http. (http, https)
      - SERVER_PORT={{ epas_client_timbrature_epas_server_port }}             # default: 9000
      - EPAS_CLIENT_USER={{ epas_client_timbrature_user }}          # utente configurato in epas dentro sorgenti timbrature
      - EPAS_CLIENT_PASSWORD={{ epas_client_timbrature_password }}
      - LOG_LEVEL={{ epas_client_timbrature_loglevel }}               # Default: INFO
      - REGEX_STAMPING={{ epas_client_timbrature_regex_stamping }}    
      - OFFSET_ANNO_BADGE={{ epas_client_timbrature_offset_anno_badge }}  # Default: 2000 
      - FIX_CAUSALE_PAUSA_PRANZO={{ epas_client_timbrature_fix_causale_pausa_pranzo}} # Default: False
      - MAPPING_CAUSALI_CLIENT_SERVER={{ epas_client_timbrature_mapping_causali_client_server }}  # Default: {'0000': None, '0001': 'motiviDiServizio', '0007': 'pausaPranzo'}
      - CAUSALE_PAUSA_PRANZO_MIN_HOUR={{ epas_client_timbrature_causale_pausa_pranzo_min_hour }}   # Default: 12
      - CAUSALE_PAUSA_PRANZO_MAX_HOUR={{ epas_client_timbrature_causale_pausa_pranzo_max_hour }}   # Default: 15
      - SEND_ALL_STAMPINGS_EVERYTIME={{ epas_client_timbrature_send_all_stampings_everytime }}
      #- CRON=*/30 7-22 * * *     # Default: ogni mezz'ora tra le 7 e le 22. utilizzare il formato richiesto dal crontab. Riferimenti -> https://en.wikipedia.org/wiki/Cron#Examples
    deploy:
      mode: replicated
      replicas: 1
{% if epas_client_timbrature_behind_haproxy %}
      endpoint_mode: dnsrr
{% endif %}
      placement:
        constraints:
          - node.role == worker
{% if not epas_client_timbrature_data_remote_volume %}
          - {{ epas_client_timbrature_node_constraints }}

{% endif %}

      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s
    logging:
      driver: 'journald'