pfr-tk
Version:
Perkforce Tool Kit, specifically developed for perkforce in house development and testing.
1,700 lines (1,662 loc) • 130 kB
TypeScript
import { ObjectId } from 'mongodb';
import { IUser as IUser$1 } from 'zaions-tool-kit/play-and-win';
import { PermissionCheckModeEnum as PermissionCheckModeEnum$1, IHasRequiredPermissions as IHasRequiredPermissions$1 } from 'zaions-tool-kit';
import moment from 'moment';
declare enum USER_TYPE {
employer = "EMPLOYER",
employee = "EMPLOYEE",
merchant = "MERCHANT",
student_body = "STUDENT_BODY",
admin = "ADMIN"
}
declare enum INVITE_STATUS {
PENDING = "PENDING",
ACCEPTED = "ACCEPTED"
}
declare enum SCHEDULED_STATUS {
LIVE = "LIVE",
SCHEDULED = "SCHEDULED",
ENDED = "ENDED"
}
declare enum PERK_STATUS {
DRAFT = "DRAFT",
APPROVED = "APPROVED",
LIVE = "LIVE",
SCHEDULED = "SCHEDULED",
ENDED = "ENDED",
ENDINGSOON = "ENDINGSOON",
PENDINGAPPROVAL = "PENDINGAPPROVAL",
DISAPPROVED = "DISAPPROVED"
}
declare enum PERK_SCHEDULE_STATUS {
ENDED = "ENDED",
ENDINGSOON = "ENDINGSOON",
SCHEDULED = "SCHEDULED",
LIVE = "LIVE"
}
declare enum PERK_BRAND_LOGO {
NO_LOGO = "NO_LOGO",
USE_PERK_LOGO = "USE_PERK_LOGO",
USE_PROFILE_LOGO = "USE_PROFILE_LOGO"
}
declare enum EMAIL_DOMAIN_STATUS {
PENDING = "PENDING",
APPROVED = "APPROVED",
REJECTED = "REJECTED"
}
declare enum PERK_REDEEM_STATUS {
VERIFIED = "verified",
UNVERIFIED = "unverified",
PENDING = "pending"
}
declare enum ORDER_TYPE {
PURCHASED = "PURCHASED",
FREE = "FREE"
}
declare enum UNAVAILABLE_ITEM_TYPE {
OUT_OF_STOCK = "out_of_stock",
PER_USER_LIMIT_REACHED = "per_user_limit_reached",
DRAFT = "draft",
SCHEDULED = "scheduled",
EXPIRED = "expired",
DELETED = "deleted"
}
declare enum GROUP_TYPE {
SUPER_USERS = "super_users",
ALL_USERS = "all_users"
}
declare enum FORM_MODE {
ADD = "add",
EDIT = "edit",
LIST = "list"
}
declare enum REDEEM_CODE_TYPE {
TEXT = "text",
FILE = "file",
URL = "url"
}
declare enum ALLOWED_ACCESS_BECAUSE {
MANUAL = "MANUAL",
EMAIL_FORMAT = "EMAIL_FORMAT",
NEW_SIGNUPS_EMPLOYEES = "NEW_SIGNUPS_EMPLOYEES"
}
declare enum PLATFORM {
ANDROID = "android",
IOS = "ios",
WEB = "web"
}
declare enum VALIDATION_RULE {
string = "string",
email = "email",
password = "password",
positiveInt = "positiveInt",
url = "url"
}
declare enum MOBILE_DATA_STORED_FROM {
mobileBrowser = "browser",
mobileApp = "app"
}
declare enum TEST_ACCOUNTS_TYPE {
INTERNAL = "internal",
EXTERNAL = "external"
}
declare enum INTEGRATION_APP {
MICROSOFT_TEAMS = "microsoft_teams",
SLACK = "slack",
STRIPE = "stripe"
}
declare enum INTEGRATION_STATE {
ENABLED = "enabled",
DISABLED = "disabled",
NOT_CONNECTED = "not_connected"
}
declare enum PERK_ACTION_ENUM {
addEdit = "add_edit",
pubUnPub = "pub_unpub",
sendForApproval = "send_for_approval"
}
declare enum SORT_ORDER {
ASCEND = "ascend",
DESCEND = "descend"
}
declare enum LOCATION_TYPE {
point = "Point",
lineString = "LineString",
polygon = "Polygon",
multiPoint = "MultiPoint"
}
declare enum BUTTON_TYPE_ENUM {
primary = "primary",
dashed = "dashed",
default = "default",
link = "link",
text = "text"
}
declare enum NotificationPermissions {
granted = "granted",
denied = "denied",
default = "default"
}
declare enum APPROVAL_STATUS {
PENDING = "PENDING",
APPROVED = "APPROVED",
DISAPPROVED = "DISAPPROVED"
}
declare enum USER_TYPE_FILTER {
ALL = "ALL",
MADE_BY_ME = "MADE_BY_ME",
OWNER = "OWNER",
MERCHANT = "MERCHANT",
EMPLOYER = "EMPLOYER",
SUPER_USER = "SUPER_USER",
STANDARD_USER = "STANDARD_USER",
STUDENT_BODY = "STUDENT_BODY",
ADMIN = "ADMIN"
}
declare enum CAPTURE_METHOD {
AUTOMATIC = "AUTOMATIC",
MANUAL = "MANUAL"
}
declare enum BudgetStatusEnum {
NOT_CLAIMED = "NOT_CLAIMED",
REQUESTED = "REQUESTED",
GRANTED = "GRANTED",
REJECTED = "REJECTED",
EXPIRED = "EXPIRED",
REFUNDED = "REFUNDED"
}
declare enum BUTTON_SIZE_ENUM {
small = "small",
middle = "middle",
large = "large"
}
declare enum FLEX_ALIGN_ENUM {
flexStart = "flex-start",
center = "center",
flexEnd = "flex-end"
}
declare enum FLEX_JUSTIFY_ENUM {
flexStart = "flex-start",
center = "center",
flexEnd = "flex-end",
spaceBetween = "space-between",
spaceAround = "space-around",
spaceEvenly = "space-evenly"
}
declare enum CUSTOM_CATEGORY_IMAGE_TYPE {
svg = "svg",
other = "other"
}
declare enum SELECTED_CATEGORY_TYPE {
category = "category",
subcategory = "subcategory"
}
declare enum IMPORT_REDEEM_CODES_TYPE {
file = "file",
csv = "csv"
}
declare enum REDEEM_CODE_TYPES {
FILE = "file",
URL = "url",
TEXT = "text"
}
declare enum PlatformTypeEnum {
web = "web",
android = "android",
ios = "ios"
}
declare enum RoleStatus {
active = "active",
inactive = "inactive",
deprecated = "deprecated"
}
declare enum ApiResponseStatusEnum {
success = "success",
error = "error"
}
declare enum PermissionCheckModeEnum {
every = "every",
any = "any"
}
declare enum EnvironmentTypeEnum {
frontend = "frontend",
backend = "backend"
}
declare enum DATA_STORED_FROM {
mobileBrowser = "mobile-browser",
mobileApp = "mobile-app"
}
declare enum BUDGET_STATUS {
NOT_CLAIMED = "not claimed",
REQUESTED = "requested",
GRANTED = "granted",
REJECTED = "rejected",
EXPIRED = "expired",
REFUNDED = "refunded"
}
declare enum EMPLOYEE_STATUS {
ADDED = "added",
INVITED = "invited",
SIGNED_UP = "signed_up"
}
declare enum PERK_TYPE {
PERK = "perk",
BENEFIT = "benefit"
}
declare enum FORM_ACTION {
add = "add",
update = "update"
}
declare enum QueryKeyTypeEnum {
id = "id",
roleIdentifier = "roleIdentifier",
defaultRoleForEmployer = "defaultRoleForEmployer",
defaultRoleForStudentBody = "defaultRoleForStudentBody",
defaultRoleForMerchant = "defaultRoleForMerchant",
defaultRoleForMerchantEmployee = "defaultRoleForMerchantEmployee",
defaultRoleForStudentBodyEmployee = "defaultRoleForStudentBodyEmployee",
defaultRoleForStudentBodySuperUser = "defaultRoleForStudentBodySuperUser",
defaultRoleForEmployerEmployee = "defaultRoleForEmployerEmployee",
defaultRoleForEmployerSuperUser = "defaultRoleForEmployerSuperUser",
defaultRoleForAdmin = "defaultRoleForAdmin"
}
declare enum BatchStatusEnum {
completed = "completed",
failed = "failed"
}
declare enum MigrationStatusEnum {
pending = "pending",
inProgress = "inProgress",
completed = "completed",
failed = "failed"
}
declare enum UserLogChangeTypeEnum {
validationFailed = "validationFailed",
roleUpdate = "roleUpdate",
processingError = "processingError"
}
declare enum BatchDetailStatusEnum {
pending = "pending",
processing = "processing",
completed = "completed",
failed = "failed"
}
declare enum PermissionStatus$1 {
active = "active",
inactive = "inactive",
deprecated = "deprecated"
}
declare enum PermissionCategory {
userManagement = "userManagement",
roleManagement = "roleManagement",
perkManagement = "perkManagement",
perkApprovalManagement = "perkApprovalManagement",
permissionManagement = "permissionManagement"
}
declare enum PermissionsEnum {
listPerks = "listPerks",
viewPerk = "viewPerk",
viewNonPublishedPerks = "viewNonPublishedPerks",
viewAnyPerk = "viewAnyPerk",
createPerk = "createPerk",
updatePerk = "updatePerk",
updateOrgUserPerk = "updateOrgUserPerk",
updateAnyPerk = "updateAnyPerk",
deletePerk = "deletePerk",
deleteOrgUserPerk = "deleteOrgUserPerk",
deleteAnyPerk = "deleteAnyPerk",
restorePerk = "restorePerk",
forceDeletePerk = "forceDeletePerk",
listTrashedPerks = "listTrashedPerks",
viewTrashedPerk = "viewTrashedPerk",
canAddDescriptionToPerk = "canAddDescriptionToPerk",
canAddImageToPerk = "canAddImageToPerk",
canAddLogoToPerk = "canAddLogoToPerk",
canAddCategoryToPerk = "canAddCategoryToPerk",
canAddGroupsToPerk = "canAddGroupsToPerk",
canAddContactToPerk = "canAddContactToPerk",
canAddDisplayScheduleToPerk = "canAddDisplayScheduleToPerk",
canAddDiscountToPerk = "canAddDiscountToPerk",
canAddPurchasableToPerk = "canAddPurchasableToPerk",
canAddLimitsAndConstraintsToPerk = "canAddLimitsAndConstraintsToPerk",
canAddCodesToPerk = "canAddCodesToPerk",
canAddInterestToPerk = "canAddInterestToPerk",
canAddLocationsToPerk = "canAddLocationsToPerk",
canPublishPerk = "canPublishPerk",
listPerkApprovalRequests = "listPerkApprovalRequests",
listAllPerkApprovalRequests = "listAllPerkApprovalRequests",
viewPerkApprovalRequest = "viewPerkApprovalRequest",
viewAnyPerkApprovalRequest = "viewAnyPerkApprovalRequest",
createPerkApprovalRequest = "createPerkApprovalRequests",
updatePerkApprovalRequest = "updatePerkApprovalRequest",
deletePerkApprovalRequest = "deletePerkApprovalRequest",
restorePerkApprovalRequest = "restorePerkApprovalRequest",
forceDeletePerkApprovalRequest = "forceDeletePerkApprovalRequest",
listTrashedPerkApprovalRequests = "listTrashedPerkApprovalRequests",
viewTrashedPerkApprovalRequest = "viewTrashedPerkApprovalRequest",
rejectPerkApprovalRequest = "rejectPerkApprovalRequest",
rejectAnyPerkApprovalRequest = "rejectAnyPerkApprovalRequest",
approvePerkApprovalRequest = "approvePerkApprovalRequest",
approveAnyPerkApprovalRequest = "approveAnyPerkApprovalRequest",
listRoles = "listRoles",
viewRole = "viewRole",
createRole = "createRole",
updateRole = "updateRole",
deleteRole = "deleteRole",
restoreRole = "restoreRole",
forceDeleteRole = "forceDeleteRole",
listTrashedRole = "listTrashedRole",
viewTrashedRole = "viewTrashedRole",
canAssignRoleToUser = "canAssignRoleToUser",
canRemoveRoleFromUser = "canRemoveRoleFromUser",
canRunRoleValidatorManager = "canRunRoleValidatorManager",
canRunUserRoleBackgroundMigration = "canRunUserRoleBackgroundMigration",
canViewUserRoleBackgroundMigration = "canViewUserRoleBackgroundMigration",
assignPermissionsToRole = "assignPermissionsToRole",
removePermissionsFromRole = "removePermissionsFromRole",
listPermissions = "listPermissions",
viewPermission = "viewPermission",
createPermission = "createPermission",
updatePermission = "updatePermission",
deletePermission = "deletePermission",
restorePermission = "restorePermission",
forceDeletePermission = "forceDeletePermission",
listTrashedPermission = "listTrashedPermission",
viewTrashedPermission = "viewTrashedPermission",
deprecatePermission = "deprecatePermission",
initializePermissions = "initializePermissions"
}
declare enum FcmSendMethodEnum {
tokens = "tokens",
topics = "topics"
}
declare enum FCMTopicsEnum {
allUsers = "allUsers",
allAdmins = "allAdmins",
allEmployers = "allEmployers",
allMerchants = "allMerchants",
allStudentBodies = "allStudentBodies",
allStandardUsers = "allStandardUsers",
allSuperUsers = "allSuperUsers",
webAppUsers = "webAppUsers",
androidAppUsers = "androidAppUsers",
iosAppUsers = "iosAppUsers"
}
declare enum FirebasePushNotificationSendToEnum {
specificUsers = "specificUsers",
fcmTopics = "fcmTopics"
}
interface ISortOptions {
field: string;
order: SORT_ORDER;
}
interface IContext {
user: IUser$1;
userId?: ObjectId;
userPermissions?: PermissionsEnum[];
impersonation?: boolean;
token?: string;
}
interface ApiResponse {
success: boolean;
message: string;
code: string;
errors: {
[key: string]: string[];
} | null;
error: any | null;
data: any | null;
statusCode: number;
}
interface IFilterOptions {
field?: string;
values?: string[];
}
interface IFirebasePushNotification {
title: string;
body?: string;
icon?: string;
image?: string;
}
interface updatePushNotificationDeviceTokenInput {
token: string;
platform: PlatformTypeEnum;
}
interface sendPushNotificationInput {
notification: IFirebasePushNotification;
sendTo: FirebasePushNotificationSendToEnum;
specificUsersEmails?: string[];
fcmTopics?: string[];
}
interface IPushNotificationFcmTopic {
_id?: ObjectId;
identifier: string;
description?: string;
createdAt?: Date | string;
updatedAt?: Date | string;
}
interface IApiResponseBase {
status: ApiResponseStatusEnum;
success: boolean;
}
interface ISendErrorResponseProps {
errors?: any;
error?: any;
message?: string;
[key: string]: any;
}
interface ISendSuccessResponseProps<T = any> {
data?: T;
message?: string;
[key: string]: any;
}
interface IApiResponse<T = any> extends IApiResponseBase {
message: string;
data?: T;
errors?: any;
error?: any;
extra?: any;
}
interface IBenefitCategoryIconsData<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
title?: string;
keywords?: string;
iconUrl?: string;
enabled?: boolean;
createdAt?: string | Date;
updatedAt?: string | Date;
}
interface IGetBenefitCategoryIconsResponse {
getBenefitCategoryIcons?: IBenefitCategoryIcons;
}
interface IBenefitCategoryIcons {
data?: Array<IBenefitCategoryIconsData>;
count?: string;
canLoadMore?: boolean;
success?: boolean;
message?: string;
}
interface ICategoriesFormInput extends IBenefitCategoryIconsData {
icon?: File | null;
previewUrl?: string;
}
interface IGroup<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
name?: string;
slug?: string;
description?: string;
department?: string;
employerId?: Env extends EnvironmentTypeEnum.backend ? ObjectId : IUser;
members?: Env extends EnvironmentTypeEnum.backend ? Array<ObjectId> : Array<IUser>;
createdAt?: string;
type?: GROUP_TYPE;
}
interface IGetGroupsByEmployerResponse {
getGroupsByEmployer: {
groups?: Array<IGroup>;
count?: number;
};
}
interface IGetGroupBySlugResponse {
getGroupBySlug: IGroup;
}
interface IGetMembersByGroupResponse {
getMembersByGroup: {
members: Array<IUser>;
count?: number;
};
}
interface IGetAllowGroupDeleteResponse {
getAllowGroupDelete: {
totalPerks?: number;
};
}
interface IInvite<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
status?: INVITE_STATUS;
from?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
to?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
fromType?: USER_TYPE;
toType?: USER_TYPE;
toPaused?: boolean;
fromPaused?: boolean;
referrer?: IUser;
detailsForRecipient?: string;
toExists?: boolean;
createdAt?: string | Date;
acceptedAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetEmployerMerchantInvitesResponse {
getEmployerMerchantInvites: {
invites: Array<IInvite>;
count?: number;
};
}
interface IGetInviteByIdResponse {
getInviteById: IInvite;
}
interface IGetIsConnectedResponse {
getIsConnected?: boolean;
}
interface IGetConnectionsResponse {
getConnections: {
connectedCount?: number;
pendingCount?: number;
};
}
interface IInviteList {
invites?: Array<IInvite>;
count?: number;
}
interface IMerchant<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
userId: string;
name: string;
description?: string;
onboarded?: string;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IMainBanner<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
logo?: string;
title?: string;
description?: string;
btnText?: string;
image?: string;
priority?: number;
onHome?: boolean;
merchantId?: IMerchant;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface ICard<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
logo?: string;
description?: string;
image?: string;
merchantId?: IMerchant;
priority?: number;
onHome?: boolean;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface ICardOrBannerResult<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
logo?: string;
title?: string;
description?: string;
btnText?: string;
image?: string;
merchantId?: IMerchant;
priority?: number;
onHome?: boolean;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetEmployeeHomeBannerInterface {
getEmployeeHomeBanner?: Array<IMainBanner>;
}
interface IGetEmployeeHomeCardsInterface {
getEmployeeHomeCards?: Array<ICard>;
}
interface IGetMerchantByIdResponse {
getMerchantById?: string;
}
interface IGetMerchantsResponse {
getMerchants?: Array<IMerchant>;
}
interface IGetMerchantByUserIdResponse {
getMerchantByUserId?: IMerchant;
}
interface IGetMerchantByCardIdResponse {
getMerchantByCardId?: IMerchant;
}
interface IGetCardOrBannerResponse {
getCardOrBanner?: ICardOrBannerResult;
}
interface IMsTeamsApp {
processed?: boolean;
inMicrosoftTeams?: boolean;
errorOccurred?: boolean;
errorMessage?: string;
microsoftTeamsContext?: any;
}
interface IMSTeamsData {
expiresOn?: Date;
msTeamAppLog?: string;
accessToken?: string;
refreshToken?: string;
refreshTokenAt?: Date;
isConnected?: boolean;
}
interface IMSTeamsTeam {
id?: string;
displayName?: string;
internalId?: string;
webUrl?: string;
isArchived?: boolean;
visibility?: string;
}
interface IMSTeamsChannel {
id?: string;
displayName?: string;
webUrl?: string;
membershipType?: string;
}
interface IMSTeamsNotificationsHistory<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
userId?: string;
userName?: string;
userType?: USER_TYPE;
perkId?: string;
perkTitle?: string;
organizationOwnerId?: string;
userIsTheOrganizationOwner?: boolean;
categoryName?: string;
categoryLink?: string;
msChannel?: IMSTeamsChannel;
msTeam?: IMSTeamsTeam;
createdAt?: string | Date;
}
interface ILastMSTeamsNotificationInfoResult {
msTeamsTeam?: IMSTeamsTeam;
msTeamsChannel?: IMSTeamsChannel;
}
interface IMSTeamsNotificationsHistoryResult {
msTeamsNotificationsHistory?: Array<IMSTeamsNotificationsHistory>;
lastMSTeamsNotificationInfo?: ILastMSTeamsNotificationInfoResult;
}
interface IMSTeamsGetJoinedTeams {
message?: string;
success?: boolean;
joinedTeams?: Array<IMSTeamsTeam>;
}
interface MSTeamsSelectedTeamChannelsResult {
message?: string;
success?: boolean;
channels?: Array<IMSTeamsChannel>;
}
interface IMicrosoftTeamsNotificationSend {
message?: string;
success?: boolean;
notificationRecord?: IMSTeamsNotificationsHistory;
}
interface IGetMSTeamsNotificationsHistoryResponse {
getMSTeamsNotificationsHistory?: IMSTeamsNotificationsHistoryResult;
}
interface IGetMSTeamsUserJoinedTeamsResponse {
getMSTeamsUserJoinedTeams: {
message?: string;
success?: boolean;
joinedTeams: Array<IMSTeamsTeam>;
};
}
interface IGetMSTeamsSelectedTeamChannelsResponse {
getMSTeamsSelectedTeamChannels: {
message?: string;
success?: boolean;
channels?: Array<IMSTeamsChannel>;
};
}
interface Loc {
id?: string;
lat?: number;
lng?: number;
desc?: string;
}
interface IProfile<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
userId?: IUser;
websiteUrl?: string;
perkPrefilPhone?: string;
employees?: string;
description?: string;
createdAt?: string;
locations?: Array<Loc>;
budgetApprovalEmailAddresses?: string[];
deletedAt?: string;
}
interface IGetProfileByUserResponse {
getProfileByUser: IProfile;
}
interface IGetBrandProfileResponse {
getBrandProfile?: IProfile;
}
interface EditProfileResult {
success?: boolean;
message?: string;
user?: IUser;
}
interface ISlackAuthedUser {
id: string;
}
interface ISlackTeam {
id: string;
name: string;
}
interface ISlackIncomingWebhook {
channel: string;
channel_id: string;
configuration_url: string;
url: string;
}
interface ISlackResponseMetadata {
scopes: Array<string>;
}
interface IUserSlackData {
ok: boolean;
app_id: string;
response_metadata: ISlackResponseMetadata;
}
interface ISlackWorkspaceChannel {
id: string;
name: string;
is_channel: boolean;
is_group: boolean;
is_private: boolean;
}
interface ISlackWorkspaceTeam {
id?: string;
name?: string;
}
interface ILastSlackNotificationInfo {
slackTeam?: ISlackWorkspaceTeam;
slackChannel?: ISlackWorkspaceChannel;
}
interface ISlackNotificationsHistory<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
userId?: string;
userName?: string;
perkId?: IPerk;
organizationOwnerId?: IUser;
slackChannel?: ISlackWorkspaceChannel;
slackChannelName?: string;
slackTeam?: ISlackWorkspaceTeam;
createdAt?: string;
}
interface ISlackNotificationsHistoryResult {
slackNotificationsHistory?: Array<ISlackNotificationsHistory>;
lastSlackNotificationInfo?: ILastSlackNotificationInfo;
}
interface ISlackWorkspaceChannels {
channels?: Array<ISlackWorkspaceChannel>;
team?: ISlackWorkspaceTeam;
success?: boolean;
message?: string;
}
interface ISendSlackNotification {
success?: boolean;
message?: string;
notificationRecord?: ISlackNotificationsHistory;
}
interface IGetSlackNotificationsResponse {
getSlackNotifications?: ISlackNotificationsHistoryResult;
}
interface IGetSlackWorkspaceChannelsResponse {
getSlackWorkspaceChannels?: ISlackWorkspaceChannels;
}
interface IGetLastUsedSlackInfoResponse {
getSlackWorkspaceChannels?: ILastSlackNotificationInfo;
}
interface IStripeError {
code?: string;
reason?: string;
requirement?: string;
}
interface IUserStripeData {
accountId?: string;
disabled_reason?: string;
errors?: Array<IStripeError>;
enabled?: boolean;
}
interface ICreateAccountResult {
url?: string;
success?: boolean;
message?: string;
}
interface IPerkUsed {
perk: IPerk;
used: string;
}
interface IUser<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
stripeCustomerIds?: string;
firstName?: string;
lastName?: string;
type?: USER_TYPE;
email?: string;
phoneNo?: string;
code?: string | number;
codeGenAt?: string | Date;
companyName?: string;
verified?: boolean;
active?: boolean;
action?: string;
stripe?: IUserStripeData;
merchant?: IMerchant;
employer?: IProfile;
profile?: IProfile;
createdAt?: string | Date;
isLoggedIn?: boolean;
lastSignIn?: string | Date;
restrictAccess?: boolean;
suspended?: boolean;
onboarding?: boolean;
invited?: boolean;
invitedBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
invite?: IInvite;
vanityUrl?: string;
skipPhoneStep?: boolean;
skipAccountTypeStep?: boolean;
phoneAttempts?: number;
lastPhoneAttempt?: string | Date;
logo?: string;
headerLogo?: string;
brandLogo?: string;
isSuperUser?: boolean;
employeesLandingCategory?: EmployeesLandingCategory;
waitingApproval?: boolean;
employerId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
distance?: string;
region?: boolean;
employerUserData?: IUser;
deletedAt?: string | Date;
termsAndConditionsAccepted?: boolean;
termsAndConditionsAcceptedAt?: Array<string | Date>;
codeRetries?: number;
stripeAppFeePercent?: number;
perksUsed?: Array<IPerkUsed>;
perksUsedEveryDays?: Array<IPerkUsed>;
allowStripeConnection?: boolean;
allowCarousel?: boolean;
perksPerBusiness?: number;
carouselItemsPerBusiness?: number;
perksPerCompany?: number;
benefitsPerCompany?: number;
slackConnectionDetails?: IUserSlackData;
isActive?: boolean;
lastActiveTime?: string;
allowSlackConnection?: boolean;
orderEmailRecipient?: boolean;
groups?: Array<IGroup>;
status?: string;
allowedAccessBecause?: ALLOWED_ACCESS_BECAUSE;
allowedAccessEmailFormat?: string;
completedByAdminAt?: string;
allowMSTeamsConnection?: boolean;
msTeamsConDetails?: IMsTeamsApp;
organization_unique_hash?: IUser;
tinyMceFolderName?: string;
microsoftTeamsIntegrationState?: INTEGRATION_STATE;
slackIntegrationState?: INTEGRATION_STATE;
stripeIntegrationState?: INTEGRATION_STATE;
lastLocationUpdatedAt?: string;
fcmTokens?: IFcmDeviceToken[];
roleIdentifiers?: Array<string>;
updatedAt: string | Date;
}
interface IFcmDeviceToken {
token: string;
addedAt: string;
updatedAt: string;
platform: PlatformTypeEnum;
}
interface EmployeesLandingCategory {
isDefault?: boolean;
categoryId?: string;
categorySlug?: string;
}
interface IUserWithToken {
token?: string;
user?: IUser;
success?: boolean;
message?: string;
noEmail?: boolean;
vanityVerified?: string;
codeRetriesLimitReached?: boolean;
activationLink?: string;
}
interface IJWT {
token?: string;
success?: boolean;
message?: string;
}
interface IImpersonateResponse {
success?: boolean;
message?: string;
token?: string;
user?: IUser;
adminToken?: string;
}
interface IBudgetAndBalance {
budget?: string;
balance?: string;
}
interface IUsersList {
users?: IUser[];
count?: number;
}
interface ICompaniesAndBusinessWithInvitesList {
users?: IUser[];
count?: number;
}
interface IGetUserResponse {
getUser?: IUser;
}
interface IGetUserByIdResponse {
getUserById?: IUser;
}
interface IGetBrandUserResponse {
getBrandUser?: IUser;
}
interface IGetUsersResponse {
getUsers?: IUsersList;
}
interface IRenewTokenResponse {
renewToken: IUserWithToken;
}
interface IResendCodeResponse {
resendCode: IUser;
}
interface IGetHeaderImageResponse {
getHeaderImage?: string;
}
interface IGetBudgetAndBalanceResponse {
getHeaderImage?: IBudgetAndBalance;
}
interface IGetCompaniesAndBusinessWithInvitesResponse {
getCompaniesAndBusinessWithInvites?: ICompaniesAndBusinessWithInvitesList;
}
interface IGetAllCompaniesAndBusinessWithInvitesResponse {
getAllCompaniesAndBusinessWithInvites?: ICompaniesAndBusinessWithInvitesList;
}
interface IAdminSearchUserResponse {
adminSearchUser: {
users?: Array<IUser>;
count?: number;
success?: boolean;
message?: string;
};
}
interface IUserInputFormData {
firstName?: string;
lastName?: string;
email?: string;
phoneNo?: string;
verified?: boolean;
type?: USER_TYPE;
active?: boolean;
social?: boolean;
action?: string;
isMobile?: boolean;
onboarding?: boolean;
vanityUrl?: string;
waitingApproval?: boolean;
imageUrl?: string;
phoneAttempts?: number;
fbToken?: string;
fbId?: string;
signUp?: boolean;
}
interface ISubCategory<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
name?: string;
slug?: string;
categoryId: string;
order?: number;
isDefault?: boolean;
createdBy?: string;
addedBy?: IUser;
count?: number;
perkCount?: number;
draftCount?: number;
createdAt?: string | Date;
updatedAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetSubCategoriesResponse {
getSubCategories?: Array<ISubCategory>;
}
interface IGetSubCategoryBySlugResponse {
getSubCategoryBySlug?: ISubCategory;
}
interface ICategoriesPerksCount<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
perksCount?: Env extends EnvironmentTypeEnum.backend ? Array<string | ObjectId> : string[];
}
interface IBusinessCategory<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
name?: string;
slug?: string;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
addedBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string | Date;
subCategories?: Array<ISubCategory>;
subCatUser?: Array<IUser>;
order?: number;
deletedAt?: string | Date;
iconUrl?: string;
key?: number | string;
index?: number;
containPerks?: boolean;
isDefault?: boolean;
}
interface IBusinessCategoriesListForAdmin {
categories?: Array<IBusinessCategory>;
count?: number;
}
interface IBusinessCategoriesList {
categories?: Array<IBusinessCategory>;
count?: number;
categoriesPerksCount?: Array<ICategoriesPerksCount>;
activePerksCount?: number;
}
interface IGetBusinessCategoriesByUserResponse {
getBusinessCategoriesByUser?: IBusinessCategoriesList;
}
interface IGetBusinessCategoryBySubCategoryResponse {
getBusinessCategoryBySubCategory?: IBusinessCategory;
}
interface IGetBusinessCategoriesForAdminResponse {
getBusinessCategoriesForAdmin?: IBusinessCategoriesListForAdmin;
}
interface IPerkCategory<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
name?: string;
slug?: string;
isDefault?: boolean;
order?: number;
createdAt?: string;
perkCount?: number;
draftCount?: number;
deletedAt?: string;
isPopular?: boolean;
newArrival?: boolean;
key?: number | string;
}
interface IGetPerkCategoryBySlugResponse {
getPerkCategoryBySlug: IPerkCategory;
}
interface IPerkCategoriesList {
perkCategories?: Array<IPerkCategory>;
count?: number;
}
interface IGetPerkCategoriesResponse {
getPerkCategories: IPerkCategoriesList;
}
interface ILocationPerk {
lat?: number;
lng?: number;
desc?: string;
className?: string;
}
interface IRedeemCode<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
perkId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
userId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
code?: string;
url?: string;
type?: string;
expireDate?: string;
file?: File;
createdAt?: string | Date;
updatedAt?: string | Date;
}
interface IMaxAllowedPerUserEveryDays {
allowedPerUser?: number;
allowedEveryDays?: number;
}
interface IInterest {
allowed?: boolean;
email?: boolean;
}
interface IPerk<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
name?: string;
perkType?: string;
useProfileLocation?: boolean;
businessCategory?: IBusinessCategory;
subCategory?: ISubCategory;
perkCategory?: IPerkCategory;
details: string;
website?: string;
contactName?: string;
discountCode?: string;
phoneNo?: string;
image?: string;
imageUrl?: string;
brandLogo?: string;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdBySuperUser?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdByStandardUser?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
status?: PERK_STATUS;
brandLogoType?: PERK_BRAND_LOGO;
createdAt?: string | Date;
locations?: Array<ILocationPerk>;
alwaysDisplay?: boolean;
displayFromDate?: string | Date;
displayUntilDate?: string | Date;
updatedAt?: string | Date;
notForGeneralPublic?: boolean;
forUserType?: string;
forUsers?: Env extends EnvironmentTypeEnum.backend ? string[] | ObjectId[] : string[];
purchasable?: boolean;
useRedeemCodes?: boolean;
totalRedeemLimitAvailable?: boolean;
hasMaxAllowedPerUser?: boolean;
hasMaxAllowedPerUserEveryDays?: boolean;
maxAllowedPerUserEveryDays?: IMaxAllowedPerUserEveryDays;
maxAllowedPerUserEveryDaysPassed?: number;
value?: number;
totalRedeemLimit?: number;
maxAllowedPerUser?: number;
autoRedeemCodes?: boolean;
deletedAt?: string;
perkClicksCount?: number;
slackNotificationsHistory?: Array<ISlackNotificationsHistory>;
lastSlackNotificationInfo?: ILastSlackNotificationInfo;
forGroups?: Env extends EnvironmentTypeEnum.backend ? string[] | ObjectId[] : string[];
perkDetailsText?: string;
interest?: IInterest;
currentUserInterestRegistered?: boolean;
scheduledStatus?: SCHEDULED_STATUS;
startDate?: string;
endDate?: string;
action?: PERK_ACTION_ENUM;
sendSlackNotification?: boolean;
sendMicrosoftTeamsNotification?: boolean;
userSubDomain?: string;
perkLocations?: {
type: LOCATION_TYPE;
coordinates: Array<ILocationPerk>;
};
isAlwaysAvailable?: boolean;
displayNow?: boolean;
}
interface IPerkForm extends Partial<IPerk> {
allowedPerUser?: number;
allowedEveryDays?: number;
}
interface IPerkList {
perks?: Array<IPerk>;
count?: number;
}
interface IPerkManagement {
step?: FORM_MODE;
searchQuery?: {
value?: string;
trigger?: boolean;
};
userTypeFilter?: string | null;
purchasableFilter?: boolean;
status?: string | null;
showReferralModal?: boolean;
showInviteModal?: boolean;
showPageOptions?: boolean;
processing?: boolean;
}
interface IGetPerksByUserResponse {
getPerksByUser?: {
perks?: Array<IPerk>;
count?: number;
perksPerPage?: number;
isValidCategory?: boolean;
isValidSubCategory?: boolean;
};
}
interface IGetPerkByIdResponse {
getPerkById?: {
perk?: IPerk;
perkRedeemCodes?: IRedeemCode;
userAllowanceReached?: boolean;
};
}
interface IGetAllowPerkDeleteResponse {
getAllowPerkDelete?: boolean;
}
interface IGetAllowPerkRedeemResponse {
getAllowPerkRedeem?: boolean;
}
interface IGetPurchasablePerksResponse {
getPurchasablePerks?: Array<IPerk>;
}
interface IAdminGetPerksResponse {
adminGetPerks?: IPerkList;
}
interface IGetBrandPerksResponse {
getBrandPerks?: IPerkList;
}
interface IGetSuperUserPerksResponse {
getSuperUserPerks?: Array<IPerk>;
}
interface IBenefitClickItem<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
count?: string;
benefit?: IPerk;
}
interface IGetBenefitClicksResponse {
getBenefitClicks?: IBenefitClicksList;
}
interface IBenefitClicksList {
benefitClicks?: Array<IBenefitClickItem>;
count?: string;
}
interface IBlockEmailExpression<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
expression?: string;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IAdminGetBlockEmailExpressionsResponse {
adminGetBlockEmailExpressions?: IBlockEmailExpressionList;
}
interface IBlockEmailExpressionList {
blockEmailExpressions?: Array<IBlockEmailExpression>;
count?: number;
}
interface IBrandCarouselItem<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
details?: string;
image?: string;
perk?: IPerk;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetBrandCarouselItemsResponse {
getBrandCarouselItems?: Array<IBrandCarouselItem>;
}
interface IGetPerksForCarouselResponse {
getPerksForCarousel?: IPerkList;
}
interface IBrandCarouselSetting<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
autoplay?: boolean;
autoplaySpeed?: number;
effect?: string;
dots?: boolean;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
deletedAt?: string | Date;
arrows?: boolean;
fade?: boolean;
}
interface IGetBrandCarouselSettingResponse {
getBrandCarouselSetting?: IBrandCarouselSetting;
}
interface IUpdateBrandCarouselSettingResult {
success?: boolean;
message?: string;
limitReached?: number;
}
interface IBudget<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
expiry?: string;
onlyEmployerApproval?: boolean;
budgetEntries?: Array<IBudgetDetail>;
total?: number;
stripeFee?: number;
totalAmount?: number;
amountToBeApproved?: number;
amountApproved?: number;
paymentIntentCaptured?: boolean;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IBudgetDetail<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
budget?: IBudget;
claim?: IBudgetClaim;
amount?: number;
createdFor?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IBudgetClaim<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
budgetEntry?: IBudgetDetail;
amountApproved?: number;
receipt?: String;
comment?: String;
amountRequested?: number;
status?: BudgetStatusEnum;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IBudgetDetailPagination {
total?: number;
budgetsDetail?: Array<IBudgetDetail>;
}
interface IGetBudgetAmountByUserResponse {
getBudgetAmountByUser?: number;
}
interface IGetBudgetDetailByIdResponse {
getBudgetDetailById?: IBudgetDetail;
}
interface IGetBudgetsDetailByUserResponse {
getBudgetsDetailByUser?: IBudgetDetailPagination;
}
interface IBusinessCategoryClickItem<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
count?: number;
businessCategory?: IBusinessCategory;
employer?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
}
interface IGetBusinessCategoryClicksResponse {
getBusinessCategoryClicks?: IBusinessCategoryClicksList;
}
interface IBusinessCategoryClicksList {
businessCategoryClicks?: Array<IBusinessCategoryClickItem>;
count?: number;
}
interface ICarouselItem<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
name?: string;
details?: string;
image?: string;
perk?: IPerk;
order?: number;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string | Date;
}
interface IGetCarouselItemsResponse {
getCarouselItems?: Array<ICarouselItem>;
}
interface ICarouselSetting<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
autoplay?: boolean;
autoplaySpeed?: number;
effect?: string;
dots?: boolean;
arrows?: boolean;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
}
interface IGetCarouselSettingResponse {
getCarouselSetting?: ICarouselSetting;
}
interface ICartItem {
perk: IPerk;
quantity: number;
price: number;
usedByCurrentUser: number;
usedEveryDaysByCurrentUser: number;
perkCopy: IPerk;
is_deleted: boolean;
}
interface ICart<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
user?: IUser;
business?: IUser;
items?: Array<ICartItem>;
total?: number;
}
interface IUnavailableItem {
perk: IPerk;
perkCopy: IPerk;
type: string;
remaining: number;
}
interface ICheckoutResult {
url?: string;
success?: boolean;
message?: string;
unavailableItems?: Array<IUnavailableItem>;
}
interface IAddCartItemResult {
success?: boolean;
message?: string;
showHomeButton?: boolean;
}
interface ICartItemLimitReached {
success?: boolean;
message?: string;
limitReached?: boolean;
}
interface ICartItemLimitReachedResponse {
cartItemLimitReached?: ICartItemLimitReached;
}
interface IGetCartResponse {
getCart?: ICart;
}
interface IGetCheckoutSessionResponse {
getCheckoutSession?: any;
}
interface ICompaniesData {
data?: Array<IUser>;
success?: boolean;
message?: string;
}
interface ICompaniesForMerchantPerkRedeem {
data?: {
_id?: string;
email?: string;
companyName?: string;
};
success?: boolean;
message?: string;
}
interface IGetCompaniesForMerchantPerkRedeemResponse {
getCompaniesForMerchantPerkRedeem?: ICompaniesData;
}
interface IGetCompaniesForAdminBenefitCategoriesResponse {
getCompaniesForAdminBenefitCategories?: ICompaniesData;
}
interface ICreditCard<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
number?: string | number;
user?: IUser;
}
interface IGetCreditCardsResponse {
getCreditCards?: any;
}
interface IEmailDomain<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
request?: string;
createdBy?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
createdAt?: string;
status?: EMAIL_DOMAIN_STATUS;
expression?: string;
deletedAt?: string | Date;
}
interface IAdminEmailDomain<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> extends IEmailDomain<Env> {
}
interface IAdminGetEmailDomainsResponse {
adminGetEmailDomains: {
emailDomains?: Array<IAdminEmailDomain>;
};
count?: number;
}
interface IGetEmailDomainsResponse {
getEmailDomains?: {
emailDomains?: Array<IEmailDomain>;
count?: number;
};
}
interface IEmployee<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
firstName?: string;
lastName?: string;
email?: string;
logo?: string;
status?: string;
allowedAccessBecause?: boolean;
allowedAccessEmailFormat?: boolean;
isSuperUser?: boolean;
orderEmailRecipient?: string;
groups?: Array<IGroup>;
type?: string;
}
interface IGetEmployeesByEmployerResponse {
getEmployeesByEmployer: {
employees?: Array<IEmployee>;
count?: number;
};
}
interface IGetSuperEmployeesResponse {
getSuperEmployeesByEmployer: Array<IUser>;
}
interface IGetOrderEmailRecipientsResponse {
getOrderEmailRecipients: Array<IUser>;
}
interface IEmployeesList {
employees?: Array<IUser>;
count?: number;
}
interface IGetSuperEmployeesByEmployerResponse {
getSuperEmployeesByEmployer?: Array<IUser>;
}
interface IGeneralResponseResponse {
success?: boolean;
message?: string;
}
interface ImportEmployeeItem {
firstname: string;
lastname: string;
email: string;
}
interface ImportEmployeeHistoryUserItem {
rowIndex: number;
employee: ImportEmployeeItem;
}
interface ImportEmployeeFile {
filename: string;
mimetype: string;
location: string;
}
interface IImportEmployeesHistoryItem<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
duplicateUsersFound?: boolean;
usersWithNoEmailFound?: boolean;
usersWithInvalidEmailFound?: boolean;
duplicateUsers?: Array<ImportEmployeeHistoryUserItem>;
usersWithNoEmail?: Array<ImportEmployeeHistoryUserItem>;
usersWithInvalidEmail?: Array<ImportEmployeeHistoryUserItem>;
totalRowsHandled?: number;
userId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
errorOccured?: boolean;
errors?: string;
file?: ImportEmployeeFile;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetImportEmployeesHistoryResponse {
getImportEmployeesHistory?: {
importEmployeesHistory?: Array<IImportEmployeesHistoryItem>;
};
}
interface ImportEmployeesHistoryList {
importEmployeesHistory?: Array<IImportEmployeesHistoryItem>;
}
interface ILedger<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
ledgerDetail: Array<ILedgerDetail>;
createdAt: string | Date;
deletedAt: string | Date;
}
interface IMetaData {
sender?: string;
receiver?: string;
}
interface ILedgerDetail<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
ledgerId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
actorId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
debit?: number;
credit?: number;
balance?: number;
metadata?: IMetaData;
createdAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetLedgerByActorResponse {
getLedgerByActor?: Array<ILedger>;
}
interface IGetBalanceByUserResponse {
getBalanceByUser?: number;
}
interface IUserMobileInfoData<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
userId?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : IUser;
userEmail?: string;
deviceUUID?: string;
mobileAppIsUptoDate?: boolean;
installedAppVersionText?: string;
installedAppVersionCode?: number;
deviceLanguageCode?: string;
deviceLanguageTag?: string;
deviceName?: string;
deviceModel?: string;
devicePlatform?: PLATFORM;
deviceOperatingSystem?: string;
deviceOSVersion?: string;
deviceManufacturer?: string;
deviceISVirtual?: boolean;
deviceWebViewVersion?: string;
dataStoredFrom?: DATA_STORED_FROM;
createdAt?: string | Date;
updatedAt?: string | Date;
}
interface IManagersListWhereDesktopIsAllowed<Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend> {
_id?: Env extends EnvironmentTypeEnum.backend ? string | ObjectId : string;
email?: string;
description?: string;
isActive?: boolean;
createdAt?: string | Date;
updatedAt?: string | Date;
}
interface IManagersListWhereDesktopIsAllowedResult {
items?: Array<IManagersListWhereDesktopIsAllowed>;
count?: number;
success?: boolean;
message?: string;
}
interface IUserMobileInfoDataList {
items?: Array<IUserMobileInfoData>;
count?: number;
success?: boolean;
message?: string;
}
interface IGetUserMobileAppInfoListResponse {
getUserMobileAppInfoList?: IUserMobileInfoDataList;
}
interface IGetManagersListWhereDesktopIsAllowedResponse {
getManagersListWhereDesktopIsAllowed?: IManagersListWhereDesktopIsAllowedResult;
}
interface IPerkRedeemCode {
_id?: string;
userId?: string;
perkId?: string;
code?: string;
type?: REDEEM_CODE_TYPE;
url?: string;
file?: string;
expireDate?: string;
purchasedAt?: string;
createdAt?: string | Date;
updatedAt?: string | Date;
deletedAt?: string | Date;
}
interface IGetPerkRedeemCodesResponse {
getPerkRedeemCodes?: {
redeemCodes?: Array<IPerkRedeemCode>;
success?: boolean;
message?: string;
purchaseableRedeemCodesCount?: number;
};
}
interface IPerkRedeemCodesResult {
redeemCodes?: Array<IPerkRedeemCode>;
success?: boolean;
message?: string;
purchaseableRedeemCodesCount?: number;
}
interface IUniqueDiscountCode {
discountCode?: string;
type?: string;
message?: string;
success?: b