Files
encoach_ui_odoo19/src/resources/user.ts
Tiago Ribeiro d074ec390c ENCOA-272
2024-12-11 11:58:52 +00:00

45 lines
1.6 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: "Super Admin",
developer: "Developer",
mastercorporate: "Master Corporate",
};
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 (isAgentUser(user)) return user.agentInformation?.companyName || user.name;
if (isCorporateUser(user)) return 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.name;
}
export function getCorporateUser(user: User, users: User[], groups: Group[]) {
if (isCorporateUser(user)) return user;
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 undefined;
const admin = belongingGroupsAdmins[0] as CorporateUser;
return admin;
}