import { ModalController } from '@ionic/angular';
import { WorklistService } from './../service/worklist.service';
import { Component, OnInit } from '@angular/core';
import { WorKListReplacmentEmployeeResponse } from '../models/ReplacmentEmployeeRes';
import { WorkListReplacmentEmployeeRequest } from '../models/ReplacmentEmployeeReq';
import { WorkListActionRequest } from '../models/NotificationActionReq';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { WorklistMainService } from '../service/work-list.main.service';
import { ViewReplacementModalComponent } from '../view-replacement-modal/view-replacement-modal.component';

@Component({
  selector: 'app-work-list-replacement-roll',
  templateUrl: './work-list-replacement-roll.component.html',
  styleUrls: ['./work-list-replacement-roll.component.scss'],
})
export class WorkListReplacementRollComponent implements OnInit {
  P_SEARCH_EMPLOYEE_DISPLAY_NAME: string = "";
  P_SEARCH_EMAIL_ADDRESS: string = "";
  getPassActionMode: any;
  selectedValue: any;
  inputSearch: any;
  selEmpName: any;
  selectedUserInf: any;
  userNote: any;
  getPassNotificationDetails: any;
  isAnswer: boolean = false;
  pQuestion: string = "";
  selEmp: any;
  P_PAGE_NUM: number;
  P_PAGE_LIMIT: number;
  ReplacementList: any = [];
  searchBy: string = "";
  IsReachEnd: boolean = false;
  ReplacmentListRes: WorKListReplacmentEmployeeResponse;
  private WorkListReplacmentEmployeeObj: WorkListReplacmentEmployeeRequest = new WorkListReplacmentEmployeeRequest();
  private WorkListActionObj: WorkListActionRequest;
  getpassResAttr: any = [];

  constructor(public worklistService: WorklistService, private cs: CommonService, private ts: TranslatorService, public workListMainService: WorklistMainService, public modalCtrl: ModalController) {
    this.P_PAGE_NUM = 1;
    this.P_PAGE_LIMIT = 50;
    this.getPassActionMode = this.cs.sharedService.getSharedData('passActionMode', false);
    this.getPassNotificationDetails = this.cs.sharedService.getSharedData('passNotificationInfo', false);
    this.getpassResAttr = this.cs.sharedService.getSharedData('passResAttr', false);
    this.pQuestion = this.cs.sharedService.getSharedData('pQuestion', false);
    if (this.getPassActionMode == "ANSWER_INFO") {
      this.isAnswer = true;
    }
    this.WorkListReplacmentEmployeeObj.P_PAGE_NUM = this.P_PAGE_NUM;
    this.WorkListReplacmentEmployeeObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;

    this.WorkListActionObj = new WorkListActionRequest();
    this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
    this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
    this.WorkListActionObj.P_ACTION_MODE = "";
    this.WorkListActionObj.P_COMMENTS = "";
    this.WorkListActionObj.RespondAttributeList = this.getpassResAttr;
    this.WorkListActionObj.P_APPROVER_INDEX = null;
  }

  ngOnInit() { }

  getreplacmentemployee() {
    this.ReplacementList = [];
    this.IsReachEnd = false;
    this.P_PAGE_NUM = 1;
    if (this.inputSearch) {
      switch (this.searchBy) {
        case '1': {

          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = this.inputSearch;
          this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";

          break;
        }
        case '2': {
          this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = this.inputSearch;
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
          break;
        }
        case '3': {
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = this.inputSearch;
          this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
          break;
        }
        default: {
          this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
          this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
          break;
        }
      }
    } else {
      this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
      this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
      this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
    }
    //  if(this.selectedValue =="1"){
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME=this.inputSearch;
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME="";
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS="";
    //   }
    //   else  if(this.selectedValue =="2"){
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME="";
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME=this.inputSearch;
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS="";
    //   }
    //   else  if(this.selectedValue =="3"){
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME="";
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME="";
    //     this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS=this.inputSearch;
    //   }

    this.worklistService.getReplacmentEmployeeList(this.WorkListReplacmentEmployeeObj).
      subscribe((result: WorKListReplacmentEmployeeResponse) => {
        this.handleWorkListReplacmentEmployeeResult(result);
      });

  }//End replacment Employee

