# Features

### 🤝Features

• Any Jobs can be added in Config for Duty Count. \
• Employee can check their DutyTime with each shifts. \
• Auto On/OFF Duty based on Job Duty Status. \
• Hourly reward system to encourage for more DutyTime. \
• Discord log system with employee performance range base to Duty hours & shifts. \
• Performance ranking system based on Duty. (Outstanding, Average,Very Poor) \
• Check current duty status.

### 🛳 Boss Actions

* • View all employee dutytime list for each shifts in hours & mins. \
  • Delete all employee Duty Counts from thier own Department. \
  • Can remove specific dutytime for a player with ID. \
  • If the user is a Police boss then he can only manage police DutyTime Count. (Police to Police, EMS to EMS)\
  \
  \
  **Config Preview**

  ```etlua
  Config = {}

  Config.DutyTimer = {
      -- List of job roles that can use the duty time system. 
      -- Any job not in this list will be unable to access and use the duty time counter.
      JobRoles = {
          'police',
          'ambulance',
          'cardealer',
          'mechanic',
          'realestate',
          'taxi',
          'bus',
          'judge',
          'trucker',
          'reporter',
          'garbage',
          'tow',
          'lawyer'
      },

      -- Shift timings: This section allows you to define the time periods (According to your Hosting OS Time)
      -- during which certain shifts are active. Each shift has a start and end time.
      Shift1 = {
          startHour = 15,     -- Start: 3:30 PM (In 12 Hour Format)
          startMinute = 30,
          endHour = 20,       -- End: 8:00 PM (In 12 Hour Format)
          endMinute = 0
      },
      Shift2 = {
          startHour = 21,     -- Start: 9:00 PM
          startMinute = 0,
          endHour = 24,       -- End: 12:00 AM (midnight)
          endMinute = 0
      },
      Shift3 = {
          startHour = 0,      -- Start: 12:00 AM (midnight)
          startMinute = 0,
          endHour = 3,        -- End: 3:00 AM
          endMinute = 0
      },

      -- What is OddShift: This is the shift that is not a part of the regular shift timings.
      -- OddShift Percentage: This is the percentage of time spent in the odd shift.
      -- that will be added to the total duty time. For example: If set to 50, then only half of the time spent in the odd shift will be added to the total duty time.
      OddShift = 30,  --30%

      -- Performance rating based on duty hours: This section helps in categorizing 
      -- the performance of an employee based on their total duty hours.
      Outstanding = {
          threshold = 20 * 60, -- More than 20 hours. Employees with duty hours exceeding this threshold will be labeled as "Outstanding".
          label = "(Outstanding)"
      },
      Average = {
          threshold = 10 * 60, -- Between 10 and 20 hours. Employees falling in this range will be labeled as "Average".
          label = "(Average)"
      },
      VeryPoor = {             -- Less than 10 hours. Employees with duty hours less than the "Average" threshold will be labeled as "Very Poor".
          label = "(Very Poor)"
      },

      -- Player Reward Configuration:
      -- RewardInterval: This defines the time interval after which the rewards will be given. 
      -- For instance, if set to 60*60, it means rewards will be given every hour.
      RewardInterval = 60 * 60,  -- Every 1 hour

      -- HourlyRewards: This section determines the cash rewards a player receives based on 
      -- the number of hours they have served. The key indicates the hour and the value indicates 
      -- the reward amount. For example, [1] = 1000 means a reward of 1000 will be given after the 1st hour of duty.
      HourlyRewards = {
          [1] = 1000,   -- Reward for the 1st hour of duty
          [2] = 2000,   -- Reward for the 2nd hour of duty
          [3] = 3000,   -- Reward for the 3rd hour of duty
          [4] = 4000,   -- Reward for the 4th hour of duty
          [5] = 6000,   -- Reward for the 5th hour of duty
          [6] = 8000,   -- Reward for the 6th hour of duty
      },


      Discord = {
          WebhookMain = "CHANGE_WEBHOOK",  --Change to your webhook
          Individual = {
              Enable = true,  --Set to true to enable individual webhooks for each department, if this is true then WebhookMain will be ignored
              Webhook = {
                  ['police']      = "CHANGE_WEBHOOK",  --Change to your webhook
                  ['ambulance']   = "CHANGE_WEBHOOK",
                  ['cardealer']   = "CHANGE_WEBHOOK",
                  ['mechanic']    = "CHANGE_WEBHOOK",
                  ['realestate']  = "CHANGE_WEBHOOK",
                  ['taxi']        = "CHANGE_WEBHOOK",
                  ['bus']         = "CHANGE_WEBHOOK",
                  ['judge']       = "CHANGE_WEBHOOK",
                  ['trucker']     = "CHANGE_WEBHOOK",
                  ['reporter']    = "CHANGE_WEBHOOK",
                  ['garbage']     = "CHANGE_WEBHOOK",
                  ['tow']         = "CHANGE_WEBHOOK",
                  ['lawyer']      = "CHANGE_WEBHOOK",
              }
          }
      },
  }
  ```

  }
