1use chrono::{NaiveDate, NaiveTime};
2
3#[derive(Debug)]
4pub struct Task {
5 pub task: TaskID,
6 pub door: u8,
7 pub from: NaiveDate,
8 pub to: NaiveDate,
9 pub monday: bool,
10 pub tuesday: bool,
11 pub wednesday: bool,
12 pub thursday: bool,
13 pub friday: bool,
14 pub saturday: bool,
15 pub sunday: bool,
16 pub at: NaiveTime,
17 pub more_cards: u8,
18}
19
20#[derive(Debug)]
21#[repr(u8)]
22pub enum TaskID {
23 ControlDoor = 1,
24 UnlockDoor = 2,
25 LockDoor = 3,
26 DisableTimeProfile = 4,
27 EnableTimeProfile = 5,
28 EnableCardNoPassword = 6,
29 EnableCardWithInPassword = 7,
30 EnableCardWithPassword = 8,
31 EnableMoreCards = 9,
32 DisableMoreCards = 10,
33 TriggerOnce = 11,
34 DisablePushButton = 12,
35 EnablePushButton = 13,
36}
37
38impl From<u8> for TaskID {
39 fn from(task: u8) -> TaskID {
40 match task {
41 1 => TaskID::ControlDoor,
42 2 => TaskID::UnlockDoor,
43 3 => TaskID::LockDoor,
44 4 => TaskID::DisableTimeProfile,
45 5 => TaskID::EnableTimeProfile,
46 6 => TaskID::EnableCardNoPassword,
47 7 => TaskID::EnableCardWithInPassword,
48 8 => TaskID::EnableCardWithPassword,
49 9 => TaskID::EnableMoreCards,
50 10 => TaskID::DisableMoreCards,
51 11 => TaskID::TriggerOnce,
52 12 => TaskID::DisablePushButton,
53 13 => TaskID::EnablePushButton,
54 _ => TaskID::ControlDoor,
55 }
56 }
57}