submissionperiod.ts

PHOTO EMBED

Wed Dec 20 2023 16:03:58 GMT+0000 (Coordinated Universal Time)

Saved by @thanuj #sql

import { Entity, Column, JoinColumn, OneToOne, VirtualColumn, OneToMany, ManyToMany, ManyToOne } from 'typeorm';
import { CustomerDomainEntity } from '../base/CustomerDomainEntity';
import {
  returnsSubmissionPeriodLineItemView,
  SubmissionPeriodLineItemView
} from './SubmissionPeriodLineItemView';
import {
  reportedFlagSql,
  statusSql,
  fileIdsSql,
  filesCountSql,
  filesDataSql
} from './SubmissionPeriodSql';
import {
  returnsSubmissionSchedule,
  SubmissionSchedule
} from './SubmissionSchedule';
import { ServiceUser, returnsServiceUser } from '../user/ServiceUser';
import { DataFileSummaryInfo, returnsDataFileSummaryInfo } from '../datafile/DataFileSummaryInfo';
import { SubmissionPeriodInfoView } from './SubmissionPeriodInfoView';


export const returnsSubmissionPeriod = () => SubmissionPeriod;
export const dataFileSummaryInfoInverseSide = (dataFileSummaryInfo) =>
  dataFileSummaryInfo.submissionPeriod;

@Entity({ name: 'SUBMISSION_PERIOD' })
export class SubmissionPeriod extends CustomerDomainEntity {
  @Column({ name: 'EXPECTED_DATE' })
  expectedDate: Date;

  @Column({ name: 'PERIOD_START_DATE' })
  periodStartDate: Date;

  @Column({ name: 'PERIOD_END_DATE' })
  periodEndDate: Date;

  @Column({ name: 'SUBMISSION_SCHEDULE_SID', select: false })
  submissionScheduleSid: number;

  @Column({ name: 'ON_TIME_OVERRIDE' })
  onTimeOverride: boolean;

  @Column({ name: 'NO_DATA' })
  noData: boolean;

  @Column({ name: 'NO_DATA_REASON' })
  noDataReason: string;

  @Column({ name: 'NO_DATA_CREATE_DATE' })
  noDataCreateDate: Date;

  @Column({ name: 'NO_DATA_SERVICE_USER_SID', select: false })
  noDataServiceUserSid: number;

  @OneToOne(returnsServiceUser)
  @JoinColumn({ name: 'NO_DATA_SERVICE_USER_SID' })
  noDataServiceUser: Promise<ServiceUser>;

  @Column({ name: 'TRACKING_LEVEL' })
  trackingLevel: string;

  @Column({ name: 'EXPECTED_DAY' })
  expectedDay: number;

  @Column({ name: 'WORKING_DAYS' })
  workingDays: string;

  @Column({ name: 'IS_IN_PERIOD_REPORTER' })
  isInPeriodReporter: number;

  @Column({ name: 'DELETED' })
  deleted: boolean;

  @OneToOne(returnsSubmissionSchedule)
  @JoinColumn({ name: 'SUBMISSION_SCHEDULE_SID' })
  submissionSchedule?: Promise<SubmissionSchedule>;

  @VirtualColumn({ query: statusSql })
  status?: string;

  @VirtualColumn({ query: reportedFlagSql })
  reportedFlag: boolean;

  @VirtualColumn( {query : fileIdsSql} )
  fileIds?: string;

  firstFileId?: string;

  firstFileName?: string;

  firstFileCreateDate?: Date;

  @VirtualColumn( {query : filesCountSql} )
  numberOfFiles?: number;

  @OneToOne(returnsDataFileSummaryInfo)
  @JoinColumn({ name: 'SID', referencedColumnName: 'submissionPeriodSid' })
  submissionPeriodInfoView?: Promise<SubmissionPeriodInfoView>;

  @ManyToOne(() => DataFileSummaryInfo)
  @JoinColumn({ name: 'SID', referencedColumnName: 'submissionPeriodSid' })
  dataFileSummaryInfo?: Promise<DataFileSummaryInfo>;

  @OneToOne(returnsSubmissionPeriodLineItemView)
  @JoinColumn({ name: 'SID', referencedColumnName: 'submissionPeriodSid' })
  submissionPeriodLineItemView?: Promise<SubmissionPeriodLineItemView>;

}
content_copyCOPY