import { BaseModel } from '../base.model'; import { Group } from './group'; /** * Representation of a user in contrast to the operator. * @ignore */ export class User extends BaseModel { protected _collectionString: string; public id: number; public username: string; public title: string; public first_name: string; public last_name: string; public structure_level: string; public number: string; public about_me: string; public groups_id: number[]; public is_present: boolean; public is_committee: boolean; public email: string; public last_email_send?: string; public comment: string; public is_active: boolean; public default_password: string; public constructor( id?: number, username?: string, title?: string, first_name?: string, last_name?: string, structure_level?: string, number?: string, about_me?: string, groups_id?: number[], is_present?: boolean, is_committee?: boolean, email?: string, last_email_send?: string, comment?: string, is_active?: boolean, default_password?: string ) { super(); this._collectionString = 'users/user'; this.id = id; this.username = username; this.title = title; this.first_name = first_name; this.last_name = last_name; this.structure_level = structure_level; this.number = number; this.about_me = about_me; this.groups_id = groups_id; this.is_present = is_present; this.is_committee = is_committee; this.email = email; this.last_email_send = last_email_send; this.comment = comment; this.is_active = is_active; this.default_password = default_password; } public get groups(): Group[] { return this.DS.getMany(Group, this.groups_id); } public get full_name(): string { let name = this.short_name; const addition: string[] = []; // addition: add number and structure level const structure_level = this.structure_level.trim(); if (structure_level) { addition.push(structure_level); } const number = this.number.trim(); if (number) { // TODO Translate addition.push('No.' + ' ' + number); } if (addition.length > 0) { name += ' (' + addition.join(' ยท ') + ')'; } return name.trim(); } // TODO read config values for "users_sort_by" public get short_name(): string { const title = this.title.trim(); const firstName = this.first_name.trim(); const lastName = this.last_name.trim(); let shortName = ''; // TODO need DS adjustment first first // if (this.DS.getConfig('users_sort_by').value === 'last_name') { // if (lastName && firstName) { // shortName += `${lastName}, ${firstName}`; // } else { // shortName += lastName || firstName; // } // } shortName += `${firstName} ${lastName}`; if (shortName.trim() === '') { shortName = this.username; } if (title) { shortName = `${title} ${shortName}`; } return shortName.trim(); } public toString = (): string => { return this.short_name; }; } BaseModel.registerCollectionElement('users/user', User);