import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { Component, OnInit, ViewChild, ElementRef } from "@angular/core";
import { MenuEntry } from "src/app/hmg-common/services/menu/models/menu.entry";
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
import { EitRequest } from "../models/eit.request";
import { ModalController } from "@ionic/angular";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { EITTransactionsRequest } from "../models/EITTransactionsReq";
import { EitService } from "../services/eit.service";
import { TextAreaInput } from "src/app/uI-elements/text-area.input";
import { NumberInput } from "src/app/uI-elements/number.input";
import { TextInput } from "src/app/uI-elements/text.input";
import { SelectInput } from "src/app/uI-elements/select.input";
import { DateInput } from "src/app/uI-elements/date.input";
import { TimeInput } from "src/app/uI-elements/time.input";
import { DateTimeInput } from "src/app/uI-elements/date-time.input";
import { ButtonInput } from "src/app/uI-elements/button.input";
import { HiddenInput } from "src/app/uI-elements/hidden.input";
import * as moment from "moment";
import { DatePicker } from "@ionic-native/date-picker/ngx";
import { EIT_ACTION } from "../models/submit.eit.action";
import { AddEitResponse } from "../models/add.eit.response";
import { element } from '@angular/core/src/render3';
// import { EITNotificatonBodyResponse } from 'src/app/notification/models/EITNotificationBodyRes';
import { EITNotificatonBodyResponse } from "../models/EITNotificationBodyRes";

@Component({
  selector: "app-add-eit",
  templateUrl: "./add-eit.component.html",
  styleUrls: ["./add-eit.component.scss"]
})
export class AddEitComponent implements OnInit {
  @ViewChild("containerDiv") containerDiv: ElementRef;

  ////*new add*/////
  getPassNotificationDetails: any;
  getPassdirfromNotifiPage: boolean = false;
  functionName: string = "";
  menuType: any;
  /////////////////

  private textArea: TextAreaInput;
  private numberInput: NumberInput;
  private textInput: TextInput;
  private selectInput: SelectInput;
  private dateInput: DateInput;
  private timeInput: TimeInput;
  private datetimeInput: DateTimeInput;
  private buttonInput: ButtonInput;
  private hiddenInput: HiddenInput;
  private eitResponse: any;

  private eitVALSettoCall: any = [];
  private comtransNo: number = 0;
  // private parentChilds: any[];
  getPassMnuEntryObj: MenuEntry;
  selMenu: MenuResponse;
  eitSubmitAction: number = 0; //not submit
  private eitRequest: EitRequest;
  private validateEitObj: any = [];
  private ExtraObj: any = {};
  private arrValues: any = [];
  selEmp: string;
  respID: number;
  headerTitle: string = "";
  isResubmit: boolean = false;
  //private updatedNotObject:any=[];
  private updatedValues: any = [];
  addEITData: any;

