jxycms
3/26/2020 - 12:23 AM

common method structure

import { ApplicationSection } from '../../enums';
import { ApplicationSectionTexts } from '../../constants/applicationSectionTexts';

export class ValidationData {
  [ApplicationSection.ApplicationStudent]: SectionValidationData;
  [ApplicationSection.ApplicationContact]: SectionValidationData;
  [ApplicationSection.ApplicationStudentVisa]: SectionValidationData;
  [ApplicationSection.ApplicationStudentSchoolProgram]: SectionValidationData;
  [ApplicationSection.ApplicationStudentAccommodationWelfare]: SectionValidationData;
  [ApplicationSection.ApplicationStudentEnglishProficiency]: SectionValidationData;
  [ApplicationSection.ApplicationStudentSpecialCircumstances]: SectionValidationData;
  [ApplicationSection.ApplicationStudentAgentDetails]: SectionValidationData;
  [ApplicationSection.ApplicationSupportingDocuments]: SectionValidationData;
  [ApplicationSection.ApplicationSpecialProgram]: SectionValidationData;

  static getObject(validationResult: any) {
    const validationData = new ValidationData();
    for (let index = 0; index < validationResult.length; index++) {
      if (validationResult[index].relatedSections.length > 0) {
        const relatedSections = validationResult[index].relatedSections;
        for (let sectionIndex = 0; sectionIndex < relatedSections.length; sectionIndex++) {
          const section = ApplicationSectionTexts.getApplicationSection(relatedSections[sectionIndex]);
          if (validationData[section]) {
            validationData[section].messages.push(validationResult[index].subject);
          } else {
            // tslint:disable-next-line: no-use-before-declare
            validationData[section] = new SectionValidationData({ isError: true, messages: [validationResult[index].subject]});
          }
        }
      }
    }
    return validationData;
  }
}

export class SectionValidationData {
  isError = true;
  messages: Array<string> = [];

  constructor(obj) {
    Object.assign(this, obj);
  }
}

export enum ApplicationSection {
  ApplicationStudent = 1,
  ApplicationContact = 2,
  ApplicationStudentVisa = 3,
  ApplicationStudentSchoolProgram = 4,
  ApplicationStudentAccommodationWelfare = 5,
  ApplicationStudentEnglishProficiency = 6,
  ApplicationStudentSpecialCircumstances = 7,
  ApplicationStudentAgentDetails = 8,
  ApplicationStudentDefaultCorrespondent = 9,
  ApplicationSupportingDocuments = 10,
  ApplicationStudentSummary = 11,
  ApplicationSpecialProgram = 12,
  ApplicationParentDetails = 13,
  ApplicationHomestay = 14
}

implementation:

this.validationData = ValidationData.getObject(validationResult);