Parse RoleID from myBusinesses API. CashCollectionSheet now shows role-appropriate messaging: staff keeps cash, admin deposits to business. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
1.8 KiB
Swift
49 lines
1.8 KiB
Swift
import Foundation
|
|
|
|
struct Employment: Identifiable {
|
|
let employeeId: Int
|
|
let businessId: Int
|
|
let businessName: String
|
|
let businessAddress: String
|
|
let businessCity: String
|
|
let employeeStatusId: Int
|
|
let pendingTaskCount: Int
|
|
let activeTaskCount: Int
|
|
let roleId: Int // 1=Staff, 2=Manager, 3=Admin
|
|
|
|
var id: Int { employeeId }
|
|
|
|
/// Decode directly from a [String: Any] dictionary (matches Flutter's fromJson)
|
|
init(json: [String: Any]) {
|
|
employeeId = WorkTask.parseInt(json["EmployeeID"]) ?? 0
|
|
businessId = WorkTask.parseInt(json["BusinessID"]) ?? 0
|
|
// Server returns "Name" not "BusinessName"
|
|
businessName = (json["Name"] as? String) ?? (json["BusinessName"] as? String) ?? ""
|
|
businessAddress = (json["Address"] as? String) ?? (json["BusinessAddress"] as? String) ?? ""
|
|
businessCity = (json["City"] as? String) ?? (json["BusinessCity"] as? String) ?? ""
|
|
// Match Flutter: read EmployeeStatusID first (server sends StatusID, which may differ)
|
|
employeeStatusId = WorkTask.parseInt(json["EmployeeStatusID"] ?? json["StatusID"]) ?? 0
|
|
pendingTaskCount = WorkTask.parseInt(json["PendingTaskCount"]) ?? 0
|
|
activeTaskCount = WorkTask.parseInt(json["ActiveTaskCount"]) ?? 0
|
|
roleId = WorkTask.parseInt(json["RoleID"] ?? json["ROLEID"] ?? json["roleId"] ?? json["role_id"]) ?? 1
|
|
}
|
|
|
|
var statusName: String {
|
|
switch employeeStatusId {
|
|
case 0: return "Pending"
|
|
case 1: return "Active"
|
|
case 2: return "Inactive"
|
|
default: return "Unknown"
|
|
}
|
|
}
|
|
|
|
/// Human-readable role name derived from roleId
|
|
var roleName: String {
|
|
switch roleId {
|
|
case 1: return "Staff"
|
|
case 2: return "Manager"
|
|
case 3: return "Admin"
|
|
default: return "Staff"
|
|
}
|
|
}
|
|
}
|