import { DatePipe } from '@angular/common';
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { apiConf } from '@conf/api.conf';
import { NzImageService } from 'ng-zorro-antd/image';
import { NzModalService } from 'ng-zorro-antd/modal';
import { UsermanageService } from 'src/app/routes/usercenter/services/usercenter.service';
import { ImageViewComponent } from 'src/app/shared/components/imagelist';

@Component({
  selector: 'app-captain-detail',
  templateUrl: './captain-detail.component.html',
  styleUrls: ['./captain-detail.component.less'],
  providers: [DatePipe]
})
export class CaptainDetailComponent implements OnInit {
  userDetail: any;
  userIdentityDetail: any = {};
  tempalateUserIdentityDetail = { ...this.userIdentityDetail };
  bankList: any[] = [];

  @ViewChild('redectModal', { static: false })
  redectModal!: any;
  @ViewChild('rejectedDriverModal', { static: false })
  rejectedDriverModal!: any;
  approvalOpinion = '';

  isEditUser = false;

  uploadURl = apiConf.waterFileUpload;
  disabledUpload = false;
  constructor(
    private nzModalService: NzModalService,
    public service: UsermanageService,
    private route: ActivatedRoute,
    private datePipe: DatePipe,
    private nzImageService: NzImageService
  ) {}

  ngOnInit() {
    this.initData();
  }
  initData() {
    // 获取司机头部信息
    this.service
      .request(this.service.$api_get_user_detail, {
        appUserId: this.route.snapshot.params.id
      })
      .subscribe(res => {
        if (res) {
          this.userDetail = res;
        }
      });
    // 获取用户个人信息
    this.service
      .request(this.service.$api_get_user_identity, {
        id: this.route.snapshot.params.id
      })
      .subscribe(res => {
        if (res) {
          this.userIdentityDetail = res;
          this.tempalateUserIdentityDetail = { ...this.userIdentityDetail };
        }
      });
    // 获取用户银行信息
    this.service
      .request(this.service.$api_get_user_bank_list, {
        roleId: this.route.snapshot.params.id
      })
      .subscribe(res => {
        if (res) {
          this.bankList = res;
        }
      });
  }

  /** 启用/冻结司机 */
  userAction(status: number) {
    this.nzModalService.warning({
      nzTitle: status === 1 ? '确定启用该司机吗？' : '确定冻结该司机吗？',
      nzContent: status === 1 ? '启用后，该司机将恢复正常使用功能，请再次确认！' : '冻结后，司机将被限制使用，无法登陆，请谨慎操作！',
      nzOnOk: () => {
        this.service
          .request(this.service.$api_lock_or_free_user, {
            appUserId: [this.userDetail.appUserId],
            freezeOrResume: !!!status,
            pageName: '司机详情',
            telephone: this.userDetail.phone
          })
          .subscribe(res => {
            if (res) {
              this.service.msgSrv.success('操作成功');
            }
            this.initData();
          });
      }
    });
  }

  /** 审核通过个人信息 */
  approveUser() {
    this.nzModalService.confirm({
      nzTitle: '审核通过',
      nzContent: `是否确认通过(姓名:${this.userIdentityDetail.name})审核`,
      nzOnOk: () => {
        this.adjuctUser({ auditStatus: 0, auditType: 0, identityId: this.userIdentityDetail?.id }, '审核通过');
      }
    });
  }

  /** 驳回个人信息 */
  rejectedUser() {
    this.approvalOpinion = '';
    this.nzModalService.create({
      nzTitle: '审核驳回',
      nzContent: this.redectModal,
      nzOnOk: () => {
        if (!this.approvalOpinion) {
          return false;
        }
        this.adjuctUser(
          {
            auditStatus: 1,
            auditType: 0,
            identityId: this.userIdentityDetail?.id,
            certificationOpinions: this.approvalOpinion
          },
          '审核驳回成功'
        );
        return;
      }
    });
  }

  /** 个人信息审核 */
  private adjuctUser(params: any, msg: string) {
    this.service.request(this.service.$api_approve_identity, { ...params }).subscribe(res => {
      if (res) {
        this.service.msgSrv.success(msg);
      }
      this.initData();
    });
  }

  /**
   * 开启修改
   */
  ratify() {
    this.isEditUser = true;
  }

  /**
   * 需求修改
   */
  reset() {
    this.userIdentityDetail = { ...this.tempalateUserIdentityDetail };
    this.isEditUser = false;
  }

  saveUser() {
    const userIdentity = this.userIdentityDetail;
    const params = {
      certificateNumber: userIdentity.certificateNumber,
      certificatePhotoBack: userIdentity.certificatePhotoBack,
      certificatePhotoBackWatermark: userIdentity.certificatePhotoBackWatermark,
      certificatePhotoFront: userIdentity.certificatePhotoFront,
      certificatePhotoFrontWatermark: userIdentity.certificatePhotoFrontWatermark,
      certificateType: userIdentity.certificateType,
      handCertificate: userIdentity.handCertificate,
      id: userIdentity.id,
      name: userIdentity.name,
      souceType: userIdentity.souceType,
      sourceAppId: userIdentity.sourceAppId,
      tenantId: userIdentity.tenantId,
      userId: userIdentity.userId,
      validEndTime:
        userIdentity.validEndTime?.length === 10
          ? userIdentity.validEndTime
          : this.datePipe.transform(userIdentity.validEndTime, 'yyyy-MM-dd'),
      validStartTime:
        userIdentity.validStartTime?.length === 10
          ? userIdentity.validStartTime
          : this.datePipe.transform(userIdentity.validStartTime, 'yyyy-MM-dd')
    };
    this.service.request(this.service.$api_update_driver_identity, params).subscribe(res => {
      if (res) {
        this.service.msgSrv.success('修改成功');
        this.isEditUser = false;
        this.initData();
      }
    });
  }

  changeUpload({ file, fileList, type }: any, data: any, key: string, key2: string) {
    if (type === 'success') {
      data[key] = file.response.data?.fullFileWatermarkPath;
      data[key2] = file.response.data?.fullFilePath;
    }
  }

  showImg(url: any) {
    const params = {
      imgList: [url],
      index: 0
    };
    this.nzImageService.preview([{ src: url }]);
    // this.nzModalService.create({ nzContent: ImageViewComponent, nzComponentParams: { params } });
  }

  deleteImg(data: any, key: string, key2: string) {
    this.nzModalService.warning({
      nzTitle: '是否确认删除该图片',
      nzOnOk: () => {
        this.disabledUpload = true;
        data[key] = '';
        data[key2] = '';
        setTimeout(() => {
          this.disabledUpload = false;
        }, 100);
      }
    });
  }

  goBack() {
    window.history.go(-1);
  }
}
