import { Component, OnInit } from '@angular/core';
import { Platform, Events, MenuController } from '@ionic/angular';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service';
import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user';
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { MowadhafiService } from '../mowadhafi.service';
import { Location } from '@angular/common';
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { LoginModel } from 'src/app/authentication/models/LoginModel';
import { SendActivationByType } from 'src/app/authentication/models/sendActivationByType';
import { FileUploader } from 'ng2-file-upload';
@Component({
  selector: 'app-hr-request-form',
  templateUrl: './hr-request-form.component.html',
  styleUrls: ['./hr-request-form.component.scss'],
})
export class HrRequestFormComponent implements OnInit {
  public EmpName : string; 
  public EmpNum  : string; 
  public EmpGroup : string; 
  public EmpMobile  : string; 
  public EmpJob : string; 
  public EmpOrgName : string; 
  public EmpPayrol  : string; 
  public EmpPosition  : string; 
  public EmpEmail: string; 
  public EmpCatMeaning:string;
  public EmpGRADENAME : string;
  public EmpLocation : string;
  public EmpImg : string;
  public userImage: any = '../assets/imgs/profile.png';
  public loginData = new LoginModel();
  public searchKeySelect = 'Complaints';
  myColor: string = 'secondary';
  public showRequestDetails = false;
  public proID= "CS"
  public inquiry: string;
  public HR : string;
  public complaints:string;
  public Projectresult:any;
  public EmpRelations:any;
  public Hr:any;
  public Payroll:any;
  public GovRelation:any;
  public projName:any;
  public topicName:any;
  public departTypeList: any;
  public topicTypeList:any;
  public sectionTypeList:any;
  public projectDetial:any;
  public projectDep:any;
  public sectionDep:any;
  public projectCode;
  public SelectedServiceType:any;
  public depType:any;
  public secType:any;
  public topicType:any;
  indexLastObj: any;
  addAttachRequest: any = [];
  TransactionID: any;
  public teckitDetial:any;
  public teckitInfo:any;
  public Description:any;
  public selectedFile: any;
  filterAllowedType: any = [
    "application/pdf",
    "image/jpeg",
    "image/png",
    "text/plain",
    "image/jpg",
    "application/vnd.ms-excel",
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  ];

  public direction: string;
    constructor(
      public ts: TranslatorService,
      public cs: CommonService,
      public authService: AuthenticationService,
      public sharedData: SharedDataService,
      public events: Events,
      public MowadhafiService: MowadhafiService,
      private location: Location,
      private menu: MenuController,
      
    
    ) {
      this.direction = TranslatorService.getCurrentLanguageName();
     }

  ngOnInit() {
    this.projectCode = this.cs.sharedService.getSharedData("projcet-code");
    this.getTicketsByEmployee();
    this.getTicketTypes();
    this.getProject();
    this.getCreateTicket();
    
  
  }

  goback() {
    this.location.back();
 
 }

 showSelectedField(){}
 
 getTicketTypes(){
  const request = {
  EmployeeNumber:"",

  };
  this.MowadhafiService.getTicketTypes(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
   {   
    this.handlegetTicketTypesResult(result);  
          
     }) }
     handlegetTicketTypesResult(result){
       this.HR = result.Mohemm_Itg_TicketTypesList[0].typeName;
       this.complaints = result.Mohemm_Itg_TicketTypesList[1].typeName;
       this.inquiry = result.Mohemm_Itg_TicketTypesList[2].typeName;
     }


getProject(){
   const request = {
     EmployeeNumber:"",
     ItgProjectCode: this.projectCode

  };
  this.MowadhafiService.getProject(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
   {   
    this.handlegetProjectResult(result);  
          
     }) }
     handlegetProjectResult(result){
     this.Projectresult=result.Mohemm_Itg_ProjectsList;
     this.getProjectDepartments();
     }


getProjectDepartments(){
  const request = {
     EmployeeNumber:"",
    ItgProjectId:this.Projectresult[0].projectId,
    

  };
  this.MowadhafiService.getProjectDepartments(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
   {   
    this.handlegetProjectDepartmentsResult(result);  
          
     }) }
     handlegetProjectDepartmentsResult(result){
      this.departTypeList= result.Mohemm_ITG_ProjectDepartmentsList;
      this.getDepartmentSections();
    
     }

getDepartmentSections(){
  const request = {
    EmployeeNumber:"",
    ItgProjectDepartmentId:this.departTypeList.projectDepartmentId,
  

  };
  this.MowadhafiService.getDepartmentSections(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
   {   
    this.handlegetDepartmentSectionsResult(result);  
          
     }) }
     handlegetDepartmentSectionsResult(result){
      this.sectionTypeList= result.Mohemm_ITG_DepartmentSectionsList;
     
      this.getSectionTopics();
     }

getSectionTopics(){
  const request = {
   EmployeeNumber:"",
   ItgDepartmentSectionId:this.sectionTypeList.departmentSectionId,

  };
  this.MowadhafiService.getSectionTopics(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
   {   
    this.handlegetSectionTopicsResult(result);  
          
     }) }
     handlegetSectionTopicsResult(result){
      // this.topicName=result.Mohemm_ITG_SectionTopicsList[0].topicName
      this.topicTypeList= result.Mohemm_ITG_SectionTopicsList;
     
       
     }



    //  getTicketDetails(){
    //   const request = {
    //     EmployeeNumber:'',
    //     ItgTicketId:this.teckitDetial.ticketId,
    