  handleWorkListReplacmentEmployeeResult(result) {

    if (this.cs.validResponse(result)) {
      // this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
      if (this.cs.hasData(result.ReplacementList)) {
        //this.ReplacmentListRes =result.ReplacementList;
        this.ReplacementList = result.ReplacementList;
        this.P_PAGE_NUM++;
        let lastItemIndex = this.ReplacementList.length - 1;
        if (result.ReplacementList[lastItemIndex]) {
          let lastitem = result.ReplacementList[lastItemIndex];
          if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
            this.IsReachEnd = true;
          } else {
            this.IsReachEnd = false;
          }
        }
      } else {
        let msg: string = this.ts.trPK('general', 'noResult');
        this.cs.presentAlert(msg);
      }
      //  if(result.ReplacementList.length == 0){

      //   }

      //   else if(result.ReplacementList != null)
      //   { 
      //    this.ReplacmentListRes =result.ReplacementList;
      //    //open modal 
      //    this.openModale(this.ReplacmentListRes);


      //  } // if result == null

    } // valid it
  }

  getValueSelected(Value) {

    this.selectedValue = Value;
  }
  clear() {
    this.selEmpName = "";
    this.selectedUserInf = null;

  }
  async openModale(ReplacmentListRes) {
    const modal = await this.modalCtrl.create({
      component: ViewReplacementModalComponent
    });

    modal.onDidDismiss()
      .then((data) => {
        if (data == "cancel" || data == "undefined") {
          //this.selEmpName="";
          return;
        } else {
          this.selectedUserInf = data;
          this.selEmpName = this.selectedUserInf.EMPLOYEE_DISPLAY_NAME;
        }
      });

    return await modal.present();
  }

  submitAction() {
    if (this.selEmp && this.isAnswer == false) {
      this.selectedUserInf = this.ReplacementList[this.selEmp];

      if (this.selectedUserInf && this.selectedUserInf.USER_NAME) {
        if (this.userNote) {
          this.WorkListActionObj.P_FORWARD_TO_USER_NAME = this.selectedUserInf.USER_NAME;
          this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
          this.WorkListActionObj.P_COMMENTS = this.userNote;// response Attr

          this.workListMainService.actionButton(this.WorkListActionObj).
            subscribe((result: any) => {
              this.handleApplayActionResult(result);
            });
        } else {
          let msg: string = this.ts.trPK("replacementRoll", "enterNote");
          this.cs.showErrorMessageDialog(() => {
          }, this.ts.trPK('general', 'ok'), msg);

        }
      } else {
        let msg: string = this.ts.trPK("replacementRoll", "msg");
        this.cs.showErrorMessageDialog(() => {
        }, this.ts.trPK('general', 'ok'), msg);
      }
    } else if (this.isAnswer == true) {
      if (this.userNote) {
        this.WorkListActionObj.P_FORWARD_TO_USER_NAME = null;
        this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
        this.WorkListActionObj.P_COMMENTS = this.userNote;// response Attr

        this.workListMainService.actionButton(this.WorkListActionObj).
          subscribe((result: any) => {
            this.handleApplayActionResult(result);
          });
      } else {
        let msg: string = this.ts.trPK("replacementRoll", "enterNote");
        this.cs.showErrorMessageDialog(() => {
        }, this.ts.trPK('general', 'ok'), msg);
      }
    } else {
      let msg: string = this.ts.trPK("replacementRoll", "msg");
      this.cs.showErrorMessageDialog(() => {
      }, this.ts.trPK('general', 'ok'), msg);
    }
  }

  handleApplayActionResult(result) {
    if (this.cs.validResponse(result)) {
      // let msg=this.translate.translate("general.success");
      // this.cs.showAlert(msg);
      // this.navCtrl.push("HomePage");
      this.cs.openNotificationPage();
    } // valid it
  }

  // cancel() {
  //   this.navCtrl.pop();
  // }


  doInfinite(infiniteScroll) {
    if (!this.IsReachEnd) {
      //const request =new WorkListActionRequest();
      // request.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME=this.P_SEARCH_USER_NAME;
      // request.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME=this.P_SEARCH_EMPLOYEE_DISPLAY_NAME;
      // request.P_SEARCH_EMAIL_ADDRESS=this.P_SEARCH_EMAIL_ADDRESS;
      this.WorkListReplacmentEmployeeObj.P_PAGE_NUM = this.P_PAGE_NUM;
      this.WorkListReplacmentEmployeeObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
      //  request.P_SELECTED_EMPLOYEE_NUMBER=this.selEmp;

      this.worklistService.getReplacmentEmployeeList(this.WorkListReplacmentEmployeeObj).
        subscribe((result: any) => {
          if (this.cs.validResponse(result)) {
            if (this.cs.hasData(result.ReplacementList)) {
              this.P_PAGE_NUM++;
              result.ReplacementList.forEach(vr => {
                if (vr.ROW_NUM == vr.NO_OF_ROWS) {
                  this.IsReachEnd = true;
                }
                else {
                  this.IsReachEnd = false;
                }
                this.ReplacementList.push(vr);
                // this.pro.GetVacationRulesList.push(vr);   
              });
            } else {
              this.IsReachEnd = true;
            }
          }
          //this.P_PAGE_NUM++;
          if (infiniteScroll)
            infiniteScroll.target.complete();


          // console.log(resFlag);
        }, (Error) => console.log(Error), () => infiniteScroll.target.complete());
    } else {
      if (infiniteScroll)
        infiniteScroll.target.complete();
    }
  }

}
