<-- UTHM -->
UTHM anydesk
1676209268
administrator / uthm@1234

window login
hik@12345

HCP credential
admin / uthm@2024

artemis web
admin / uthm@2024  User key- 29162029   User secret- zUgHL1Ol8SWCUtBQbhnS

<-- UPNM anydesk -->
ANYDESK Credential:
Address: 1437419572
Password: edupnm123


QUESTIONS
- Why index code in room cannot press?
- What is access level in room?
- what is custom range function in setting general ?
- How to know the room status
- How to know the status for rooms>

UTHM classroom system pending
1-Dashboard interface for lecturer, Management and student. 
2-Upload user's image and room image.
3-The sticky header table,
4-Attendance for student.
5-Integration
6-Add device ID to a room
7-Add more device to room access level.
8-System flow, approved status
9-Public holiday


WORKFLOW:
1. Database
2. Migration
3. Model


Database: uthm_classroom_management_system

Table: users
- id :int (PK)
- email :string
- password :string
- type enum("Administrator", "Management", "Lecturer", "Student Lead", "Student")
- staff_id :string
- first_name :string
- last_name :string
- full_name :string
- phone_no :string
- address :text
- nric :string
- remark :text
- gender :int
- remember_token :string
- password_reset_token :string
- last_login :datetime
- language :string
- image_path :string
- status enum("Active", "Not active")
- timestamp :

Table: room_type
- id :int (PK)
- name
- timestamp :

Table: buildings
- id :int (PK)
- name :string
- timestamp :

Table: levels
- id :int (PK)
- name :string
- building_id :int (FK to buildings)
- timestamp :

Table: rooms
- id :int (PK)
- name :string
- description :text
- access_level :int
- building_id :int (FK to buildings)
- level_id :int (FK to levels) *KIV
- type_id :int (FK to room_type)
- status enum("Booked", "Available")
- image_path :string
- timestamp :

Table: groups
- id :int (PK)
- name :string
- description :text
- status enum("Active", "Not active")
- timestamp :

Table: classes
- id :int (PK)
- title :string
- description :text
- room_id :int (FK to rooms)
- start_date_time :dateTime
- end_date_time :dateTime
- group_id :int (FK to groups)
- repeat_type enum("Once", "Weekly", "Monthly")
- approved_by_id :int (FK to users)
- approval_date_time :datetime
- approval_remark :text
- timestamp :

Table: group_user
- id :int (PK)
- group_id :int (FK to groups)
- user_id :int (FK to users)
- timestamp :

Table: holidays
- id :int (PK)
- description :string
- date :date
- timestamp :

Table: announcements
- id :int (PK)
- title :string
- message :text
- date_publish :date
- date_expiry :date
- timestamp : 

Table: settings
- id :int(PK)
- setting_key :string
- setting_value :string
- timestamp :

Table: devices
- id :int (PK)
- name :string
- index_code :(*KIV)
- room_id :int (FK to rooms)


LIST API

USERS & PROFILE
- POST /create-user    (at users)
- POST /create-user-excel
- PATCH /update-user/{id}    (at users)  
- PATCH /update-user    (at profile)
- PATCH /update-password/{id}    (at users) 
- PATCH /update-password   (at profil)
- PATCH /disable-user/{id}    (at users)
- PATCH /enable-user/{id}    (at users)
- DELETE /delete-user/{id}    (at users)
- PATCH /update-user-image/{id}

ROOMS
- POST /create-room
- PATCH /update-room/{id}
- DELETE /delete-room/{id}
- POST /upload-room-image/{id}  (add new image)
- PATCH /update-room-image/{id}  (change image)

CLASSES
- POST /create-class
- PATCH /update-class/{id}
- POST /recreate-class/{id}
- DELETE /delete-class/{id}

GROUPS
- POST /create-group
- PATCH /update-group/{id}
- POST /recreate-group/{id}
- DELETE /delete-group/{id}
- POST /add-students-group/{id}

