auto mail generation
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { api, WEB } from './client';
|
||||
import type { AppLocation } from './deliveries';
|
||||
import type { InviteOutcome } from './people';
|
||||
import type { TenantInfo, TenantLocation } from './types';
|
||||
|
||||
/** Everything the tenant-onboarding form collects. */
|
||||
@@ -101,6 +102,20 @@ export interface CreateBranchRequest {
|
||||
operatorid?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* A commissioned branch, and what happened to its operator's invitation.
|
||||
*
|
||||
* The branch exists either way. A login that was not emailed is a task for
|
||||
* whoever commissioned it — resend, or fix the address — and not a branch to
|
||||
* create again.
|
||||
*/
|
||||
export interface CreateBranchResult {
|
||||
branch: TenantLocation;
|
||||
invite: InviteOutcome;
|
||||
/** The login the branch spawned, for a resend. 0 when a person was placed. */
|
||||
operatorUserid: number;
|
||||
}
|
||||
|
||||
export interface TenantListQuery {
|
||||
pageno?: number;
|
||||
pagesize?: number;
|
||||
@@ -176,9 +191,24 @@ export const tenantsApi = {
|
||||
* created row, and the new `locationid` is what a QR code and every
|
||||
* follow-up write need. `createlocation` answers 201 with a message and no
|
||||
* `details` at all.
|
||||
*
|
||||
* `invite` reports the spawned login's first-password email. It is `sent:
|
||||
* false` with NO reason when an `operatorid` was named — nothing was created,
|
||||
* so there was nothing to send, and that is not a failure to report.
|
||||
*/
|
||||
createBranch: (body: CreateBranchRequest) =>
|
||||
api.post<TenantLocation>(`${WEB}/tenants/createtenantlocation`, body),
|
||||
createBranch: (body: CreateBranchRequest): Promise<CreateBranchResult> =>
|
||||
api
|
||||
.postEnvelope<TenantLocation>(`${WEB}/tenants/createtenantlocation`, body)
|
||||
.then((envelope) => ({
|
||||
branch: (envelope.details ?? {}) as TenantLocation,
|
||||
invite: {
|
||||
sent: envelope.invited === true,
|
||||
...(envelope.invitereason ? { reason: envelope.invitereason } : {}),
|
||||
},
|
||||
// The spawned login, so a failed invitation can be resent without
|
||||
// hunting for the row by eye. 0 when an existing person was placed.
|
||||
operatorUserid: envelope.inviteuserid ?? 0,
|
||||
})),
|
||||
|
||||
updateBranch: (body: Partial<TenantLocation> & { locationid: number }) =>
|
||||
api.put<TenantLocation>(`${WEB}/tenants/updatelocation`, body),
|
||||
|
||||
Reference in New Issue
Block a user