import { Component, ElementRef, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

import * as moment from 'moment';
import { EITTransactionsRequest } from 'src/app/eit/models/EITTransactionsReq';
import { EIT_ACTION } from 'src/app/eit/models/submit.eit.action';
import { EitService } from 'src/app/eit/services/eit.service';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { DateTimeInput } from 'src/app/uI-elements/date-time.input';
import { DateInput } from 'src/app/uI-elements/date.input';
import { HiddenInput } from 'src/app/uI-elements/hidden.input';
import { NumberInput } from 'src/app/uI-elements/number.input';
import { SelectInput } from 'src/app/uI-elements/select.input';
import { TextInput } from 'src/app/uI-elements/text.input';
import { TimeInput } from 'src/app/uI-elements/time.input';

import { TerminationServiceService } from '../service/termination-service.service';


@Component({
  selector: 'app-termination-form',
  templateUrl: './termination-form.component.html',
  styleUrls: ['./termination-form.component.scss'],
})
export class TerminationFormComponent implements OnInit {
  public selectedMenu;
  public diffStructure = [];
  public termColStructure = [];
  public isUpdate: boolean;
  private eitVALSettoCall: any = [];
  private textInput;
  private numberInput;
  private dateInput;
  public direction: string;
  private datetimeInput;
  private timeInput;
  private selectInput;
  private hiddenInput;
  private validateEitObj: any = [];
  public menuType: any;
  public respID;
  public selEmp;
  public eitRequest;
  private ExtraObj: any = {};
  private arrValues: any = [];
  selMenu: MenuResponse;
  private country;
  private updatedValues;
  private effectiveDate;
  private comtransNo;
  private reportSubmitRequest = {};
  getPassdirfromNotifiPage: boolean = false;
  private startDate;
  private endDate;
  private targetValue;
  public eitSubmitAction;
  constructor(public cs: CommonService, private elementRef: ElementRef, public terminationFormService: TerminationServiceService, public ts: TranslatorService, public eitService: EitService, public router: ActivatedRoute) {
    this.router.queryParams.subscribe(params => {
      this.targetValue = params.targetValue;
      console.log(this.targetValue);
    });

  }

  ngOnInit() {
    this.getPassdirfromNotifiPage = this.cs.sharedService.getSharedData('dirfromNotificationPage');
    this.selectedMenu = this.cs.sharedService.getSharedData(TerminationServiceService.TERMINATION_PAGE, false);
    this.getTerminationCol();
    this.direction = TranslatorService.getCurrentLanguageName();
    this.effectiveDate = new Date();
    this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false);
    this.eitSubmitAction = this.cs.sharedService.getSharedData(
      EITTransactionsRequest.SUBMIT_EIT_ACTION
    );
  }
  getTerminationCol() {
    this.cs.startLoading();
    this.terminationFormService.getTerminationColStructure({
      P_FUNCTION_NAME: this.selectedMenu.P_FUNCTION_NAME
    }, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
      this.termColStructure = response['GetTermColsStructureList'];
      this.drawEitFieldsStatic(this.termColStructure);
      this.getTermDiffStructure();
    })
  }
  getTermDiffStructure() {
    this.terminationFormService.getTermDiffStructure({
      P_DESC_FLEX_CONTEXT_CODE: null,
      P_FUNCTION_NAME: this.selectedMenu.FUNCTION_NAME
    }, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
      this.cs.stopLoading();
      this.handleDiffStructure(response);
    })
  }
  handleDiffStructure(result) {
    if (result.GetTermDffStructureList != null) {
      this.diffStructure = result.GetTermDffStructureList;
      this.drawEitFields(result.GetTermDffStructureList);
      if (this.isUpdate) {
        //this.submitAbsObjList = this.cs.sharedService.getSharedData(ProfileService.EMP_ADDRESS);
        //this.fillAbsStructure();
      }
    }
  }
  private drawEitFields(feildsList) {
    const containerId = "containerDiv";
    this.eitVALSettoCall = [];
    for (let i = 0; i < feildsList.length; i++) {
      let defaultVal: string = "";
      let defaultValText: string = "";

      if (feildsList[i].DISPLAY_FLAG != "N") {
        //check if the field should be displayed
        if (feildsList[i].VALIDATION_TYPE == "N") {
          //text , date , time
          if (feildsList[i].FORMAT_TYPE == "C") {
            // character
            this.textInput = new TextInput(
              feildsList[i].SEGMENT_PROMPT,
              feildsList[i].APPLICATION_COLUMN_NAME,
              defaultVal,
              containerId,
              defaultValText,
              feildsList[i].MOBILE_ENABLED,
              feildsList[i].DISPLAY_FLAG,
              feildsList[i].REQUIRED_FLAG
            );
          } else if (feildsList[i].FORMAT_TYPE == "N") {
            // number
            this.numberInput = new NumberInput(
              feildsList[i].SEGMENT_PROMPT,
              feildsList[i].APPLICATION_COLUMN_NAME,
              defaultVal,
              containerId,
              feildsList[i].MOBILE_ENABLED,
              feildsList[i].DISPLAY_FLAG,
              feildsList[i].REQUIRED_FLAG
            );
          } else if (feildsList[i].FORMAT_TYPE == "X") {
            // standard date
            if (
              feildsList[i].DEFAULT_TYPE == "C" ||
              feildsList[i].DEFAULT_TYPE == "D" ||
              feildsList[i].DEFAULT_TYPE == "P" ||
              feildsList[i].DEFAULT_TYPE == "S"
            ) {
              //constant
              this.dateInput = new DateInput(
                feildsList[i].SEGMENT_PROMPT,
                feildsList[i].APPLICATION_COLUMN_NAME,
                this.cs.reverseFormatDate(defaultVal),
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG,
                this.direction
              );
            } else {
              this.dateInput = new DateInput(
                feildsList[i].SEGMENT_PROMPT,
                feildsList[i].APPLICATION_COLUMN_NAME,
                "",
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG,
                this.direction
              );
            }
          } else if (feildsList[i].FORMAT_TYPE == "Y") {
            // standard date time
            if (
              feildsList[i].DEFAULT_TYPE == "C" ||
              feildsList[i].DEFAULT_TYPE == "D" ||
              feildsList[i].DEFAULT_TYPE == "P" ||
              feildsList[i].DEFAULT_TYPE == "S"
            ) {
              this.datetimeInput = new DateTimeInput(
                feildsList[i].SEGMENT_PROMPT,
                feildsList[i].APPLICATION_COLUMN_NAME,
                this.cs.reverseFormatStandardDate(defaultVal),
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG,
                this.direction
              );
            } else {
              this.datetimeInput = new DateTimeInput(
                feildsList[i].SEGMENT_PROMPT,
                feildsList[i].APPLICATION_COLUMN_NAME,
                "",
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG,
                this.direction
              );
            }
            const elem = document.getElementById(
              feildsList[i].APPLICATION_COLUMN_NAME
            );
          } else if (feildsList[i].FORMAT_TYPE == "I") {
            //time
            if (
              feildsList[i].DEFAULT_TYPE == "C" ||
              feildsList[i].DEFAULT_TYPE == "D" ||
              feildsList[i].DEFAULT_TYPE == "P" ||
              feildsList[i].DEFAULT_TYPE == "S"
            ) {
              this.timeInput = new TimeInput(
                feildsList[i].SEGMENT_PROMPT,
                feildsList[i].APPLICATION_COLUMN_NAME,
                "",
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG,
                this.direction
              );
            } else {
              this.timeInput = new TimeInput(
                feildsList[i].SEGMENT_PROMPT,
                feildsList[i].APPLICATION_COLUMN_NAME,
                "",
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG,
                this.direction
              );
            }
          }
        } else {
          if (feildsList[i].READ_ONLY == "Y") {
            this.textInput = new TextInput(
              feildsList[i].SEGMENT_PROMPT,
              feildsList[i].APPLICATION_COLUMN_NAME,
              defaultVal,
              containerId,
              defaultValText,
              feildsList[i].MOBILE_ENABLED,
              feildsList[i].DISPLAY_FLAG,
              feildsList[i].REQUIRED_FLAG
            );
          } else {
            this.selectInput = new SelectInput(
              feildsList[i].SEGMENT_PROMPT,
              feildsList[i].APPLICATION_COLUMN_NAME,
              defaultVal,
              containerId,
              feildsList[i].MOBILE_ENABLED,
              feildsList[i].DISPLAY_FLAG,
              feildsList[i].REQUIRED_FLAG
            );
            this.fillDropdownList(
              feildsList[i].SEGMENT_NAME,
              feildsList[i].E_SERVICES_VS,
              feildsList[i].E_SERVICES_DV
            );
          }
        }
        this.bindHtmlElemEvents(
          feildsList[i].APPLICATION_COLUMN_NAME,
          feildsList[i]
        );
      } else {
        this.hiddenInput = new HiddenInput(
          defaultVal,
          feildsList[i].APPLICATION_COLUMN_NAME,
          defaultValText,
          containerId
        );
        this.bindHtmlElemEvents(
          feildsList[i].APPLICATION_COLUMN_NAME,
          feildsList[i]
        );
      }
    }
    if (this.validateEitObj && this.validateEitObj.length > 0) {
      this.fillEITStructure();
    }
  }
  fillDropdownList(segmentName, optionList: any = [], DV: any = "") {
    let elemID: any = "";
    let eitObj: any;
    if (optionList.length > 0) {
      for (let i = 0; i < this.diffStructure.length; i++) {
        if (this.diffStructure[i].SEGMENT_NAME == segmentName) {
          eitObj = this.diffStructure[i];
          if (
            this.diffStructure[i].READ_ONLY == "Y" ||
            this.diffStructure[i].DISPLAY_FLAG == "N"
          ) {
            return false;
          }
          elemID = this.diffStructure[i].APPLICATION_COLUMN_NAME;
          break;
        }
      }
      let select = document.getElementById(elemID) as HTMLSelectElement;
      document.getElementById(elemID).innerHTML = "";
      if (eitObj.IsEmptyOption && eitObj.REQUIRED_FLAG == "N") {
        var firstoption = document.createElement("option");
        firstoption.text = this.ts.trPK("general", "choose");
        firstoption.value = "";
        select.add(firstoption);
      }
      for (let i = 0; i < optionList.length; i++) {
        var option = document.createElement("option");
        option.text = optionList[i].VALUE_COLUMN_NAME;
        option.value = optionList[i].ID_COLUMN_NAME;
        select.add(option);
      }
      if (select.dataset.hiddenval) {
        select.value = select.dataset.hiddenval;
      } else {
        select.value = DV.P_ID_COLUMN_NAME;
      }
      select.disabled = false;
    }
  }
  bindHtmlElemEvents(id, obj) {
    const elem = document.getElementById(id);
    console.log(elem);
    console.log(obj);
    const elemType = elem.tagName;
    let changeEvent = "ionChange";

    if (elemType == "SELECT") changeEvent = "change";

    try {
      elem.addEventListener(changeEvent, e => {
        elem.classList.remove("requiredClassElm");
        if (
          obj.CHILD_SEGMENTS_VS_Splited &&
          obj.CHILD_SEGMENTS_VS_Splited.length > 0
        ) {
          let listArray: any = obj.CHILD_SEGMENTS_VS_Splited;
          listArray.forEach(element => {
            this.emptyChildElement(element);
            this.getValueSet(element);
          });
        }
        if (
          obj.CHILD_SEGMENTS_DV_Splited &&
          obj.CHILD_SEGMENTS_DV_Splited.length > 0
        ) {
          let listArray: any = obj.CHILD_SEGMENTS_DV_Splited;
          listArray.forEach(element => {
            this.emptyChildElement(element);
            for (let i = 0; i < this.diffStructure.length; i++) {
              if (this.diffStructure[i].SEGMENT_NAME == element) {
                this.getDefaultValue(
                  this.diffStructure[i],
                  this.diffStructure[i].DESC_FLEX_NAME,
                  this.diffStructure[i].DESC_FLEX_CONTEXT_CODE,
                  this.diffStructure[i].SEGMENT_NAME,
                  this.diffStructure[i].PARENT_SEGMENTS_VS_SplitedVS,
                  this.diffStructure[i].PARENT_SEGMENTS_DV_Splited
                );
              }
            }
          });
        }
        return false;
      });
    } catch (e) {
      console.log(e.status);
    }
  }
  public getDefaultValue(
    obj,
    descFlexName,
    descFlexContextCode,
    segmentName,
    parentValue,
    ParentsList
  ) {
    let dependenciesList: any = [];
    let parentVal: any = null;
    let isStandardDate: boolean = false;
    let isStandardTimeDate: boolean = false;
    let isStandardTime: boolean = false;
    let isHidden: boolean = false;
    let isReadOnlyList: boolean = false;
    let isSelectElement: boolean = false;
    isStandardDate = this.isStandardDate(obj);
    isStandardTimeDate = this.isStandardDateTime(obj);
    isStandardTime = this.isStandardTime(obj);
    if (obj.DISPLAY_FLAG == "N") isHidden = true;
    if (obj.VALIDATION_TYPE != "N" && obj.READ_ONLY == "Y") {
      isReadOnlyList = true;
    }
    if (obj.VALIDATION_TYPE != "N" && obj.READ_ONLY == "N") {
      isSelectElement = true;
    }
    if (
      parentValue != "" &&
      (obj.VALIDATION_TYPE == "D" || obj.VALIDATION_TYPE == "Y")
    ) {
      let parvalue = this.getDependenciesParams(parentValue);
      if (parvalue && parvalue[0]) parentVal = parvalue[0].ID_COLUMN_NAME;
      else {
        parentVal = null;
      }
      if (!parentVal) {
        return false;
      }
    }
    if (ParentsList != "") {
      if (parentValue) ParentsList.concat(parentValue);
      dependenciesList = this.getDependenciesParams(ParentsList);
      if (!dependenciesList) {
        return false;
      }
    }

    const body = {
      P_SELECTED_EMPLOYEE_NUMBER: this.selEmp,
      P_MENU_TYPE: this.menuType,
      P_SELECTED_RESP_ID: this.respID, //-999,
      P_DESC_FLEX_NAME: descFlexName,
      P_DESC_FLEX_CONTEXT_CODE: descFlexContextCode,
      P_SEGMENT_NAME: segmentName,
      P_PARENT_VALUE: parentVal,
      GetValueSetValuesTBL: dependenciesList
    };

    this.eitService.getDefaultValue(body).subscribe((result: any) => {
      let elem = this.getElementByName(segmentName);
      let obj = this.handleDefaultValueResult(result);
      let val = obj.value;
      let text = obj.text;
      if (val == null) { val = ""; }
      if (text == null) { text = ""; }
      if (isStandardDate) {
        console.log("isStandardDate");
        elem.value = this.cs.reverseFormatDate(val);
      } else if (isStandardTimeDate) {
        console.log("isStandardTimeDate");
        if (val) {
          elem.dataset.dtvalue = this.cs.reverseFormatStandardDate(val);
          elem.innerHTML = this.cs.reverseFormatStandardDate(val);
        } else {
          elem.dataset.dtvalue = "";
          elem.innerHTML = "";
        }
      } else if (isStandardTime) {
        console.log("isStandardTime");
        if (val) {
          elem.dataset.dtvalue = val;
          elem.innerHTML = val;
          elem.value = val;
        } else {
          elem.dataset.dtvalue = "";
          elem.innerHTML = "";
        }
      } else {
        if (isSelectElement) {
          let elem = this.getSelectElementByName(segmentName);
          elem = document.getElementById(elem),
            elem.value = val;
        } else {
          elem.value = val;
          elem.innerText = text;
          elem.setAttribute("value", val);
        }
      }
      if (isHidden || isReadOnlyList) {
        if (val) elem.dataset.colmText = val;
        else elem.dataset.colmText = "";
        elem.value = text;
      }
      var event = new Event("ionChange");
      elem.dispatchEvent(event);
    });
  }

  handleDefaultValueResult(result) {
    let data = {
      text: result.GetDefaultValueList.P_VALUE_COLUMN_NAME,
      value: result.GetDefaultValueList.P_ID_COLUMN_NAME
    };
    return data;
  }
  getSelectElementByName(segmentName) {
    let elemID: any = "";
    for (let i = 0; i < this.diffStructure.length; i++) {
      if (this.diffStructure[i].SEGMENT_NAME == segmentName) {
        elemID = this.diffStructure[i].APPLICATION_COLUMN_NAME;
        break;
      }
    }
    return elemID;
  }
  getElementByName(segmentName) {
    let elemID: any = "";
    for (let i = 0; i < this.diffStructure.length; i++) {
      if (this.diffStructure[i].SEGMENT_NAME == segmentName) {
        elemID = this.diffStructure[i].APPLICATION_COLUMN_NAME;
        break;
      }
    }
    return document.getElementById(elemID) as HTMLInputElement;
  }

  fillEITStructure() {
    var obj = { peiObjVer: null, peiExtraInfoID: null };
    for (let i = 0; i < this.validateEitObj.length; i++) {
      let val: any;
      if (this.validateEitObj[i].VARCHAR2_VALUE)
        val = this.validateEitObj[i].VARCHAR2_VALUE;
      else if (this.validateEitObj[i].DATE_VALUE)
        val = this.validateEitObj[i].DATE_VALUE;
      else if (this.validateEitObj[i].NUMBER_VALUE)
        val = this.validateEitObj[i].NUMBER_VALUE;
      const elem = document.getElementById(
        this.validateEitObj[i].APPLICATION_COLUMN_NAME
      ) as HTMLInputElement;
      //obj.transactionNo=this.validateEitObj[i].TRANSACTION_NUMBER;
      if (elem) {
        if (val) {
          let feldDetails = this.diffStructure.find(
            x =>
              x.APPLICATION_COLUMN_NAME ==
              this.validateEitObj[i].APPLICATION_COLUMN_NAME
          );
          if (feldDetails) {
            let isStandardDate = this.isStandardDateVal(feldDetails);
            let isStandardDateTime = this.isStandardDateTimeVal(feldDetails);
            let isStandardTime = this.isStandardTimeVal(feldDetails);
            if (isStandardDate) {
              elem.value = this.cs.reverseFormatDate(val);
            } else if (isStandardDateTime) {
              elem.innerHTML = this.cs.reverseFormatStandardDate(val);
              elem.dataset.dtvalue = this.cs.reverseFormatStandardDate(val);
            } else if (isStandardTime) {
              elem.innerHTML = val;
              elem.dataset.dtvalue = val;
            } else {
              elem.value = val;
              elem.setAttribute("value", elem.value);
            }
            if (
              feldDetails.DISPLAY_FLAG == "N" ||
              (feldDetails.VALIDATION_TYPE != "N" &&
                feldDetails.READ_ONLY == "Y")
            ) {
              elem.dataset.colmText = val;
              elem.value = this.validateEitObj[i].SEGMENT_VALUE_DSP;
              elem.setAttribute("value", elem.value);
            }
          }
          elem.dataset.hiddenval = val; //hide the value to set it after calling get value set
          if (
            feldDetails.CHILD_SEGMENTS_VS_Splited &&
            feldDetails.CHILD_SEGMENTS_VS_Splited.length > 0
          ) {
            let listArray: any = feldDetails.CHILD_SEGMENTS_VS_Splited;
            listArray.forEach(element => {
              this.getValueSet(element);
            });
          }
          //  var event = new Event('change');
          // elem.dispatchEvent(event);
        }
      } else {
        if (
          this.validateEitObj[i].APPLICATION_COLUMN_NAME ==
          "PEI_OBJECT_VERSION_NUMBER"
        )
          obj.peiObjVer = this.validateEitObj[i].NUMBER_VALUE;
        else if (
          this.validateEitObj[i].APPLICATION_COLUMN_NAME == "PEI_EXTRA_INFO_ID"
        )
          obj.peiExtraInfoID = this.validateEitObj[i].NUMBER_VALUE;
      }
    }
    this.ExtraObj = obj;
  }
  public getValueSet(segmentName) {
    let descFlexName: any = "";
    let descFlexContextCode: any = "";
    let parentValue: any = [];
    let ParentsList: any = [];
    let parentVal: any = null;
    let dependenciesList: any = [];
    let validationType: string = "";

    for (let i = 0; i < this.diffStructure.length; i++) {
      if (this.diffStructure[i].SEGMENT_NAME == segmentName) {
        descFlexName = this.diffStructure[i].DESC_FLEX_NAME;
        descFlexContextCode = this.diffStructure[i].DESC_FLEX_CONTEXT_CODE;
        parentValue = this.diffStructure[i].PARENT_SEGMENTS_VS_SplitedVS;
        ParentsList = this.diffStructure[i].PARENT_SEGMENTS_VS_SplitedVS;
        validationType = this.diffStructure[i].VALIDATION_TYPE;
        break;
      }
    }
    if (parentValue != "" && (validationType == "D" || validationType == "Y")) {
      let parvalue = this.getDependenciesParams(parentValue);
      if (parvalue && parvalue[0]) parentVal = parvalue[0].ID_COLUMN_NAME;
      else {
        parentVal = null;
      }
      if (!parentVal) {
        return false;
      }
    }
    if (ParentsList != "") {
      dependenciesList = this.getDependenciesParams(ParentsList);
      if (!dependenciesList) {
        return false;
      }
    }
    const body = {
      P_SELECTED_EMPLOYEE_NUMBER: this.selEmp,
      P_MENU_TYPE: this.menuType,
      P_SELECTED_RESP_ID: this.respID, //-999,
      P_DESC_FLEX_NAME: descFlexName,
      P_DESC_FLEX_CONTEXT_CODE: descFlexContextCode,
      P_SEGMENT_NAME: segmentName,
      P_PARENT_VALUE: parentVal,
      GetValueSetValuesTBL: dependenciesList,
      P_PAGE_NUM: 1,
      P_PAGE_LIMIT: 1000
    };

    this.eitService.getSetValue(body).subscribe((result: any) => {
      if (result.GetValueSetValuesList != null) {
        this.fillDropdownList(segmentName, result.GetValueSetValuesList);
      }
    });
    let arr: any = [];
    return arr;
  }
  isStandardDateVal(obj: any): boolean {
    let isSt: boolean = false;
    if (obj.FORMAT_TYPE == "X") {

      isSt = true;

    }
    return isSt;
  }

  emptyChildElement(segmentName) {
    let elem = this.getElementByName(segmentName);
    elem.value = null;
    elem.innerHTML = "";
    if ("dtvalue" in elem.dataset) {
      elem.dataset.dtvalue = "";
    }
    if ("colmText" in elem.dataset) {
      elem.dataset.colmText = "";
    }
    var event = new Event("change");
    elem.dispatchEvent(event);
    elem.classList.remove("requiredClassElm");
  }
  getDependenciesParams(parentsList) {
    let parentArr: any = [];
    for (let i = 0; i < parentsList.length; i++) {
      for (let j = 0; j < this.diffStructure.length; j++) {
        if (this.diffStructure[j].SEGMENT_NAME == parentsList[i].Name) {
          if (this.diffStructure[j].DISPLAY_FLAG != "N") {
            if (this.diffStructure[j].VALIDATION_TYPE == "N") {
              let idColName: string;
              let val: any;
              if (
                this.diffStructure[j].FORMAT_TYPE == "Y" ||
                this.diffStructure[j].FORMAT_TYPE == "I"
              ) {
                //standard date time or //time
                let elem = document.getElementById(
                  this.diffStructure[j].APPLICATION_COLUMN_NAME
                ) as HTMLDivElement;
                val = elem.dataset.dtvalue;
                if (
                  (val == undefined || val == "") &&
                  parentsList[i].IsRequired == "REQUIRED"
                ) {
                  //alert(parentsList[i].Name +" Is required");
                  return false;
                }
                idColName = val;
                if (this.diffStructure[j].FORMAT_TYPE == "Y")
                  idColName = this.cs.formatStandardDate(val);
              } else {
                val = (document.getElementById(
                  this.diffStructure[j].APPLICATION_COLUMN_NAME
                ) as HTMLInputElement).value;
                if (
                  (val == undefined || val == "") &&
                  parentsList[i].IsRequired == "REQUIRED"
                ) {
                  //alert(parentsList[i].Name +" Is required");
                  return false;
                }
                idColName = val;
                if (this.diffStructure[j].FORMAT_TYPE == "X") {
                  //date
                  // idColName = this.cs.formatDate(val);
                  idColName = this.cs.formatDateNew(val);
                }
              }
              parentArr.push({
                SEGMENT_NAME: this.diffStructure[j].SEGMENT_NAME,
                VALUE_COLUMN_NAME: val,
                DESCRIPTION: "",
                ID_COLUMN_NAME: idColName,
                FLEX_VALUE_SET_NAME: this.diffStructure[j].FLEX_VALUE_SET_NAME
              });
              break;
            } else {
              if (this.diffStructure[j].READ_ONLY != "Y") {
                let x = document.getElementById(
                  this.diffStructure[j].APPLICATION_COLUMN_NAME
                ) as HTMLSelectElement;
                let text = x.options[x.selectedIndex]
                  ? x.options[x.selectedIndex].text
                  : "";
                let val = x.options[x.selectedIndex]
                  ? x.options[x.selectedIndex].value
                  : undefined;
                if (
                  (val == undefined || val == "") &&
                  parentsList[i].IsRequired == "REQUIRED"
                ) {
                  //alert(parentsList[i].Name +" Is required");
                  return false;
                } else {
                }
                if (text == undefined) {
                  text = "";
                }
                parentArr.push({
                  SEGMENT_NAME: this.diffStructure[j].SEGMENT_NAME,
                  VALUE_COLUMN_NAME: text,
                  DESCRIPTION: "",
                  ID_COLUMN_NAME: val,
                  FLEX_VALUE_SET_NAME: this.diffStructure[j].FLEX_VALUE_SET_NAME
                });
                break;
              } else {
                let x = document.getElementById(
                  this.diffStructure[j].APPLICATION_COLUMN_NAME
                ) as HTMLInputElement;
                let text = x.value;
                let val = x.dataset.colmText;
                if (
                  (val == undefined || val == "") &&
                  parentsList[i].IsRequired == "REQUIRED"
                ) {
                  //alert(parentsList[i].Name +" Is required");
                  return false;
                } else {
                }
                if (text == undefined) {
                  text = "";
                }
                parentArr.push({
                  SEGMENT_NAME: this.diffStructure[j].SEGMENT_NAME,
                  VALUE_COLUMN_NAME: text,
                  DESCRIPTION: "",
                  ID_COLUMN_NAME: val,
                  FLEX_VALUE_SET_NAME: this.diffStructure[j].FLEX_VALUE_SET_NAME
                });
                break;
              }
            }
          } else {
            let x = document.getElementById(
              this.diffStructure[j].APPLICATION_COLUMN_NAME
            ) as HTMLInputElement;
            let text = x.value;
            let val = x.dataset.colmText;
            if (
              (val == undefined || val == "") &&
              parentsList[i].IsRequired == "REQUIRED"
            ) {
              //alert(parentsList[i].Name +" Is required");
              return false;
            } else {
            }
            if (text == undefined) {
              text = "";
            }
            parentArr.push({
              SEGMENT_NAME: this.diffStructure[j].SEGMENT_NAME,
              VALUE_COLUMN_NAME: text,
              DESCRIPTION: "",
              ID_COLUMN_NAME: val,
              FLEX_VALUE_SET_NAME: this.diffStructure[j].FLEX_VALUE_SET_NAME
            });
            break;
          }
        }
      }
    }
    return parentArr;
  }

  isStandardTimeVal(obj: any): boolean {
    let isSt: boolean = false;
    if (obj.FORMAT_TYPE == "I") {
      // standard  time
      //if(obj.DEFAULT_TYPE=="C" || obj.DEFAULT_TYPE=="D" || obj.DEFAULT_TYPE=="P"||obj.DEFAULT_TYPE=="S"){//constant
      isSt = true;
      //}
    }
    return isSt;
  }
  isStandardDateTimeVal(obj: any): boolean {
    let isSt: boolean = false;
    if (obj.FORMAT_TYPE == "Y") {
      // standard date time
      //if(obj.DEFAULT_TYPE=="C" || obj.DEFAULT_TYPE=="D" || obj.DEFAULT_TYPE=="P"||obj.DEFAULT_TYPE=="S"){//constant
      isSt = true;
      //}
    }
    return isSt;
  }

  isStandardDateTime(obj: any): boolean {
    let isSt: boolean = false;
    if (obj.FORMAT_TYPE == "Y") {
      // standard date time
      if (
        obj.DEFAULT_TYPE == "C" ||
        obj.DEFAULT_TYPE == "D" ||
        obj.DEFAULT_TYPE == "P" ||
        obj.DEFAULT_TYPE == "S"
      ) {
        //constant
        isSt = true;
      }
    }
    return isSt;
  }
  isStandardTime(obj: any): boolean {
    let isSt: boolean = false;
    if (obj.FORMAT_TYPE == "I") {
      // standard date time
      if (
        obj.DEFAULT_TYPE == "C" ||
        obj.DEFAULT_TYPE == "D" ||
        obj.DEFAULT_TYPE == "P" ||
        obj.DEFAULT_TYPE == "S"
      ) {
        //constant
        isSt = true;
      }
    }
    return isSt;
  }

  isStandardDate(obj: any): boolean {
    let isSt: boolean = false;
    if (obj.FORMAT_TYPE == "X") {
      // standard date
      if (
        obj.DEFAULT_TYPE == "C" ||
        obj.DEFAULT_TYPE == "D" ||
        obj.DEFAULT_TYPE == "P" ||
        obj.DEFAULT_TYPE == "S"
      ) {
        //constant
        isSt = true;
      }
    }
    return isSt;
  }

  validateTransaction() {
    (this.elementRef.nativeElement.querySelectorAll(
      "ion-item"
    ) as HTMLElement[]).forEach(x => {
      x.classList.add("ng-touched");
      x.classList.remove("ng-untouched");
    });


    var arrValues = this.getElementsValues();
    let staticValues = this.getElementsStaticValues();
    let allStatisDynamicValues = arrValues.concat(staticValues);
    if (arrValues) {

      this.reportSubmitRequest = {

        P_MENU_TYPE: this.selMenu.List_Menu.MENU_TYPE,
        P_SELECTED_RESP_ID: -999,
        P_FUNCTION_NAME: this.selMenu.GetMenuEntriesList.FUNCTION_NAME,
        EITTransactionTBL: allStatisDynamicValues,

      };
      this.cs.startLoading();
      this.terminationFormService
        .submitTransation(this.reportSubmitRequest, {}, this.ts.trPK('general', 'retry'))
        .subscribe((result: any) => {
          this.handleSubmit(result);
        });
    }
  }


  private handleSubmit(result) {
    if (this.cs.validResponse(result)) {
      this.cs.sharedService.setSharedData(result['SubmitTermTransactionList'], TerminationServiceService.SHARED_DATA);
      this.cs.stopLoading();
      this.cs.confirmTermination();
    }
  }


  public getElementsValues(): any {
    this.updatedValues = []; //fill updated list
    let valuseArr: any = [];
    let varcharValue: any = null;
    let numbervalue: any = 0;
    let dateValue: any = null;
    let transNo: number = 1;
    let textValue: any;
    // if(this.ExtraObj.transactionNo)
    // transNo=this.ExtraObj.transactionNo;
    for (let i = 0; i < this.diffStructure.length; i++) {
      varcharValue = null;
      numbervalue = null;
      dateValue = null;
      /*********set transaction No of the updated object ********/
      if (this.getPassdirfromNotifiPage) {
        let updatedObj = this.validateEitObj.find(
          x =>
            x.APPLICATION_COLUMN_NAME ==
            this.diffStructure[i].APPLICATION_COLUMN_NAME
        );
        let y = updatedObj;
        transNo = y.TRANSACTION_NUMBER; // set the transaction number for all items in the updated loop
      }
      if (this.diffStructure[i].DISPLAY_FLAG != "N") {
        if (this.diffStructure[i].VALIDATION_TYPE == "N") {
          let elem = document.getElementById(
            this.diffStructure[i].APPLICATION_COLUMN_NAME
          ) as HTMLInputElement;
          let elemVal = (document.getElementById(
            this.diffStructure[i].APPLICATION_COLUMN_NAME
          ) as HTMLInputElement).value;
          textValue = elemVal;
          //let elemVal= (<HTMLInputElement>document.getElementById(this.eitResponse[i].APPLICATION_COLUMN_NAME)).value;
          if (
            this.diffStructure[i].FORMAT_TYPE == "X" &&
            this.diffStructure[i].DISPLAY_FLAG != "N"
          ) {
            //date
            elemVal = this.cs.formatDate(elemVal);
          } else if (
            this.diffStructure[i].FORMAT_TYPE == "Y" &&
            this.diffStructure[i].DISPLAY_FLAG != "N"
          ) {
            //standard date time
            // elemVal = elem.dataset.dtvalue;
            // elemVal = this.cs.formatStandardDate(elemVal);
            elemVal = this.cs.formatDate(elemVal);
          } else if (
            this.diffStructure[i].FORMAT_TYPE == "I" &&
            this.diffStructure[i].DISPLAY_FLAG != "N"
          ) {
            //time
            if (elemVal.length > 5) {
              elemVal = elemVal.substring(11, 16);
            } else {
              elemVal = elemVal;
            }
          }
          if (this.diffStructure[i].REQUIRED_FLAG == "Y" && !elemVal) {
            elem.classList.add("requiredClassElm");
            //this.common.showRequiredMsg();
            return false;
          } else {
            elem.classList.remove("requiredClassElm");
          }
          // if (elemVal != 'null'){
          varcharValue = elemVal;
          //} else{
          //   elemVal = null;
          //  }
          valuseArr.push({
            TRANSACTION_NUMBER: transNo,
            NAME: this.diffStructure[i].APPLICATION_COLUMN_NAME,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue
          });
        } else {
          let x = document.getElementById(
            this.diffStructure[i].APPLICATION_COLUMN_NAME
          ) as HTMLSelectElement;
          if (this.diffStructure[i].READ_ONLY == "Y") {
            let text = x.value;
            let val = x.dataset.colmText;
            varcharValue = val;
            textValue = text;
          } else {
            let val = x.options[x.selectedIndex]
              ? x.options[x.selectedIndex].value
              : null;
            let txt = x.options[x.selectedIndex]
              ? x.options[x.selectedIndex].text
              : null;
            varcharValue = val;
            textValue = txt;
          }
          if (this.diffStructure[i].REQUIRED_FLAG == "Y" && !varcharValue) {
            x.classList.add("requiredClassElm");
            //this.common.showRequiredMsg();
            return false;
          } else {
            x.classList.remove("requiredClassElm");
          }

          valuseArr.push({
            TRANSACTION_NUMBER: transNo,
            NAME: this.diffStructure[i].APPLICATION_COLUMN_NAME,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue
          });
        } //end else
      } else {
        let x = document.getElementById(
          this.diffStructure[i].APPLICATION_COLUMN_NAME
        ) as HTMLSelectElement;
        let val = x.dataset.colmText;
        textValue = x.value;
        if (this.diffStructure[i].REQUIRED_FLAG == "Y" && !val) {
          x.classList.add("requiredClassElm");
          //this.common.showRequiredMsg();
          return false;
        } else {
          x.classList.remove("requiredClassElm");
        }
      }

      if (this.getPassdirfromNotifiPage) {
        let updatedObj = this.validateEitObj.find(
          x =>
            x.APPLICATION_COLUMN_NAME ==
            this.diffStructure[i].APPLICATION_COLUMN_NAME
        );
        let y = updatedObj;
        y.VARCHAR2_VALUE = varcharValue;
        y.NUMBER_VALUE = numbervalue;
        y.DATE_VALUE = dateValue;
        y.SEGMENT_VALUE_DSP = textValue;
        transNo = y.TRANSACTION_NUMBER; // set the transaction number for all items in the updated loop
        this.updatedValues.push(y);
      } else {
        if (this.validateEitObj && this.eitSubmitAction == EIT_ACTION.UPDATE) {
          let updatedObj = this.validateEitObj.find(
            x =>
              x.APPLICATION_COLUMN_NAME ==
              this.diffStructure[i].APPLICATION_COLUMN_NAME
          );
          let y = updatedObj;
          y.VARCHAR2_VALUE = varcharValue;
          y.NUMBER_VALUE = numbervalue;
          y.DATE_VALUE = dateValue;
          y.SEGMENT_VALUE_DSP = textValue;
          transNo = transNo; // set the transaction number for all items in the updated loop
          this.updatedValues.push(y);
        } else {
          let y = {
            TRANSACTION_NUMBER: transNo,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue,
            SEGMENT_VALUE_DSP: textValue,
            APPLICATION_COLUMN_NAME: this.diffStructure[i]
              .APPLICATION_COLUMN_NAME,
            DATATYPE: this.diffStructure[i].DATATYPE,
            DESC_FLEX_CONTEXT_CODE: this.diffStructure[i].DESC_FLEX_CONTEXT_CODE,
            DESC_FLEX_NAME: this.diffStructure[i].DESC_FLEX_NAME,
            DISPLAY_FLAG: this.diffStructure[i].DISPLAY_FLAG,
            SEGMENT_NAME: this.diffStructure[i].SEGMENT_NAME,
            SEGMENT_PROMPT: this.diffStructure[i].SEGMENT_PROMPT
          };
          transNo = transNo; // set the transaction number for all items in the updated loop
          this.updatedValues.push(y);
        }
      }
    } // end for

    if (this.getPassdirfromNotifiPage) {
      let updatedObj1 = this.validateEitObj.find(
        x => x.APPLICATION_COLUMN_NAME === "PEI_ACTION"
      );
      let updatedObj2 = this.validateEitObj.find(
        x => x.APPLICATION_COLUMN_NAME === "PEI_EXTRA_INFO_ID"
      );
      let updatedObj3 = this.validateEitObj.find(
        x => x.APPLICATION_COLUMN_NAME === "PEI_OBJECT_VERSION_NUMBER"
      );
      this.updatedValues.push(updatedObj1);
      this.updatedValues.push(updatedObj2);
      this.updatedValues.push(updatedObj3);
      valuseArr = this.fillExtraInformation(
        valuseArr,
        updatedObj1.VARCHAR2_VALUE,
        updatedObj2.NUMBER_VALUE,
        updatedObj3.NUMBER_VALUE,
        transNo
      );
    } else {
      if (this.eitSubmitAction == EIT_ACTION.ADD) {
        this.updatedValues = this.fillExtraValuesUpdated(
          this.updatedValues,
          "NEW_ROW",
          -1,
          0,
          transNo
        );
        valuseArr = this.fillExtraInformation(
          valuseArr,
          "NEW_ROW",
          -1,
          0,
          transNo
        );
      } else if (this.eitSubmitAction == EIT_ACTION.UPDATE) {
        valuseArr = this.fillExtraInformation(
          valuseArr,
          "UPDATE_ROW",
          this.ExtraObj.peiExtraInfoID,
          this.ExtraObj.peiObjVer,
          transNo
        );
      } else if (this.eitSubmitAction == EIT_ACTION.DELETE) {
        valuseArr = this.fillExtraInformation(
          valuseArr,
          "DELETE_ROW",
          this.ExtraObj.peiExtraInfoID,
          this.ExtraObj.peiObjVer,
          transNo
        );
      }
    }
    return valuseArr;
  } // end getElementsValues

  fillExtraValuesUpdated(
    values: any,
    peiAction: string,
    peiExtraInfoID: number,
    peiObjVer: number,
    transNo: number
  ): any {
    let obj1 = {
      TRANSACTION_NUMBER: transNo,
      VARCHAR2_VALUE: peiAction,
      NUMBER_VALUE: null,
      DATE_VALUE: null,
      SEGMENT_VALUE_DSP: "",
      APPLICATION_COLUMN_NAME: "PEI_ACTION",
      DATATYPE: "VARCHAR2",
      DESC_FLEX_CONTEXT_CODE: "",
      DESC_FLEX_NAME: "",
      DISPLAY_FLAG: "N",
      SEGMENT_NAME: "",
      SEGMENT_PROMPT: ""
    };
    let obj2 = {
      TRANSACTION_NUMBER: 1,
      APPLICATION_COLUMN_NAME: "PEI_OBJECT_VERSION_NUMBER",
      VARCHAR2_VALUE: null,
      NUMBER_VALUE: peiObjVer,
      DATATYPE: "NUMBER",
      SEGMENT_VALUE_DSP: "",
      DATE_VALUE: null,
      DESC_FLEX_CONTEXT_CODE: "",
      DESC_FLEX_NAME: "",
      DISPLAY_FLAG: "N",
      SEGMENT_NAME: "",
      SEGMENT_PROMPT: ""
    };
    let obj3 = {
      APPLICATION_COLUMN_NAME: "PEI_EXTRA_INFO_ID",
      DATATYPE: "NUMBER",
      DATE_VALUE: null,
      DESC_FLEX_CONTEXT_CODE: "",
      DESC_FLEX_NAME: "",
      DISPLAY_FLAG: "N",
      NUMBER_VALUE: peiExtraInfoID,
      SEGMENT_NAME: "",
      SEGMENT_PROMPT: "",
      SEGMENT_VALUE_DSP: "",
      TRANSACTION_NUMBER: transNo,
      VARCHAR2_VALUE: null
    };
    values.push(obj1);
    values.push(obj2);
    values.push(obj3);
    return values;
  }

  fillExtraInformation(
    values: any,
    peiAction: string,
    peiExtraInfoID: number,
    peiObjVer: number,
    transNo: number
  ): any {
    values.push({
      TRANSACTION_NUMBER: transNo,
      NAME: "PEI_ACTION",
      VARCHAR2_VALUE: peiAction,
      NUMBER_VALUE: null,
      DATE_VALUE: null
    });
    values.push({
      TRANSACTION_NUMBER: transNo,
      NAME: "PEI_EXTRA_INFO_ID",
      VARCHAR2_VALUE: null,
      NUMBER_VALUE: peiExtraInfoID,
      DATE_VALUE: null
    });
    values.push({
      TRANSACTION_NUMBER: transNo,
      NAME: "PEI_OBJECT_VERSION_NUMBER",
      VARCHAR2_VALUE: null,
      NUMBER_VALUE: peiObjVer,
      DATE_VALUE: null
    });
    return values;
  }

  fixTransactionNo(transactionTBL: any): any[] {
    let list: any = [];
    let newIndex: number = 1;
    let length: number = transactionTBL.length;
    if (length > 0) {
      for (let i = 0; i < length; i++) {
        //  let item :any={};
        const item = Object.assign({}, transactionTBL[i]);
        let transNo: number = item.TRANSACTION_NUMBER;
        let obj: any = item;
        if (i == 0) {
          obj.TRANSACTION_NUMBER = newIndex;
          list.push(obj);
        } else {
          let prevEl: any = transactionTBL[i - 1].TRANSACTION_NUMBER;
          if (transNo == prevEl) {
            obj.TRANSACTION_NUMBER = newIndex;
            list.push(obj);
          } else {
            newIndex++;
            obj.TRANSACTION_NUMBER = newIndex;
            list.push(obj);
          }
        }
      }
    }
    return list;
  }

  private drawEitFieldsStatic(feildsList) {
    const containerId = "containerDivTwo";
    this.eitVALSettoCall = [];
    for (let i = 0; i < feildsList.length; i++) {
      let defaultVal: string = "";
      let defaultValText: string = "";

      if (feildsList[i].DISPLAY_FLAG != "N") {
        //text , date , time
        if (feildsList[i].DATATYPE == "VARCHAR2" && feildsList[i].ObjectValuesList === null) {
          // character
          this.textInput = new TextInput(
            feildsList[i].SEGMENT_PROMPT,
            feildsList[i].APPLICATION_COLUMN_NAME,
            defaultVal,
            containerId,
            defaultValText,
            feildsList[i].MOBILE_ENABLED,
            feildsList[i].DISPLAY_FLAG,
            feildsList[i].REQUIRED_FLAG
          );
        } else if (feildsList[i].DATATYPE == "VARCHAR2" && feildsList[i].ObjectValuesList !== null) {
          this.selectInput = new SelectInput(
            feildsList[i].SEGMENT_PROMPT,
            feildsList[i].APPLICATION_COLUMN_NAME,
            defaultVal,
            containerId,
            feildsList[i].MOBILE_ENABLED,
            feildsList[i].DISPLAY_FLAG,
            feildsList[i].REQUIRED_FLAG
          );
          this.fillStaticDropdownList(
            feildsList[i].SEGMENT_NAME,
            feildsList[i].ObjectValuesList,
            feildsList[i].APPLICATION_COLUMN_NAME
          );
        } else if (feildsList[i].DATATYPE == "NUMBER") {
          this.numberInput = new NumberInput(
            feildsList[i].SEGMENT_PROMPT,
            feildsList[i].APPLICATION_COLUMN_NAME,
            defaultVal,
            containerId,
            feildsList[i].MOBILE_ENABLED,
            feildsList[i].DISPLAY_FLAG,
            feildsList[i].REQUIRED_FLAG
          );
        } else if (feildsList[i].DATATYPE == "DATE") {
          this.dateInput = new DateInput(
            feildsList[i].SEGMENT_PROMPT,
            feildsList[i].APPLICATION_COLUMN_NAME,
            "",
            containerId,
            feildsList[i].MOBILE_ENABLED,
            feildsList[i].DISPLAY_FLAG,
            feildsList[i].REQUIRED_FLAG,
            this.direction
          );

        }
      }
    }

  }

  public fillStaticDropdownList(segmentName, optionList: any = [], elemID: string) {
    let eitObj: any;
    if (optionList.length > 0) {
      let select = document.getElementById(elemID) as HTMLSelectElement;
      document.getElementById(elemID).innerHTML = "";

      for (let i = 0; i < optionList.length; i++) {
        var option = document.createElement("option");
        option.text = optionList[i].MEANING;
        option.value = optionList[i].CODE;
        select.add(option);
      }
    }
  }

  public getElementsStaticValues(): any {
    this.updatedValues = []; //fill updated list
    let valuseArr: any = [];
    let varcharValue: any = null;
    let numbervalue: any = 0;
    let dateValue: any = null;
    let transNo: number = 1;
    let textValue: any;

    for (let i = 0; i < this.termColStructure.length; i++) {
      varcharValue = null;
      numbervalue = null;
      dateValue = null;

      if (this.termColStructure[i].DISPLAY_FLAG != "N") {
        if (this.termColStructure[i].ObjectValuesList === null) {
          let elem = document.getElementById(this.termColStructure[i].APPLICATION_COLUMN_NAME) as HTMLInputElement;
          let elemVal = elem !== null ? (document.getElementById(this.termColStructure[i].APPLICATION_COLUMN_NAME) as HTMLInputElement).value : '';
          textValue = elemVal;

          if (this.termColStructure[i].DATATYPE == "VARCHAR2" || this.termColStructure[i].DATATYPE == "NUMBER") {
            elemVal = elemVal;
          } else if (this.termColStructure[i].DATATYPE == "DATE") {
            // date
            elemVal = this.cs.formatDate(elemVal);
          }

          if (this.targetValue === 'new') {
            if (this.termColStructure[i].REQUIRED_FLAG == "Y" && !elemVal) {
              elem.classList.add("requiredClassElm");
              return false;
            } else {
              elem.classList.remove("requiredClassElm");
            }
          }

          if (this.termColStructure[i].DATATYPE == "DATE") {
            dateValue = elemVal;
          } else if (this.termColStructure[i].DATATYPE == "NUMBER") {
            numbervalue = elemVal;
          } else {
            varcharValue = elemVal;
          }

          valuseArr.push({
            TRANSACTION_NUMBER: transNo,
            NAME: this.termColStructure[i].APPLICATION_COLUMN_NAME,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue
          });
        } else {
          let x = document.getElementById(this.termColStructure[i].APPLICATION_COLUMN_NAME) as HTMLSelectElement;

          let val = x.options && x.options[x.selectedIndex] ? x.options[x.selectedIndex].value : null;
          let txt = x.options && x.options[x.selectedIndex] ? x.options[x.selectedIndex].text : null;
          varcharValue = val;
          textValue = txt;

          if (x !== null) {
            if (this.termColStructure[i].REQUIRED_FLAG == "Y" && !varcharValue) {
              x.classList.add("requiredClassElm");
              return false;
            } else {
              x.classList.remove("requiredClassElm");
            }
          }

          valuseArr.push({
            TRANSACTION_NUMBER: transNo,
            NAME: this.termColStructure[i].APPLICATION_COLUMN_NAME,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue
          });
        }
      } else {
        let x = document.getElementById(this.termColStructure[i].APPLICATION_COLUMN_NAME) as HTMLSelectElement;
        let val = x !== null ? x.dataset.colmText : '';
        textValue = x !== null ? x.value : '';

        if (x !== null) {
          if (this.termColStructure[i].REQUIRED_FLAG == "Y" && !val) {
            x.classList.add("requiredClassElm");
            return false;
          } else {
            x.classList.remove("requiredClassElm");
          }
        }
        varcharValue = val;



        valuseArr.push({
          TRANSACTION_NUMBER: transNo,
          NAME: this.termColStructure[i].APPLICATION_COLUMN_NAME,
          VARCHAR2_VALUE: varcharValue,
          NUMBER_VALUE: numbervalue,
          DATE_VALUE: dateValue
        });
      }
    }
    return valuseArr;
  }
  public customiseDate(date: any) {
    let formatedDate = date.slice(0, 9);
    let newDate = formatedDate.split("/").reverse();
    const tmp = newDate[2];
    newDate[2] = newDate[1];
    newDate[1] = tmp;
    newDate = newDate.join("/");
    newDate = newDate + ' 00:00:00';
    return newDate;
  }
}