    //   };
    //   this.MowadhafiService.getTicketDetails(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
    //    {   
    //     this.handlegetTicketDetailsResult(result);  
              
    //      }) }
    //      handlegetTicketDetailsResult(result){

    //       let res;
    //       if(this.cs.validResponse(result)){
    //         res = JSON.parse(result.Mohemm_ITG_ResponseItem);
    //         console.log(res); 
    //         this.teckitInfo = res.result.data; 
        
    //       }
           
    //      }

    getTicketsByEmployee() {
      const request = {
        // TokenID:"xxx",
        EmployeeNumber: "",
        ItgPageSize: 10,
        ItgPageNo: 1
  
      };
      this.MowadhafiService.getTicketsByEmployee(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
        this.handlegetTicketsByEmployeeResult(result);
  
      })
    }
  
    handlegetTicketsByEmployeeResult(result){
      let x;
      if(this.cs.validResponse(result)){
        x = JSON.parse(result.Mohemm_ITG_ResponseItem);
        console.log(x); 
        this.teckitInfo=x.result.data;
        // for (let i = 0; i < this.ticketsInfo.length; i++) {
        //    console.log(i + ' : ' + this.ticketsInfo[i].ticketTypeName)
    
        // }
        console.log("getTicketsByEmployee()-------------------------------------------------------");
        console.log(this.teckitInfo);
        console.log("Type Id" + this.teckitInfo[0].ticketTypeId);
        
      }
    }


     getCreateTicket(){
      // const request = {
      //   // EmployeeNumber:"",
      //   // ticketTypeId:this.teckitInfo[0].ticketTypeId,
      //   // projectId:this.teckitInfo[0].projectId,
      //   // departmentId:this.teckitInfo[0].departmentId,
      //   // sectionId:this.teckitInfo[0].sectionId,
      //   // sectionTopicId:this.teckitInfo[0].topicId,
      //   // description:this.teckitInfo[0].description,
      //   //  fileColl:this.
      //   // employeeNumber:this.teckitInfo[0].employeeNumber,
      //   // ticketStatus:this.teckitInfo[0].ticketStatusName,
       
       
       
      //   // channelId:this.teckitInfo.channelId,
        
       
        
      // };
      var request = new FormData();
      request.append('EmployeeNumber',"" );

      request.append('ticketTypeId', this.teckitInfo[0].ticketTypeId );
      request.append('projectId',this.teckitInfo[0].projectId);
      request.append('departmentId',this.teckitInfo[0].departmentId );
      request.append('sectionId',this. teckitInfo[0].sectionId );
      request.append('sectionTopicId', this.teckitInfo[0].topicId );
      request.append('description',this.teckitInfo[0].description );
      request.append('fileColl',this.selectedFile[0],this.selectedFile[0].name );
      request.append('employeeNumber',this.teckitInfo[0].employeeNumber );
      request.append('ticketStatus',this.teckitInfo[0].ticketStatusName );
      
     
     //request.append('file', this.uploadForm.get('profile').value);
  
  
      
      this.MowadhafiService.getCreateTicket(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
       {   
        this.handlegetCreateTicketResult(result);  
              
         }) }
         handlegetCreateTicketResult(result){
         
           
         }





public cancelRequest() {
  this.cs.openMyRequestPage();
  // this.menu.toggle();
}


/*******************Add attchement Functions*************/
public uploader: FileUploader = new FileUploader({
  allowedMimeType: [
    "application/pdf",
    "image/jpeg",
    "image/png",
    "text/plain",
    "image/jpg",
    "application/vnd.ms-excel",
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  ],
  maxFileSize: 10 * 1024 * 1024,
  formatDataFunctionIsAsync: true,
  formatDataFunction: async item => {
    return new Promise((resolve, reject) => {
      resolve({
        name: item._file.name,
        length: item._file.size,
        contentType: item._file.type,
        date: new Date()
      });
    });
  }
});


onFileSelectedclick(event){
  //event.target.value = '';
  this.selectedFile = event;
}


onFileSelected(input) {
  if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
    let msg: string = "";
    msg = this.ts.trPK("general", "noFileSelect");
    this.cs.presentAlert(msg);
    return;
  } // todo: show alert that you tried uploading wrong files
  else {
    const file = input.target.files[0];

    // console.log(file);

    this.getBase64(file).then(data =>
      this.pushObject(data, file.name, file.type)
    );
  }
}


getBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
  });
}

pushObject(fileData, name, type) {
  // console.log("before push: "+ this.index);
  this.indexLastObj++;
  try {
    let array = name.split(".");
    let attachType: string = array[array.length - 1];

    this.addAttachRequest.push({
      AttachmentID: this.indexLastObj,
      P_FILE_CONTENT_TYPE: attachType, //type.split('/')[1],
      P_FILE_DATA: fileData.split(",")[1],
      P_FILE_NAME: name, //.split('.')[0],
      P_TRANSACTION_ID: this.TransactionID
    });
  } catch (e) {}
}

removeFile(objectitem) {
  let objIndex1 = this.uploader.queue.findIndex(item => item == objectitem);
  this.uploader.queue.splice(objIndex1, 1);
  let objIndex = this.addAttachRequest.findIndex(
    item => item.AttachmentID == objectitem.AttachmentID
  );
  this.addAttachRequest.splice(objIndex, 1);
}


submitRequest(){

}

}
