2.9 KiB
2.9 KiB
CompanyPage
Namespace: FrymasterBadgeApp
Base Class: ContentPage
Purpose: CRUD interface for managing company records and uploading/previewing company logos.
🔑 Fields
| Name | Type | Access | Description |
|---|---|---|---|
_db |
SqlService |
private readonly |
Database service. |
_selectedCompany |
Dictionary<string, object>? |
private |
Currently selected company from the list. |
_tempLogoPath |
string |
private |
Path to currently selected/cached logo image. |
LogoPathKey |
const string |
private |
Preference key for logo directory ("LogoBasePath"). |
🛠 Constructor
CompanyPage(SqlService db)
- Access:
public - Behavior: Configures custom back button behavior, calls
LoadCompanies().
📦 Methods
GetLogoDirectory()
- Access:
private - Returns:
string - Behavior: Reads logo directory from Preferences. Defaults to
C:\FrymasterData\logos.
LoadCompanies()
- Access:
private - Behavior: Executes
SELECT * FROM Companies ORDER BY Name ASC, binds toCompanyList. Catches and alerts on DB failure.
OnCompanySelectionChanged(object sender, SelectionChangedEventArgs e)
- Access:
private - Behavior: Updates form fields and loads logo preview on main thread. Clears fields if selection is null.
GetValue(Dictionary<string, object> dict, string key)
- Access:
private - Returns:
string - Behavior: Case-insensitive dictionary lookup. Returns trimmed value or empty string if missing.
OnSelectLogoClicked(object sender, EventArgs e)
- Access:
private async void - Behavior: Opens file picker filtering for images. Stores
FullPathin_tempLogoPathand updates preview.
OnSaveClicked(object sender, EventArgs e)
- Access:
private async void - Behavior:
- Validates company name.
- Ensures logo directory exists (creates if missing).
- If logo selected: copies to directory with timestamped name on collision. Stores only filename.
- Executes
INSERTorUPDATEvia_db.Execute. - Refreshes list and clears form.
OnAddNewClicked(object sender, EventArgs e)
- Access:
private - Behavior: Deselects list item and clears form fields.
ClearFields()
- Access:
private - Behavior: Resets
_selectedCompany,_tempLogoPath, all text fields, logo preview, and hides delete button.
OnDeleteClicked(object sender, EventArgs e)
- Access:
private async void - Behavior: Shows confirmation dialog, executes
DELETE FROM Companies WHERE ID=@id, refreshes list, clears fields. Catches and alerts on error.
Data Flow Notes:
- Logo paths are stored as filenames only in the database to keep DB portable.
- File operations use
File.Copywith overwrite protection (timestampsuffix). - All UI updates after async operations are marshaled via
MainThread.BeginInvokeOnMainThread.