62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import { IsNotEmpty, IsDate } from "class-validator";
|
|
import Contact from "./Contact";
|
|
import Document from "./Document";
|
|
import Office from "./Office";
|
|
import Resource from "../Resource";
|
|
import { Expose, Type } from "class-transformer";
|
|
import Role from "./Role";
|
|
import OfficeRole from "./OfficeRole";
|
|
import OfficeFolder from "./OfficeFolder";
|
|
import Seats from "../Admin/Seats";
|
|
|
|
export default class User extends Resource {
|
|
@Expose()
|
|
@IsNotEmpty({
|
|
groups: ["createFolder", "updateFolder", "createVote"],
|
|
message: "UID is required",
|
|
})
|
|
public uid?: string;
|
|
|
|
@Expose()
|
|
public idNot!: string;
|
|
|
|
@Expose()
|
|
@IsNotEmpty({ groups: ["createUser"], message: "Contact is required" })
|
|
@Type(() => Contact)
|
|
public contact?: Contact;
|
|
|
|
@Expose()
|
|
@IsNotEmpty({ groups: ["createUser"], message: "Office is required" })
|
|
@Type(() => Office)
|
|
public office_membership?: Office;
|
|
|
|
@Expose()
|
|
@IsDate()
|
|
public created_at: Date | null = null;
|
|
|
|
@Expose()
|
|
@IsDate()
|
|
public updated_at: Date | null = null;
|
|
|
|
@Expose()
|
|
@Type(() => OfficeFolder)
|
|
public office_folders?: OfficeFolder[];
|
|
|
|
@Expose()
|
|
@Type(() => Document)
|
|
public documents?: Document[];
|
|
|
|
@Expose()
|
|
@IsNotEmpty({ groups: ["createUser", "auth"], message: "Role is required" })
|
|
@Type(() => Role)
|
|
public role?: Role;
|
|
|
|
@Expose()
|
|
@Type(() => OfficeRole)
|
|
public office_role?: OfficeRole;
|
|
|
|
@Expose()
|
|
@Type(() => Seats)
|
|
public seats?: Seats;
|
|
}
|