forked from engineering/crv2
73 lines
1.7 KiB
TypeScript
73 lines
1.7 KiB
TypeScript
import { prop, getModelForClass, Ref } from "@typegoose/typegoose";
|
|
import Member from "./Member";
|
|
|
|
/* TODO
|
|
* Comments
|
|
* Further attributes for class
|
|
* */
|
|
|
|
import { SharedMemberAttributes } from "./Member";
|
|
|
|
export type PartnerTitle =
|
|
| "Director of Engineering"
|
|
| "Director of Operations"
|
|
| "Deputy Director of Engineering"
|
|
| "Deputy Director of Operations"
|
|
| "Services Manager"
|
|
| "Project Manager"
|
|
| "Engineering Core Partner"
|
|
| "Operations Core Partner"
|
|
| "Community Moderator"
|
|
| "Technician"
|
|
| string;
|
|
|
|
export enum PartnerDepartment {
|
|
INDEPENDENT_AGENCY,
|
|
ENGINEERING, // Department of Engineering
|
|
OPERATIONS, // Department of Operations
|
|
}
|
|
|
|
export enum PartnerRoleType {
|
|
MANAGERIAL,
|
|
NONMANAGERIAL,
|
|
}
|
|
|
|
export enum PartnerCommissionType {
|
|
TENURE,
|
|
PROVISIONAL,
|
|
CONTRACTUAL,
|
|
ACTING,
|
|
INTERIM,
|
|
TRIAL,
|
|
}
|
|
|
|
export default class Partner implements SharedMemberAttributes {
|
|
@prop({ required: true, unique: true })
|
|
public discordID: string | undefined;
|
|
|
|
@prop()
|
|
public emailAddress: string | undefined;
|
|
|
|
@prop({ required: true })
|
|
public roleType: PartnerRoleType | undefined;
|
|
|
|
@prop({ required: true })
|
|
public commissionType: PartnerCommissionType | undefined;
|
|
|
|
@prop({ required: true })
|
|
public department: PartnerDepartment | undefined;
|
|
|
|
@prop({ required: true })
|
|
public title: PartnerTitle | "Partner" | undefined;
|
|
|
|
@prop({ ref: () => Partner })
|
|
//
|
|
public directReport?: Ref<Partner> | string | undefined;
|
|
|
|
@prop()
|
|
// this field dictates if the partner is able to perform developer commands, such as "eval"
|
|
public canPerformDevCommands: boolean | undefined;
|
|
}
|
|
|
|
export const PartnerModel = getModelForClass(Partner);
|