feat(hr): add employees from the dashboard
CI/CD / CI · API (dotnet build + test) (push) Successful in 1m10s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 1m40s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m5s
CI/CD / CI · Admin Web (tsc) (push) Successful in 1m32s
CI/CD / CI · Website (tsc) (push) Successful in 45s
CI/CD / CI · Koja (tsc) (push) Successful in 49s
CI/CD / Deploy · all services (push) Successful in 9m24s
CI/CD / CI · API (dotnet build + test) (push) Successful in 1m10s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 1m40s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m5s
CI/CD / CI · Admin Web (tsc) (push) Successful in 1m32s
CI/CD / CI · Website (tsc) (push) Successful in 45s
CI/CD / CI · Koja (tsc) (push) Successful in 49s
CI/CD / Deploy · all services (push) Successful in 9m24s
Previously the only Employee records were the Owner (created at café signup) and
one Manager per branch — there was no way to add a waiter/cashier/chef. Adds it.
Backend:
- POST /api/cafes/{cafeId}/employees (HrController). Owner/Manager only; creating a
Manager requires Owner; Owner cannot be created here. Validates name/phone/role,
enforces one-employee-per-phone, validates branch belongs to the café, and can
optionally set username/password login in the same step (same hashing + uniqueness
as the credentials endpoint). Returns EmployeeSummaryDto.
Dashboard:
- New "Team" tab on the HR screen (now the default): employee roster (name, role,
phone, base salary) + an "Add employee" button (owner/manager) opening an inline
form — name, phone, role, optional branch, optional base salary, optional login.
- Role labels + all form strings in fa/en/ar.
86 API tests pass; dashboard tsc + build clean.
This commit is contained in:
@@ -431,7 +431,8 @@
|
||||
"leave": "Leave",
|
||||
"payroll": "Payroll",
|
||||
"access": "Branch access",
|
||||
"credentials": "Login credentials"
|
||||
"credentials": "Login credentials",
|
||||
"team": "Team"
|
||||
},
|
||||
"myAttendance": "My attendance",
|
||||
"clockIn": "Clock in",
|
||||
@@ -456,6 +457,33 @@
|
||||
"saved": "Credentials saved.",
|
||||
"removed": "Credentials removed.",
|
||||
"usernameTaken": "This username is already taken."
|
||||
},
|
||||
"addEmployee": "Add employee",
|
||||
"noEmployees": "No employees yet.",
|
||||
"employeeCreated": "Employee added",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"fields": {
|
||||
"name": "Name",
|
||||
"phone": "Mobile",
|
||||
"role": "Role",
|
||||
"branch": "Branch",
|
||||
"branchOptional": "optional",
|
||||
"noBranch": "No branch",
|
||||
"baseSalary": "Base salary (Toman)",
|
||||
"optional": "optional",
|
||||
"enableLogin": "Create username & password",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"passwordHint": "At least 8 characters"
|
||||
},
|
||||
"roles": {
|
||||
"Owner": "Owner",
|
||||
"Manager": "Manager",
|
||||
"Cashier": "Cashier",
|
||||
"Waiter": "Waiter",
|
||||
"Chef": "Chef",
|
||||
"Delivery": "Delivery"
|
||||
}
|
||||
},
|
||||
"reviews": {
|
||||
|
||||
Reference in New Issue
Block a user