File

src/app/features/attendance/model/attendance-item.ts

Description

Simple relationship object to represent an individual participant's status at an event including context information.

Index

Properties
Methods
Accessors

Constructor

constructor(status: AttendanceStatusType, remarks: string, participant?: string)
Parameters :
Name Type Optional
status AttendanceStatusType No
remarks string No
participant string Yes

Properties

Optional participant
Type : string
Decorators :
@DatabaseField({dataType: 'entity'})
remarks
Type : string
Decorators :
@DatabaseField()
Static schema
Type : EntitySchema

Methods

Public copy
copy()
Returns : AttendanceItem

Accessors

status
getstatus()
setstatus(value: unknown)
Parameters :
Name Type Optional
value unknown No
Returns : void
import {
  ATTENDANCE_STATUS_CONFIG_ID,
  AttendanceStatusType,
  NullAttendanceStatusType,
} from "./attendance-status";
import { DatabaseField } from "#src/app/core/entity/database-field.decorator";
import { EntitySchema } from "#src/app/core/entity/schema/entity-schema";

/**
 * Simple relationship object to represent an individual participant's status at an event including context information.
 */
export class AttendanceItem {
  declare static schema: EntitySchema;

  private _status: AttendanceStatusType;
  @DatabaseField({
    dataType: "configurable-enum",
    additional: ATTENDANCE_STATUS_CONFIG_ID,
  })
  get status(): AttendanceStatusType {
    return this._status;
  }

  set status(value) {
    if (typeof value === "object") {
      if (value.isInvalidOption && !value.id) {
        // empty id means "no status" — normalize to the canonical NullAttendanceStatusType
        // so the value stays consistent after a database round-trip
        this._status = NullAttendanceStatusType;
      } else if (value.isInvalidOption) {
        value.shortName = "?";
        value.countAs = NullAttendanceStatusType.countAs;
        this._status = value;
      } else {
        this._status = value;
      }
    } else {
      this._status = NullAttendanceStatusType;
    }
  }

  @DatabaseField({
    dataType: "entity",
  })
  participant?: string;

  @DatabaseField() remarks: string;

  constructor(
    status: AttendanceStatusType = NullAttendanceStatusType,
    remarks: string = "",
    participant?: string,
  ) {
    this.status = status;
    this.remarks = remarks;
    if (participant) {
      this.participant = participant;
    }
  }

  public copy(): AttendanceItem {
    return Object.assign(new AttendanceItem(), this);
  }
}

results matching ""

    No results matching ""