import { communication } from "../../entity/communication";
import { CommunicationViewModel } from "../../viewmodel/admin/communication.models";
import CommunicationTypeFactory from "./communicationType";

export default abstract class CommunicationFactory {
  /**
   * @description map record to communication
   * @param {communication} record
   * @returns {CommunicationViewModel}
   */
  public static mapToSingle(record: communication, isMain: boolean = false): CommunicationViewModel {
    return {
      id: record.id,
      preferred: record.preferred,
      mobile: record.mobile,
      email: record.email,
      city: record.city,
      street: record.street,
      streetNumber: record.streetNumber,
      streetNumberAddition: record.streetNumberAddition,
      type: CommunicationTypeFactory.mapToSingle(record.type),
      isNewsletterMain: isMain ? isMain : record?.member?.sendNewsletter?.id == record.id,
      isSMSAlarming: record.isSMSAlarming,
    };
  }

  /**
   * @description map records to communication
   * @param {Array<communication>} records
   * @returns {Array<CommunicationViewModel>}
   */
  public static mapToBase(records: Array<communication>): Array<CommunicationViewModel> {
    return records.map((r) => this.mapToSingle(r));
  }
}