> ## Documentation Index
> Fetch the complete documentation index at: https://support.essal.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Understanding Scan Results

{/* category: Check-In Devices */}

After each scan, the check-in app displays a result card that tells the operator whether to allow or deny entry. Each result has a distinct color and label so the decision can be made at a glance.

***

## Result Types

### Access Granted — Green

The person's badge is valid and they are permitted to pass.

This result appears when:

* The employee's status is **active** and the current time is within their configured access schedule
* The guest badge is **active** and within its `valid from` / `valid until` window

**Feedback:** A single beep and a short vibration (80 ms).

***

### Access Denied — Red

The person should not be permitted to pass.

This result appears when:

* The employee's status is `suspended`, `terminated`, or `lost badge`
* The employee's account is in `pending` state (not yet active)
* The current time is outside the employee's permitted access hours
* A guest badge's `valid from` time has not yet been reached

The result card shows the **denial reason** so the operator understands why access was denied (e.g., "Outside access hours", "Account suspended").

**Feedback:** A denial sound and a triple vibration burst.

***

### Badge Expired — Amber

The badge was valid but is no longer current.

This result appears when:

* A guest badge's `valid until` time has passed
* The device's locally cached employee data is more than **24 hours old** and the device cannot reach the server to refresh it — in this case, the denial reason shows "Cache expired" and the operator should check internet connectivity

**Feedback:** A denial sound and a triple vibration burst.

***

### Badge Revoked — Orange

The badge has been manually cancelled by an administrator.

This result appears when a guest badge has been explicitly revoked from the admin panel. The person should not be allowed to enter regardless of what they claim.

**Feedback:** A denial sound and a triple vibration burst.

***

### Not Found — Gray

The scanned code does not match any employee or guest in the system.

This result appears when:

* The QR code is not an Essal badge (wrong app, corrupted code, or a badge from a different organization)
* The badge ID has been deleted from the system
* The scan was attempted from a device registered to a different organization

**Feedback:** A denial sound and a triple vibration burst.

***

## The Result Card

After every scan, a result card slides up from the bottom of the screen showing:

* The person's **photo** (from cache or their profile; falls back to a person icon if unavailable)
* **Full name**, role, and department
* The **result label** (ACCESS GRANTED / ACCESS DENIED / etc.)
* **Denial reason** (if denied)
* **Access zones** they are permitted to enter (as chips)
* For guests: **host name**, **purpose**, and **valid until** datetime
* A **"from cache"** indicator if the data was served from the local offline cache

The card **auto-dismisses** after a configurable delay (default: 4 seconds). Tap anywhere on the card to dismiss it manually. On the Android app, a non-blocking 2-second toast is shown instead, keeping the camera active for continuous high-throughput scanning.

***

## View Profile (Employees)

Active employee result cards include a **View Profile** button that opens a full profile modal with additional details. When the profile modal is open, the auto-dismiss timer is paused so the operator has time to review.