  constructor(
    public modalController: ModalController,
    public cs: CommonService,
    private ts: TranslatorService,
    private eitService: EitService,
    public datePicker: DatePicker
  ) {
    this.selEmp = this.cs.sharedService.getSharedData(
      MenuResponse.SHARED_SEL_EMP,
      false
    );
    this.respID = this.cs.sharedService.getSharedData(
      MenuResponse.SHARED_SEL_RESP_ID,
      false
    );
    this.selMenu = new MenuResponse();
    this.selMenu = this.cs.sharedService.getSharedData(
      MenuResponse.SHARED_DATA,
      false
    );
    this.addEITData = this.cs.sharedService.getSharedData("AddEITData", false);
    console.log("addEITData: " + this.addEITData);
    console.log("dirfromNotificationPage: " +    this.addEITData.dirfromNotificationPage);

    this.eitRequest = new EitRequest();

    // this.buttonInput = new ButtonInput('btnSubmit', 'Submit', 'containerDiv', 'Y');

    ////*new add*/////
    /**********resubmit************ */
    this.getPassNotificationDetails = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, false);//WARINING
    this.getPassdirfromNotifiPage = this.addEITData.dirfromNotificationPage;
    if (this.getPassdirfromNotifiPage) {
      this.functionName = this.getPassNotificationDetails.FUNCTION_NAME; //;this.getPassNotificationDetails.NOTIFICATION_NAME;
      this.menuType = "E";
      this.selEmp = this.getPassNotificationDetails.SELECTED_EMPLOYEE_NUMBER;
      this.respID = -999;
      this.validateEitObj = this.addEITData.submitEITObjList;
      //  this.eitSubmitAction=this.getPassNotificationDetails.EIT_ACTION;
      let msg: string = "";
      msg = this.ts.trPK("eit", "update-title");
      this.headerTitle = msg;
    } else {
      this.getPassMnuEntryObj = this.selMenu.GetMenuEntriesList;
      this.comtransNo = this.addEITData.transNo;
      this.functionName = this.getPassMnuEntryObj.FUNCTION_NAME;
      this.menuType = this.selMenu.List_Menu.MENU_TYPE;
      this.validateEitObj = this.addEITData.submitEITObjList;
      this.headerTitle = this.selMenu.GetMenuEntriesList.PROMPT;
      this.eitSubmitAction = this.cs.sharedService.getSharedData(
        EITTransactionsRequest.SUBMIT_EIT_ACTION
      );
    }
  }

  ngOnInit() {}

  ngAfterViewInit() {
    console.log("ngAfterViewInit");
    // console.log(this.containerDiv.nativeElement);
    this.getEitDffStructure();
    // this.addFieldToDOM(this.buttonInput, 'btnSubmit', this.cs.presentAlert('Clicked!'), true)
  }

  private getEitDffStructure() {
    const body = {
      P_FUNCTION_NAME: this.functionName,
      P_SELECTED_EMPLOYEE_NUMBER: this.selEmp,
      P_MENU_TYPE: this.menuType,
      P_SELECTED_RESP_ID: this.respID
      // P_USER_NAME:this.userName
    };
    this.eitService.getEITDFFStrutre(body).subscribe((result: any) => {
      this.handleEitDffStructureResult(result);
    });
  }

  handleEitDffStructureResult(result) {
    if (result.GetEITDFFStructureList != null) {
      this.eitResponse = result.GetEITDFFStructureList;
      this.drawEitFields(result.GetEITDFFStructureList);
    }
  }

  private drawEitFields(feildsList) {
    const containerId = "containerDiv";
    this.eitVALSettoCall = [];
    for (let i = 0; i < feildsList.length; i++) {
      let defaultVal: string = "";
      let defaultValText: string = "";
      defaultVal = feildsList[i].E_SERVICES_DV.P_ID_COLUMN_NAME
        ? feildsList[i].E_SERVICES_DV.P_ID_COLUMN_NAME
        : "";
      defaultValText = feildsList[i].E_SERVICES_DV.P_VALUE_COLUMN_NAME
        ? feildsList[i].E_SERVICES_DV.P_VALUE_COLUMN_NAME
        : "";

      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
            // if(feildsList[i].DEFAULT_TYPE=="C"||feildsList[i].DEFAULT_TYPE==""){// default type constant
            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].DEFAULT_TYPE=="P"||feildsList[i].DEFAULT_TYPE=="S"){// profile/ sql
            //   this.textInput = new TextInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,this.getDefaultValue(feildsList[i].DESC_FLEX_NAME,feildsList[i].DESC_FLEX_CONTEXT_CODE,feildsList[i].SEGMENT_NAME,feildsList[i].PARENT_SEGMENTS_VS_SplitedVS,feildsList[i].PARENT_SEGMENTS_DV_Splited),containerId,feildsList[i].MOBILE_ENABLED);
            // }
          } else if (feildsList[i].FORMAT_TYPE == "N") {
            // number
            // if(feildsList[i].DEFAULT_TYPE=="C"||feildsList[i].DEFAULT_TYPE==""){
            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].DEFAULT_TYPE=="P"||feildsList[i].DEFAULT_TYPE=="S"){
            //   this.numberInput = new NumberInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,this.getDefaultValue(feildsList[i].DESC_FLEX_NAME,feildsList[i].DESC_FLEX_CONTEXT_CODE,feildsList[i].SEGMENT_NAME,feildsList[i].PARENT_SEGMENTS_VS_SplitedVS,feildsList[i].PARENT_SEGMENTS_DV_Splited),containerId,feildsList[i].MOBILE_ENABLED);
            // }
          } 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
              );
            } 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
              );
            }
            // else if(feildsList[i].DEFAULT_TYPE=="D"){//current date
            //  // this.dateInput = new DateInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,"currentDate",containerId,feildsList[i].MOBILE_ENABLED);
            //  this.dateInput = new DateInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,defaultVal,containerId,feildsList[i].MOBILE_ENABLED);

            // }else if(feildsList[i].DEFAULT_TYPE=="P"||feildsList[i].DEFAULT_TYPE=="S"){// sql and profile
            //   this.dateInput = new DateInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,this.getDefaultValue(feildsList[i].DESC_FLEX_NAME,feildsList[i].DESC_FLEX_CONTEXT_CODE,feildsList[i].SEGMENT_NAME,feildsList[i].PARENT_SEGMENTS_VS_SplitedVS,feildsList[i].PARENT_SEGMENTS_DV_Splited),containerId,feildsList[i].MOBILE_ENABLED);
            // }
          } 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
              );
            } 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
              );
            }
            const elem = document.getElementById(
              feildsList[i].APPLICATION_COLUMN_NAME
            );
            elem.addEventListener("click", e => {
              if (feildsList[i].MOBILE_ENABLED != "Y") return false;
              this.showDateTimePicker(
                feildsList[i].APPLICATION_COLUMN_NAME,
                feildsList[i].MAXIMUM_SIZE
              );
              e.stopImmediatePropagation();
            });
            // else if(feildsList[i].DEFAULT_TYPE=="D"){
            //   this.datetimeInput = new DateTimeInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,"currentDateTime",containerId,feildsList[i].MOBILE_ENABLED);
            // }else if(feildsList[i].DEFAULT_TYPE=="P"||feildsList[i].DEFAULT_TYPE=="S"){
            //   this.datetimeInput = new DateTimeInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,this.getDefaultValue(feildsList[i].DESC_FLEX_NAME,feildsList[i].DESC_FLEX_CONTEXT_CODE,feildsList[i].SEGMENT_NAME,feildsList[i].PARENT_SEGMENTS_VS_SplitedVS,feildsList[i].PARENT_SEGMENTS_DV_Splited),containerId,feildsList[i].MOBILE_ENABLED);
            // }
          } 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,
                defaultVal,
                containerId,
                feildsList[i].MOBILE_ENABLED,
                feildsList[i].DISPLAY_FLAG,
                feildsList[i].REQUIRED_FLAG
              );
            } 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
              );
            }
            const elem = document.getElementById(
              feildsList[i].APPLICATION_COLUMN_NAME
            );
            elem.addEventListener("click", e => {
              if (feildsList[i].MOBILE_ENABLED != "Y") return false;
              this.showTimePicker(
                feildsList[i].APPLICATION_COLUMN_NAME,
                feildsList[i].MAXIMUM_SIZE
              );
              e.stopImmediatePropagation();
            });
            // else if(feildsList[i].DEFAULT_TYPE=="T"){
            //   this.timeInput = new TimeInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,"currentTime",containerId,feildsList[i].MOBILE_ENABLED);
            // }else if(feildsList[i].DEFAULT_TYPE=="P"||feildsList[i].DEFAULT_TYPE=="S"){
            //   this.timeInput = new TimeInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,this.getDefaultValue(feildsList[i].DESC_FLEX_NAME,feildsList[i].DESC_FLEX_CONTEXT_CODE,feildsList[i].SEGMENT_NAME,feildsList[i].PARENT_SEGMENTS_VS_SplitedVS,feildsList[i].PARENT_SEGMENTS_DV_Splited),containerId,feildsList[i].MOBILE_ENABLED);
            // }
          }
        } else {
          if (feildsList[i].READ_ONLY == "Y") {
            this.textInput = new TextInput(
              feildsList[i].SEGMENT_PROMPT,
              feildsList[i].APPLICATION_COLUMN_NAME,
              defaultVal,
              containerId,
              defaultVal,
              feildsList[i].MOBILE_ENABLED,
              feildsList[i].DISPLAY_FLAG,
              feildsList[i].REQUIRED_FLAG
            );
          } else {
            // dropdown list missing open in differnt page
            //check this validation since he doesnt check the other default_type
            //if(feildsList[i].DEFAULT_TYPE=="P" || feildsList[i].DEFAULT_TYPE=="S"){
            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
            );
            // }else{
            //   this.selectInput = new SelectInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,"",containerId,feildsList[i].MOBILE_ENABLED);
            // }
            // this.getValueSet(feildsList[i].SEGMENT_NAME);
            this.fillDropdownList(
              feildsList[i].SEGMENT_NAME,
              feildsList[i].E_SERVICES_VS,
              feildsList[i].E_SERVICES_DV
            );
            //  this.eitVALSettoCall.push(feildsList[i]);
          }
        }
        //const elem = document.getElementById(feildsList[i].APPLICATION_COLUMN_NAME);
        //elem.addEventListener("click", (e) => {
        // this.getValueSet(feildsList[i].SEGMENT_NAME);
        //  e.stopImmediatePropagation();
        // });
        this.bindHtmlElemEvents(
          feildsList[i].APPLICATION_COLUMN_NAME,
          feildsList[i]
        );
      } else {
        //  if(feildsList[i].VALIDATION_TYPE=="N"){
        this.hiddenInput = new HiddenInput(
          defaultVal,
          feildsList[i].APPLICATION_COLUMN_NAME,
          defaultValText,
          containerId
        );
        // }else{
        //   this.selectInput = new SelectInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,defaultVal,containerId,feildsList[i].MOBILE_ENABLED,feildsList[i].DISPLAY_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]
        );
      }
    }
    // this.callValueSet();
    // let msg:string="";
    // msg=this.translate.translate("confirmAddEit.start");
    // this.buttonInput = new ButtonInput("EIT_Btn_Submit", this.translate.translate('general.submit'), containerId, "");
    // const elem = document.getElementById("EIT_Btn_Submit");
    // elem.addEventListener("click", (e) => {
    //   this.validateEITTransaction();
    // });
    if (this.validateEitObj && this.validateEitObj.length > 0) {
      this.fillEITStructure();
    }
  }

  addFieldToDOM(
    fieldObject: any,
    fieldId: any,
    clickListenerEvent: any,
    hasClickListener: boolean
  ) {
    console.log("AddFieldToDOM");
    const elemDiv = document.createElement("div");
    elemDiv.className = "";
    elemDiv.innerHTML = fieldObject.getTemplate();
    console.log(this.containerDiv.nativeElement);

    this.containerDiv.nativeElement.appendChild(elemDiv);
    // document.getElementById('containerDiv').appendChild(elemDiv);

    if (hasClickListener) {
      let elem = document.getElementById(fieldId);
      elem.addEventListener("click", e => {
        clickListenerEvent(e);
        e.stopImmediatePropagation();
      });
    }
  }

  closemodal() {
    this.updatedValues = [];
    this.modalController.dismiss();
  }

  public showDateTimePicker(elemID, maxSize) {
    let elem = document.getElementById(elemID) as HTMLDivElement;
    let date: any;
    let value = elem.innerHTML;
    if (value) date = moment(value, "YYYY/MM/DD HH:mm:ss").toDate();
    else date = new Date();
    this.datePicker
      .show({
        date: date,
        is24Hour: true,
        mode: "datetime"
      })
      .then(
        date => {
          let dateString: string = moment(date).format("YYYY/MM/DD HH:mm:ss");
          //remove seconds if the maximum size is 17
          if (maxSize == 17) {
            elem.innerHTML = dateString.substring(0, 16);
            elem.dataset.dtvalue = dateString.substring(0, 16);
          } else {
            elem.innerHTML = dateString;
            elem.dataset.dtvalue = dateString;
          }
          //elem.innerHTML = dateString;
          // elem.dataset.dtvalue = dateString;
        },
        err => console.log("Error occurred while getting date: ", err)
      );
  }
  public showTimePicker(elemID, maxSize) {
    let elem = document.getElementById(elemID) as HTMLDivElement;
    let date: any;
    let value = elem.innerHTML;
    if (value) {
      let nowDate = moment().format("YYYY/MM/DD") + " " + value;
      date = moment(nowDate, "YYYY/MM/DD HH:mm:ss").toDate();
    } else {
      date = new Date();
    }
    this.datePicker
      .show({
        date: date,
        is24Hour: true,
        mode: "time"
      })
      .then(
        date => {
          let dateString: string = moment(date).format("HH:mm:ss");
          //remove seconds if the maximum size is 5
          if (maxSize == 5) {
            elem.innerHTML = dateString.substring(0, 5);
            elem.dataset.dtvalue = dateString.substring(0, 5);
          } else {
            elem.innerHTML = dateString;
            elem.dataset.dtvalue = dateString;
          }
        },
        err => console.log("Error occurred while getting date: ", err)
      );
  }

  fillDropdownList(segmentName, optionList: any = [], DV: any = "") {
    let elemID: any = "";
    let eitObj: any;
    if (optionList.length > 0) {
      for (let i = 0; i < this.eitResponse.length; i++) {
        if (this.eitResponse[i].SEGMENT_NAME == segmentName) {
          eitObj = this.eitResponse[i];
          if (
            this.eitResponse[i].READ_ONLY == "Y" ||
            this.eitResponse[i].DISPLAY_FLAG == "N"
          ) {
            return false;
          }
          elemID = this.eitResponse[i].APPLICATION_COLUMN_NAME;
          break;
        }
      }
      let select = document.getElementById(elemID) as HTMLSelectElement;
      document.getElementById(elemID).innerHTML = "";

      // for(let i = select.options.length - 1 ; i >= 0 ; i--)
      // {
      //   select.remove(i);
      // }
      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;
        //select.dataset.hiddenval="";
      } else {
        select.value = DV.P_VALUE_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("change", (e) => {
      elem.addEventListener(changeEvent, e => {
        //console.log("elem change "+elem.id);
        //let x=e.currentTarget  as HTMLInputElement;
        //let isEmpty:boolean=false;
        //  if(!x.value)
        //   isEmpty=true;
        //emptyChildElement
        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 => {
            //if(isEmpty)
            this.emptyChildElement(element);
            // else
            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 => {
            // if(isEmpty){
            this.emptyChildElement(element);
            // }else{
            for (let i = 0; i < this.eitResponse.length; i++) {
              if (this.eitResponse[i].SEGMENT_NAME == element) {
                this.getDefaultValue(
                  this.eitResponse[i],
                  this.eitResponse[i].DESC_FLEX_NAME,
                  this.eitResponse[i].DESC_FLEX_CONTEXT_CODE,
                  this.eitResponse[i].SEGMENT_NAME,
                  this.eitResponse[i].PARENT_SEGMENTS_VS_SplitedVS,
                  this.eitResponse[i].PARENT_SEGMENTS_DV_Splited
                );
              }
            }
            // }
          });
        }
        return false;
        // e.stopImmediatePropagation();
      });
    } 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!=""){ parentVal= this.getDependenciesParams(parentValue)[0].ID_COLUMN_NAME;}
    //if(ParentsList!=""){dependenciesList =this.getDependenciesParams(ParentsList); }

    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;
      }
    }

    //if (dependenciesList==false){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);
     // console.log(elem);
      //   if(elem.dataset.hiddenval){
      //   elem.dataset.hiddenval="";
      // return false;
      //  }
      let obj = this.handleDefaultValueResult(result);
      let val = obj.value;
      let text = obj.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;
        } else {
          elem.dataset.dtvalue = "";
          elem.innerHTML = "";
        }
      } else {
        if (isSelectElement) {
          let elem = this.getSelectElementByName(segmentName);
          elem = document.getElementById(elem),
          //alert(elem.length);
          // var firstoption = document.createElement("option");
          // firstoption.text = text;
          // firstoption.value = val;
          // elem.add(firstoption);
          elem.value = val;
          //elem.text=text; 
          
        }else{
       // console.log("else - " + elem.value);
        elem.value = val;
        elem.innerText = text;
        elem.setAttribute("value", val);
       // console.log("else - " + elem.value);
        }
      }
      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;
  }

  callValueSet() {
    for (var i = 0; i < this.eitVALSettoCall.length; i++) {
      this.getValueSet(this.eitVALSettoCall[i].SEGMENT_NAME);
    }
  }

  getParentValue(parentValue) {
    if (parentValue.length == 0) {
      for (let i = 0; i < this.eitResponse.length; i++) {
        if (this.eitResponse[i].SEGMENT_NAME == parentValue[0].Name) {
          if (this.eitResponse[i].VALIDATION_TYPE == "N") {
            let val = (document.getElementById(
              this.eitResponse[i].APPLICATION_COLUMN_NAME
            ) as HTMLInputElement).value;
            return val;
          } else {
            let x = document.getElementById(
              this.eitResponse[i].APPLICATION_COLUMN_NAME
            ) as HTMLSelectElement;
            if (x.options.length > 0) {
              let val = x.options[x.selectedIndex]
                ? x.options[x.selectedIndex].value
                : null;
              return val;
            } else {
              return "";
            }
          }
        }
      }
    } else {
      return "";
    }
  }

  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.eitResponse.length; i++) {
      if (this.eitResponse[i].SEGMENT_NAME == segmentName) {
        descFlexName = this.eitResponse[i].DESC_FLEX_NAME;
        descFlexContextCode = this.eitResponse[i].DESC_FLEX_CONTEXT_CODE;
        parentValue = this.eitResponse[i].PARENT_SEGMENTS_VS_SplitedVS;
        ParentsList = this.eitResponse[i].PARENT_SEGMENTS_VS_SplitedVS;
        validationType = this.eitResponse[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;
  }

  getDependenciesParams(parentsList) {
    let parentArr: any = [];
    for (let i = 0; i < parentsList.length; i++) {
      for (let j = 0; j < this.eitResponse.length; j++) {
        if (this.eitResponse[j].SEGMENT_NAME == parentsList[i].Name) {
          if (this.eitResponse[j].DISPLAY_FLAG != "N") {
            if (this.eitResponse[j].VALIDATION_TYPE == "N") {
              let idColName: string;
              let val: any;
              if (
                this.eitResponse[j].FORMAT_TYPE == "Y" ||
                this.eitResponse[j].FORMAT_TYPE == "I"
              ) {
                //standard date time or //time
                let elem = document.getElementById(
                  this.eitResponse[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.eitResponse[j].FORMAT_TYPE == "Y")
                  idColName = this.cs.formatStandardDate(val);
              } else {
                val = (document.getElementById(
                  this.eitResponse[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.eitResponse[j].FORMAT_TYPE == "X") {
                  //date
                  // idColName = this.cs.formatDate(val);
                  idColName = this.cs.formatDateNew(val);
                }
              }
              parentArr.push({
                SEGMENT_NAME: this.eitResponse[j].SEGMENT_NAME,
                VALUE_COLUMN_NAME: val,
                DESCRIPTION: "",
                ID_COLUMN_NAME: idColName,
                FLEX_VALUE_SET_NAME: this.eitResponse[j].FLEX_VALUE_SET_NAME
              });
              break;
            } else {
              if (this.eitResponse[j].READ_ONLY != "Y") {
                let x = document.getElementById(
                  this.eitResponse[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.eitResponse[j].SEGMENT_NAME,
                  VALUE_COLUMN_NAME: text,
                  DESCRIPTION: "",
                  ID_COLUMN_NAME: val,
                  FLEX_VALUE_SET_NAME: this.eitResponse[j].FLEX_VALUE_SET_NAME
                });
                break;
              } else {
                let x = document.getElementById(
                  this.eitResponse[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.eitResponse[j].SEGMENT_NAME,
                  VALUE_COLUMN_NAME: text,
                  DESCRIPTION: "",
                  ID_COLUMN_NAME: val,
                  FLEX_VALUE_SET_NAME: this.eitResponse[j].FLEX_VALUE_SET_NAME
                });
                break;
              }
            }
          } else {
            let x = document.getElementById(
              this.eitResponse[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.eitResponse[j].SEGMENT_NAME,
              VALUE_COLUMN_NAME: text,
              DESCRIPTION: "",
              ID_COLUMN_NAME: val,
              FLEX_VALUE_SET_NAME: this.eitResponse[j].FLEX_VALUE_SET_NAME
            });
            break;
          }
        }
      }
    }
    return parentArr;
  }

  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");
  }

  getRequiredFilds() {
    for (let i = 0; i < this.eitResponse.length; i++) {
      if (this.eitResponse[i].REQUIRED_FLAG == "Y") {
        let elemVal = (document.getElementById(
          this.eitResponse[i].APPLICATION_COLUMN_NAME
        ) as HTMLInputElement).value;
        if (elemVal == "") {
          //alert(this.eitResponse[i].SEGMENT_NAME+" is required");
          break;
        }
      }
    }
  }

  getElementByName(segmentName) {
    let elemID: any = "";
    for (let i = 0; i < this.eitResponse.length; i++) {
      if (this.eitResponse[i].SEGMENT_NAME == segmentName) {
        elemID = this.eitResponse[i].APPLICATION_COLUMN_NAME;
        break;
      }
    }
    return document.getElementById(elemID) as HTMLInputElement;
  }

  getSelectElementByName(segmentName) {
    let elemID: any = "";
    for (let i = 0; i < this.eitResponse.length; i++) {
      if (this.eitResponse[i].SEGMENT_NAME == segmentName) {
        elemID = this.eitResponse[i].APPLICATION_COLUMN_NAME;
        break;
      }
    }
    return elemID;
  }

  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;
  }
  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;
  }

  isStandardDateVal(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;
  }
  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;
  }
  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;
  }

  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.eitResponse.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 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 = this.comtransNo;
    let textValue = "";
    // if(this.ExtraObj.transactionNo)
    // transNo=this.ExtraObj.transactionNo;
    for (let i = 0; i < this.eitResponse.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.eitResponse[i].APPLICATION_COLUMN_NAME
        );
        let y = updatedObj;
        transNo = y.TRANSACTION_NUMBER; // set the transaction number for all items in the updated loop
      }
      if (this.eitResponse[i].DISPLAY_FLAG != "N") {
        if (this.eitResponse[i].VALIDATION_TYPE == "N") {
          let elem = document.getElementById(
            this.eitResponse[i].APPLICATION_COLUMN_NAME
          ) as HTMLInputElement;
          let elemVal = (document.getElementById(
            this.eitResponse[i].APPLICATION_COLUMN_NAME
          ) as HTMLInputElement).value;
          textValue = elemVal;
          //let elemVal= (<HTMLInputElement>document.getElementById(this.eitResponse[i].APPLICATION_COLUMN_NAME)).value;
          if (
            this.eitResponse[i].FORMAT_TYPE == "X" &&
            this.eitResponse[i].DISPLAY_FLAG != "N"
          ) {
            //date
            elemVal = this.cs.formatDate(elemVal);
          } else if (
            this.eitResponse[i].FORMAT_TYPE == "Y" &&
            this.eitResponse[i].DISPLAY_FLAG != "N"
          ) {
            //standard date time
            elemVal = elem.dataset.dtvalue;
            elemVal = this.cs.formatStandardDate(elemVal);
          } else if (
            this.eitResponse[i].FORMAT_TYPE == "I" &&
            this.eitResponse[i].DISPLAY_FLAG != "N"
          ) {
            //time
            elemVal = elem.dataset.dtvalue;
          }
          if (this.eitResponse[i].REQUIRED_FLAG == "Y" && !elemVal) {
            elem.classList.add("requiredClassElm");
            //this.common.showRequiredMsg();
            return false;
          } else {
            elem.classList.remove("requiredClassElm");
          }
          if (elemVal) varcharValue = elemVal;
          valuseArr.push({
            TRANSACTION_NUMBER: transNo,
            NAME: this.eitResponse[i].APPLICATION_COLUMN_NAME,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue
          });
        } else {
          let x = document.getElementById(
            this.eitResponse[i].APPLICATION_COLUMN_NAME
          ) as HTMLSelectElement;
          if (this.eitResponse[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.eitResponse[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.eitResponse[i].APPLICATION_COLUMN_NAME,
            VARCHAR2_VALUE: varcharValue,
            NUMBER_VALUE: numbervalue,
            DATE_VALUE: dateValue
          });
        } //end else
      } else {
        let x = document.getElementById(
          this.eitResponse[i].APPLICATION_COLUMN_NAME
        ) as HTMLSelectElement;
        let val = x.dataset.colmText;
        textValue = x.value;
        if (this.eitResponse[i].REQUIRED_FLAG == "Y" && !val) {
          x.classList.add("requiredClassElm");
          //this.common.showRequiredMsg();
          return false;
        } else {
          x.classList.remove("requiredClassElm");
        }
        if (val) varcharValue = val;
        valuseArr.push({
          TRANSACTION_NUMBER: transNo,
          NAME: this.eitResponse[i].APPLICATION_COLUMN_NAME,
          VARCHAR2_VALUE: varcharValue,
          NUMBER_VALUE: numbervalue,
          DATE_VALUE: dateValue
        });
      }

      if (this.getPassdirfromNotifiPage) {
        let updatedObj = this.validateEitObj.find(
          x =>
            x.APPLICATION_COLUMN_NAME ==
            this.eitResponse[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.eitResponse[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.eitResponse[i]
              .APPLICATION_COLUMN_NAME,
            DATATYPE: this.eitResponse[i].DATATYPE,
            DESC_FLEX_CONTEXT_CODE: this.eitResponse[i].DESC_FLEX_CONTEXT_CODE,
            DESC_FLEX_NAME: this.eitResponse[i].DESC_FLEX_NAME,
            DISPLAY_FLAG: this.eitResponse[i].DISPLAY_FLAG,
            SEGMENT_NAME: this.eitResponse[i].SEGMENT_NAME,
            SEGMENT_PROMPT: this.eitResponse[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;
  }

  submitEit() {
    let list = this.eitRequest.EITTransactionTBL;
    this.eitRequest.EITTransactionTBL = this.fixTransactionNo(list);
    this.eitService
      .submitEit(this.eitRequest)
      .subscribe((result: AddEitResponse) => {
        this.handleSubmitEitResult(result);
      });
  }

  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;
  }
  handleSubmitEitResult(result) {
    if (this.cs.validResponse(result)) {
      this.cs.sharedService.setSharedData(
        this.eitRequest,
        EitRequest.SHARED_DATA
      );
      this.cs.sharedService.setSharedData(result, AddEitResponse.SHARED_DATA);
      //this.addrespList=result.SubmitEITTransactionList;
      // this.itemKey=this.addrespList.P_ITEM_KEY;
      // this.P_TransactionID=result.SubmitEITTransactionList.P_TRANSACTION_ID;
      //   this.sharedData.setSharedData(result,AddEitResponse.SHARED_DATA);

      // //  this.sharedData.setSharedData(result.SubmitEITTransactionList.P_TRANSACTION_ID,"TransactionIDResubmit");
      //  //  this.sharedData.setSharedData(this.eitRequest,EitRequest.SHARED_DATA);

      this.cs.sharedService.setSharedData(
        { isResubmit: false },
        "confirmAddEITData"
      );
      this.cs.openConfirmEitPage();
      // this.navCtrl.push("ConfirmAddEitPage", { isResubmit: false });
    }
  }

  validateEITTransaction() {
    //  let EITTransactionValues:any= [];

    this.arrValues = this.getElementsValues();
    if (this.arrValues) {
      this.eitRequest = {
        P_SELECTED_EMPLOYEE_NUMBER: this.selEmp,
        P_MENU_TYPE: this.menuType,
        P_SELECTED_RESP_ID: this.respID, //this.selMenu.List_Menu.RESP_ID,//-999,
        P_FUNCTION_NAME: this.functionName,
        P_DESC_FLEX_CONTEXT_CODE: this.eitResponse[0].DESC_FLEX_CONTEXT_CODE,
        EITTransactionTBL: this.arrValues
      };

      this.eitService
        .validateEITTransaction(this.eitRequest)
        .subscribe((result: any) => {
          this.handleEITValidateTr(result);
        });
    }
  }
  private handleEITValidateTr(result) {
    let data: any = { eitRequest: {}, updated: [] };
    if (this.cs.validResponse(result)) {
      // public static SHARED_DATA = 'login-request';
      this.cs.sharedService.setSharedData(
        this.eitRequest,
        EitRequest.SHARED_DATA
      );
      if (this.getPassdirfromNotifiPage) {
        let data: any = { eitRequest: {}, updated: [] };
        data.eitRequest = this.eitRequest;
        data.updated = this.updatedValues;
        // this.viewCtrl.dismiss(data);
        this.modalController.dismiss(data);
      //  this.closemodal();
      } else {
        this.submitEit();
        // this.navCtrl.push("ConfirmAddEitPage");
        //  data = { eitRequest: {}, updated: [] };
        // data.eitRequest = this.eitRequest;
        // data.updated = this.updatedValues;
        // this.viewCtrl.dismiss(data);
      }
    } else {
      this.updatedValues = [];
      data = { eitRequest: {}, updated: [] };
    }
  }
}
