32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import {Type, User, CorporateUser, AgentUser, Group} from "@/interfaces/user";
|
|
|
|
export const USER_TYPE_LABELS: {[key in Type]: string} = {
|
|
student: "Student",
|
|
teacher: "Teacher",
|
|
corporate: "Corporate",
|
|
agent: "Country Manager",
|
|
admin: "Admin",
|
|
developer: "Developer",
|
|
};
|
|
|
|
export function isCorporateUser(user: User): user is CorporateUser {
|
|
return (user as CorporateUser).corporateInformation !== undefined;
|
|
}
|
|
|
|
export function isAgentUser(user: User): user is AgentUser {
|
|
return (user as AgentUser).agentInformation !== undefined;
|
|
}
|
|
|
|
export function getUserCompanyName(user: User, users: User[], groups: Group[]) {
|
|
if (isCorporateUser(user)) return user.corporateInformation?.companyInformation?.name || user.name;
|
|
if (isAgentUser(user)) return user.agentInformation?.companyName || user.name;
|
|
|
|
const belongingGroups = groups.filter((x) => x.participants.includes(user.id));
|
|
const belongingGroupsAdmins = belongingGroups.map((x) => users.find((u) => u.id === x.admin)).filter((x) => !!x && isCorporateUser(x));
|
|
|
|
if (belongingGroupsAdmins.length === 0) return "";
|
|
|
|
const admin = belongingGroupsAdmins[0] as CorporateUser;
|
|
return admin.corporateInformation?.companyInformation.name || admin.name;
|
|
}
|