SETTINGS
- PATCH /update-general
- POST /create-announcement
- PATCH /update-announcement/{id}
- DELETE /delete-announcement/{id}
- POST /create-building
- PATCH /update-building/{id}
- DELETE /delete-building/{id}
- POST /create-level
- PATCH /update-level/{id}
- DELETE /delete-level/{id}
- POST /create-holiday
- PATCH /update-holiday/{id}
- DELETE /delete-holiday/{id}
- PATCH /update-smtp
- POST /create-device
- PATCH /update-device/{id}
- DELETE /delete-device/{id}
- PATCH /update-hcp
- PATCH /update-db


ALL DATA VALIDATION LISTS

1. Required Validations
    required: The field is required.
    required_if:anotherfield,value: The field is required if another field is equal to a certain value.
    required_unless:anotherfield,value: The field is required unless another field is equal to a certain value.
    required_with:field1,field2: The field is required if any of the other specified fields are present.
    required_with_all:field1,field2: The field is required if all of the other specified fields are present.
    required_without:field1,field2: The field is required if any of the other specified fields are not present.
    required_without_all:field1,field2: The field is required if none of the other specified fields are present.

2. String and Text Validations
    string: The field must be a string.
    alpha: The field must contain only alphabetic characters.
    alpha_dash: The field may contain only letters, numbers, dashes, and underscores.
    alpha_num: The field must contain only alphanumeric characters.
    min:value: The field must have a minimum length.
    max:value: The field must have a maximum length.

3. Numeric and Size Validations
    numeric: The field must be a number.
    integer: The field must be an integer.
    between:min,max: The field must be between a minimum and maximum value (for numbers, files, and strings).
    size:value: The field must be exactly a given size (for numbers, files, and strings).
    digits:value: The field must be a numeric value with an exact length.
    digits_between:min,max: The field must have a length between a minimum and maximum value.

4. Date and Time Validations
    date: The field must be a valid date.
    date_format:format: The field must match the given format (e.g., date_format:Y-m-d).
    before:date: The field must be a date before a given date.
    after:date: The field must be a date after a given date.
    before_or_equal:date: The field must be a date before or equal to a given date.
    after_or_equal:date: The field must be a date after or equal to a given date.

5. Boolean Validations
    boolean: The field must be true or false.

6. Array Validations
    array: The field must be an array.
    distinct: The field must not contain duplicate values.
    in_array:anotherfield.*: The field must exist in another field.

7. Email and URL Validations
    email: The field must be a valid email address.
    url: The field must be a valid URL.
    active_url: The field must be a valid, active URL.

8. File Validations
    file: The field must be a valid file.
    image: The field must be an image (jpeg, png, bmp, gif, svg, or webp).
    mimetypes:text/plain,...: The file must match the given MIME types.
    mimes:jpeg,bmp,png: The file must have one of the specified extensions.
    max:value: The field must have a maximum file size.
    min:value: The field must have a minimum file size.

9. IP and Network Validations
    ip: The field must be a valid IP address.
    ipv4: The field must be a valid IPv4 address.
    ipv6: The field must be a valid IPv6 address.
    mac_address: The field must be a valid MAC address.

10. Miscellaneous Validations
    confirmed: The field must have a matching confirmation field (e.g., password and password_confirmation).
    nullable: The field is allowed to be null.
    unique:table,column: The field must be unique in the specified table and column.
    exists:table,column: The field must exist in the specified table and column.
    same:field: The field must match the given field.
    different:field: The field must be different from another field.
    regex:pattern: The field must match the given regular expression pattern.
    timezone: The field must be a valid timezone.
    json: The field must be a valid JSON string.
    uuid: The field must be a valid UUID.


INTERFACE LISTS
- Login page
- Profile
- Users
    - User Profile
- Reports
    - Attendance
    - Booking
    - Usage
- Groups
    - Group Detail
- Rooms
    - Room Detail
- Classes
    -Class Detail
- Settings
    - Genaral
    - Announcement
    - Building & Level
    - Public Holiday
    - SMTP Relay
    - Devices
    - Integration
- Dashboard





