Medikal Rezervasyon Kartı

Rezervasyon Kartı

// admin değilse mini de Ön Folyo Tabi kapansın
// angus.permissionService.isIncludedInPackage(['midi','mini']) buna göre kontrol edecektim ama her zaman true verdiği için kullanmadım
if (angus.api.adminLevel < 99) {
  if (angus.api.tenant.PACKAGENAME === 'Mini') {
    document.querySelector(
      'div.group.ang-group-groupFolioRouting'
    ).style.display = 'none';
    //document.querySelector('div.group.ang-group-groupFolioPackages').style.display = 'none';
    document.querySelector('div.group.ang-group-groupTask').style.display =
      'none';
    this.recordService.children.defaultPanel1.component.tabGroupService.children[2].componentRef.instance.hide = true;
    this.recordService.children.defaultPanel1.component.updateTabs();
  }
}

(() => {
  this.allFormControls.RESSTATEID.valueChanges
    .pipe(
      rxjs.startWith(this.allFormControls.RESSTATEID.value),
      rxjs.debounceTime(250)
    )
    .subscribe((state) => {
      try {
        const header = this.querySelector('.record-header');
        let indicator = header.querySelector('mat-icon');
        if (!indicator) {
          indicator = document.createElement('mat-icon');
          indicator.className = 'mat-icon material-icons mat-icon-no-color';
          header.prepend(indicator);
        }
        if (state === 1) {
          indicator.innerText = 'timelapse';
          indicator.style.color = '#FFAB40'; // sarı
        } else if (state === 2) {
          indicator.innerText = 'flight_land';
          indicator.style.color = '#F06292'; // pembe
        } else if (state === 3) {
          indicator.innerText = 'house';
          indicator.style.color = '#43A047'; // yeşil
        } else if (state === 4) {
          indicator.innerText = 'flight_takeoff';
          indicator.style.color = '#F4511E'; // turuncu
        } else if (state === 5) {
          indicator.innerText = 'visibility_off';
          indicator.style.color = '#1E88E5'; // mavi
        } else if (state === 6) {
          indicator.innerText = 'cancel';
          indicator.style.color = '#FF1744'; // kırmızı
        } else if (state === 7) {
          indicator.innerText = 'delete';
          indicator.style.color = '#757575'; // gri
        } else {
          indicator.innerText = 'people';
          indicator.style.color = '#8E24AA'; // mor
        }
      } catch (e) {
        console.error(e);
      }
    });
})();

(() => {
  // TOLGA 2021-04-14
  // LOS değişince CHECKOUT değişecek
  // CHECKOUT değişince LOS değişecek
  // CHECKIN değişince CHECKOUT değişecek
  const {
    startWith,
    tap,
    combineLatest,
    debounceTime,
    map,
    filter,
    takeUntil,
  } = rxjs;
  const formControls = this.allFormControls;
  const changes = {
    LOS: false,
    CHECKOUT: false,
    CHECKIN: false,
  };
  const losChanges = formControls.LOS.valueChanges.pipe(
    startWith(formControls.LOS.value),
    tap(() => (changes.LOS = true))
  );
  const coutChanges = formControls.CHECKOUT.valueChanges.pipe(
    startWith(formControls.CHECKOUT.value),
    tap(() => (changes.CHECKOUT = true))
  );
  const cinChanges = formControls.CHECKIN.valueChanges.pipe(
    startWith(formControls.CHECKIN.value),
    tap(() => (changes.CHECKIN = true))
  );
  combineLatest([losChanges, coutChanges, cinChanges])
    .pipe(
      debounceTime(0),
      map(([LOS, CHECKOUT, CHECKIN]) => {
        const ret = {
          changes: Object.keys(changes).filter((key) => changes[key]),
          values: {
            LOS: LOS != null && LOS !== '' ? +LOS : null,
            CHECKOUT: moment(CHECKOUT),
            CHECKIN: moment(CHECKIN),
          },
        };
        // reset changes
        Object.keys(changes).forEach((key) => (changes[key] = false));
        return ret;
      }),
      filter((changeObj) => {
        return (
          changeObj.changes.length === 1 &&
          changeObj.values.CHECKOUT.isValid() &&
          changeObj.values.CHECKIN.isValid() &&
          typeof changeObj.values.LOS === 'number'
          // changeObj.values.LOS != null &&
          // changeObj.values.LOS >= 0
        );
      }),
      tap((changeObj) => {
        const cinDay = changeObj.values.CHECKIN.clone().startOf('day');
        const coutDay = changeObj.values.CHECKOUT.clone().startOf('day');
        const dynamicLOS = coutDay.diff(cinDay, 'days', false);
        if (
          changeObj.changes[0] === 'LOS' ||
          changeObj.changes[0] === 'CHECKIN'
        ) {
          // LOS veya CHECKIN değişirse, CHECKOUT değişecek.
          changeObj.values.CHECKOUT.add(
            changeObj.values.LOS - dynamicLOS,
            'days'
          );
        } else if (changeObj.changes[0] === 'CHECKOUT') {
          // CHECKOUT değişirse, LOS değişecek.
          changeObj.values.LOS = dynamicLOS;
        }
        formControls.CHECKOUT.setValue(
          changeObj.values.CHECKOUT.format('YYYY-MM-DD HH:mm:ss.SSS')
        );
        formControls.CHECKIN.setValue(
          changeObj.values.CHECKIN.format('YYYY-MM-DD HH:mm:ss.SSS')
        );
        formControls.LOS.setValue(changeObj.values.LOS);
      }),
      takeUntil(this.isDestroy$)
    )
    .subscribe();
})();

const awaitIf = async (fn, ms = 100) => {
  await new Promise(async (resolve, reject) => {
    let result = false;
    try {
      result = fn();
    } catch (e) {
      console.error(e);
    }

    if (result) {
      resolve(true);
    } else {
      await rxjs.timer(ms).toPromise();
      resolve(await awaitIf(fn));
    }
  });
};

this.recordService.formGroup.controls.ROOMCOUNTTYPE.valueChanges
  .pipe(rxjs.debounceTime(300), rxjs.distinctUntilChanged())
  .subscribe(async (v) => {
    await rxjs.timer(0).toPromise();
    if (!this.recordService.formGroup.controls.ROOMCOUNTTYPE.touched) {
      if (v === 4) {
        this.recordService.formGroup.controls.ROOMID_ROOMNO.disable();
        this.recordService.elements.selectRoom.api.innerComponent.disabled = true;
      } else {
        this.recordService.formGroup.controls.ROOMID_ROOMNO.enable();
        this.recordService.elements.selectRoom.api.innerComponent.disabled = false;
      }
      return;
    }
    if (v === 4 && this.recordService.formGroup.controls.ROOMID.value != null) {
      let roomCountTypeMSG = angus.languageService.dynamicTranslator.translate(
        'Delete the room number?'
      );
      const msg = await this.angusDialog.confirm(roomCountTypeMSG).toPromise();
      if (msg) {
        this.recordService.formGroup.controls.ROOMID_ROOMNO.disable();
        this.recordService.elements.selectRoom.api.innerComponent.disabled = true;
        this.recordService.formGroup.controls.ROOMID_ROOMNO.setValue(null);
        this.recordService.formGroup.controls.ROOMID_ROOMNO.markAsDirty();
        this.recordService.formGroup.controls.ROOMID.setValue(null);
        this.recordService.formGroup.controls.ROOMID.markAsDirty();
      }
    } else {
      this.recordService.formGroup.controls.ROOMID_ROOMNO.enable();
      this.recordService.elements.selectRoom.api.innerComponent.disabled = false;
    }

    if (this.recordService.formGroup.controls.ROOMCOUNTTYPE.value === 6) {
      let roomPriceMSG = angus.languageService.dynamicTranslator.translate(
        'Do you want to RESET the Room Rate ?'
      );
      const msg = await this.angusDialog.confirm(roomPriceMSG).toPromise();
      if (msg) {
        this.recordService.formGroup.controls.MANUELRATEENABLED.setValue(true);
        this.recordService.formGroup.controls.DISCOUNTSACTIVE.setValue(false);
        this.recordService.formGroup.controls.MANUELRATE.setValue(0);
        this.recordService.formGroup.controls.ROOMID_ROOMNO.setValue(null);
        this.recordService.formGroup.controls.ROOMID_ROOMNO.markAsDirty();
        this.recordService.formGroup.controls.ROOMID.setValue(null);
        this.recordService.formGroup.controls.ROOMID.markAsDirty();
        this.recordService.elements.resday.api.innerComponent.onClick();
      }
    }
  });
//MEHMETB 31/08/2020

// 2020-07-03 Tolga
// Admin değilse, 5. sekmeye geçilebilmesini engeller. (Dinamik Folyo)
(async () => {
  while (true) {
    if (this.recordService.component.isDestroy$.isStopped) {
      break;
    }
    const fifthTab = document.querySelector(
      '.ang-record-res-all-card .ang-tab-groupdefaultPanel1 .mat-tab-label:nth-child(5)'
    );
    if (fifthTab) {
      if (angus.api.adminLevel < 99) {
        fifthTab.style.display = 'none';
      }
      break;
    } else {
      await rxjs.timer(0).toPromise();
    }
  }
})();
// 2020-07-03

// MEHMETB / 16-06-2020 / manuel fiyat aktif alnı rol yetkisi
const c1 = this.allFormControls['MANUELRATE'];

this.allFormControls.MANUELRATEENABLED.valueChanges
  .pipe(rxjs.startWith(this.allFormControls.MANUELRATEENABLED.value))
  .subscribe((v) => {
    if (
      angus.permissionService.isAuthorized([
        'HotelOwner',
        'Front Desk Full',
        'Front Desk',
        'Contract Management Full',
        'Administrator',
        'Reservation Full',
      ]) &&
      v
    ) {
      c1.enable();
    } else {
      c1.disable();
    }
  });

// 16-06-2020

//13/03/2020-Mehmet VoucherNo kontrol Başlangıç
let voucherBulCallBack = (voucherNo) => {
  let id = this.allFormControls['ID'].value;
  if (!voucherNo || id > 0) {
    return;
  }

  this.recordService.component.api
    .select({
      Object: 'HOTEL_RES',
      Select: ['ID', 'VOUCHERNO'],
      Where: [
        {
          Column: 'VOUCHERNO',
          Operator: '=',
          Value: voucherNo,
        },
        {
          Column: 'RESSTATEID',
          Operator: '<',
          Value: 4,
        },
        {
          Column: 'ID',
          Operator: '<>',
          Value: id,
        },
      ],
      Paging: {
        ItemsPerPage: 1,
        Current: 1,
      },
    })
    .then((response) => {
      if (response.ResultSets[0].length > 0) {
        let resID = response.ResultSets[0][0].ID;
        if (+this.allFormControls['ID'].value === +resID) {
          return;
        }
        let msg = angus.languageService.dynamicTranslator.translate(
          'Voucher No {{' +
            voucherNo +
            '}} Used before in Res ID : {{' +
            resID +
            '}}'
        );
        this.angusDialog.alert(msg);
      }
    });
};
this.allFormControls['VOUCHERNO'].valueChanges
  .pipe(rxjs.debounceTime(500), rxjs.distinctUntilChanged())
  .subscribe(voucherBulCallBack.bind(this));
//Voucherno Bitiş
const getFc = (x) => this.recordService.formGroup.controls[x];
rxjs
  .combineLatest(
    getFc('AGEINTERVAL3').valueChanges.pipe(
      rxjs.startWith(getFc('AGEINTERVAL3').value)
    ),
    getFc('AGEINTERVAL2').valueChanges.pipe(
      rxjs.startWith(getFc('AGEINTERVAL2').value)
    ),
    getFc('AGEINTERVAL1').valueChanges.pipe(
      rxjs.startWith(getFc('AGEINTERVAL1').value)
    )
  )
  .pipe(rxjs.debounceTime(200))
  .subscribe(([chd1, chd2, baby]) => {
    const chd1Label = document
      .querySelector('.ang-field-CHD1')
      .querySelector('mat-label');
    const chd2Label = document
      .querySelector('.ang-field-CHD2')
      .querySelector('mat-label');
    const babyLabel = document
      .querySelector('.ang-field-BABY')
      .querySelector('mat-label');

    let chd1Text = angus.languageService.staticTranslator.translate('Child1');
    let chd2Text = angus.languageService.staticTranslator.translate('Child2');
    let babyText = angus.languageService.staticTranslator.translate('Baby');

    chd1Label.innerHTML = chd2 + '-' + chd1 || chd1Text;
    chd2Label.innerHTML = baby + '-' + chd2 || chd2Text;
    babyLabel.innerHTML = 0 + '-' + baby || babyText;
  });

rxjs
  .combineLatest(
    getFc('AGENCYID_AGENCYCODE').valueChanges.pipe(
      rxjs.startWith(getFc('AGENCYID_AGENCYCODE').value)
    ),
    getFc('ISAGENCY').valueChanges.pipe(
      rxjs.startWith(getFc('ISAGENCY').value)
    ),
    getFc('ISCOMPANY').valueChanges.pipe(
      rxjs.startWith(getFc('ISCOMPANY').value)
    )
  )
  .subscribe(([v, agen, comp]) => {
    const el = document
      .querySelector('.ang-field-AGENCYID_AGENCYCODE')
      .querySelector('mat-label');
    let text = '';
    const wrapper = (x) => `<span style="color:red;">${x}</span>`;

    let agency = angus.languageService.staticTranslator.translate('Agency');
    let company = angus.languageService.staticTranslator.translate('Company');
    let indi = angus.languageService.staticTranslator.translate('Individual');

    text += agen ? wrapper(agency) : agency;
    text += ' / ';
    text += comp ? wrapper(company) : company;
    text += ' / ';
    text += v && !agen && !comp ? wrapper(indi) : indi;

    el.innerHTML = text;
  });

/*
  307985 nolu talep (Ödeyen Guest ise folyo mutlaka hepsi seçeneği ile, Acenta ise sadece extra penceresi ile açılmalı.)
  04.12.2019
  Haydar
*/
try {
  this.recordService.children.defaultPanel1.component.tabGroup.selectedIndexChange.subscribe(
    (index) => {
      if (index == 2) {
        this.allGrids['medical-screen-folio'].grid.activateTab(
          this.allFormControls['PAIDBY'].value == 0 ? 1 : 0
        );
      }
    }
  );
} catch (e) {
  console.error(e);
}

/*
  START
  31.08.2019 Tolga
  Gizli olan Check-In Butonunu duruma göre açma
*/
(() => {
  // Buton, G0 grubu içerisinde, G0 tanımında da display: none; stili var.
  // Grubu görünür hale getirince, buton da göz��kecek.
  const __resRecordHideCheckInBtn = () => {
    try {
      document.querySelector('div.group.ang-group-G0').style.display = 'none';
    } catch (e) {}
  };

  const __resRecordShowCheckInBtn = () => {
    try {
      document.querySelector('div.group.ang-group-G0').style.display = 'block';
    } catch (e) {}
  };

  // Buton durumu kontrol fonksiyonu
  const __resRecordCheckInButtonCheckState = () => {
    // id yoksa, buton kapalı olacak
    const id = this.recordService.formGroup.controls['ID'].value;
    if (!id) {
      __resRecordHideCheckInBtn();
      return;
    }
    // resstateid 2 değilse (rezervasyon) buton kapalı olacak
    const resstateid = this.recordService.formGroup.controls['RESSTATEID']
      .value;
    if (resstateid !== 2) {
      __resRecordHideCheckInBtn();
      return;
    }
    // checkin ve progdate'in tarih kısımları farklı ise, buton kapalı olacak
    const checkinDate = moment(
      this.recordService.formGroup.controls['CHECKIN'].value
    ).startOf('day');
    const progdate = moment(
      this.recordService.component.api.tenant.PROGDATE
    ).startOf('day');
    if (!checkinDate.isSame(progdate)) {
      __resRecordHideCheckInBtn();
      return;
    }

    // Folyo tipi no show ise buton kapalı olacak.
    const roomCountType = this.recordService.formGroup.controls['ROOMCOUNTTYPE']
      .value;
    if (roomCountType === 4) {
      __resRecordHideCheckInBtn();
      return;
    }

    // Program tarihindeki bir rezervasyonsa, buton açık olacak
    console.warn(
      'Activating Check-In Button (id, resstateid, checkinDate, progdate)',
      id,
      resstateid,
      checkinDate,
      progdate
    );
    __resRecordShowCheckInBtn();
  };

  // Bunlardan herhangi biri değişirse, tekrar kontrol et butonun durumunu
  this.recordService.formGroup.controls['ID'].valueChanges.subscribe((cid) => {
    __resRecordCheckInButtonCheckState();
  });
  this.recordService.formGroup.controls['RESSTATEID'].valueChanges.subscribe(
    (state) => {
      __resRecordCheckInButtonCheckState();
    }
  );
  this.recordService.formGroup.controls['CHECKIN'].valueChanges.subscribe(
    (state) => {
      __resRecordCheckInButtonCheckState();
    }
  );
  // buton durumunu kontrol et
  __resRecordCheckInButtonCheckState();
})();
/*
  31.08.2019 Tolga
  END
*/

/*
  START
  13.09.2019 Mahmut
  Gizli olan Check-Out Butonunu duruma göre açma
*/
(() => {
  // Buton, G00 grubu içerisinde, G00 tanımında da display: none; stili var.
  // Grubu görünür hale getirince, buton da gözükecek.
  const __resRecordHideCheckOutBtn = () => {
    try {
      document.querySelector('div.group.ang-group-G00').style.display = 'none';
    } catch (e) {}
  };

  const __resRecordShowCheckOutBtn = () => {
    try {
      document.querySelector('div.group.ang-group-G00').style.display = 'block';
    } catch (e) {}
  };

  // Buton durumu kontrol fonksiyonu
  const __resRecordCheckOutButtonCheckState = () => {
    // id yoksa, buton kapalı olacak
    const id = this.recordService.formGroup.controls['ID'].value;
    if (!id) {
      __resRecordHideCheckOutBtn();
      return;
    }
    // resstateid 3 değilse (rezervasyon) buton kapalı olacak
    const resstateid = this.recordService.formGroup.controls['RESSTATEID']
      .value;
    if (resstateid !== 3) {
      __resRecordHideCheckOutBtn();
      return;
    }
    // checkin ve progdate'in tarih kısımları farklı ise, buton kapalı olacak
    const checkoutDate = moment(
      this.recordService.formGroup.controls['CHECKOUT'].value
    ).startOf('day');
    const progdate = moment(
      this.recordService.component.api.tenant.PROGDATE
    ).startOf('day');
    if (!checkoutDate.isSame(progdate)) {
      __resRecordHideCheckOutBtn();
      return;
    }
    // Program tarihindeki bir rezervasyonsa, buton açık olacak
    console.warn(
      'Activating Check-Out Button (id, resstateid, checkoutDate, progdate)',
      id,
      resstateid,
      checkoutDate,
      progdate
    );
    __resRecordShowCheckOutBtn();
  };

  // Bunlardan herhangi biri değişirse, tekrar kontrol et butonun durumunu
  this.recordService.formGroup.controls['ID'].valueChanges.subscribe((cid) => {
    __resRecordCheckOutButtonCheckState();
  });
  this.recordService.formGroup.controls['RESSTATEID'].valueChanges.subscribe(
    (state) => {
      __resRecordCheckOutButtonCheckState();
    }
  );
  this.recordService.formGroup.controls['CHECKOUT'].valueChanges.subscribe(
    (state) => {
      __resRecordCheckOutButtonCheckState();
    }
  );
  // buton durumunu kontrol et
  __resRecordCheckOutButtonCheckState();
})();
/*
  13.09.2019 Mahmut
  END
*/

let that = this;
if (!this.isDestroy$.isStopped) {
  window.record = that;
  this.isDestroy$
    .pipe(rxjs.take(1))
    .subscribe(() => (window.record = undefined));
}

console.log(that);
that.allFormControls.ROOMTYPEID_ROOMTYPECODE.valueChanges.subscribe({
  next(x) {
    console.log(x);
    that.allFormControls.GIVENROOMTYPEID_ROOMTYPECODE.setValue(
      that.allFormControls.ROOMTYPEID_ROOMTYPECODE.value
    );
  },
  error(err) {
    console.log('TA error :', err);
  },
});

that.allFormControls.ROOMTYPEID.valueChanges.subscribe({
  next(x) {
    that.allFormControls.GIVENROOMTYPEID.setValue(
      that.allFormControls.ROOMTYPEID.value
    );
  },
  error(err) {
    console.log('TA error :', err);
  },
});

setTimeout(() => {
  try {
    if (SalesProjectsRecord && !that.allFormControls.ID.value) {
      if (SalesProjectsRecord.allFormControls.STARTDATE.value)
        that.allFormControls.CHECKIN.setValue(
          SalesProjectsRecord.allFormControls.STARTDATE.value
        );
      if (SalesProjectsRecord.allFormControls.ENDDATE.value) {
        that.allFormControls.CHECKOUT.setValue(
          SalesProjectsRecord.allFormControls.ENDDATE.value
        );
      }

      if (SalesProjectsRecord.allFormControls.AGENCYID.value) {
        let req = {
          Object: 'AGENCY',
          Select: [
            'AGENCYCODE',
            'ID',
            'CHANNELCOMMISSIONPERCENT',
            'BOARDID',
            'BOARDID_BOARDTYPE',
            'MARKETID',
            'MARKETID_MARKET',
            'SOURCEID',
            'SOURCEID_SOURCE',
            'RATECODEID',
            'RATECODEID_RATECODE',
            'RATETYPEID',
            'RATETYPEID_CODE',
            'DEFAULTROOMTYPEID',
            'DEFAULTROOMTYPEID_ROOMTYPECODE',
            'DEFAULTCURRENCYID',
            'DEFAULTCURRENCYID_CODE3',
            'DEFAULTCOUNTRYID',
            'DEFAULTCOUNTRYID_NAME',
          ],
          Where: [
            {
              Column: 'ID',
              Operator: '=',
              Value: SalesProjectsRecord.allFormControls.AGENCYID.value,
            },
            { Column: 'ISDELETED', Operator: '=', Value: 0, IsNull: 0 },
            { Column: 'ISDISABLED', Operator: '=', Value: 0, IsNull: 0 },
          ],
          Joins: [
            {
              Object: 'COUNTRY',
              Key: 'ID',
              Fields: ['NAME'],
              Field: 'DEFAULTCOUNTRYID',
            },
            {
              Object: 'STDCURCODE',
              Key: 'ID',
              Fields: ['CODE3'],
              Field: 'DEFAULTCURRENCYID',
            },
            {
              Object: 'HOTEL_ROOMTYPE',
              Key: 'ID',
              Fields: ['ROOMTYPECODE'],
              Field: 'DEFAULTROOMTYPEID',
            },
            {
              Object: 'HOTEL_BOARDTYPE',
              Key: 'ID',
              Fields: ['BOARDTYPE'],
              Field: 'BOARDID',
            },
            {
              Object: 'HOTEL_MARKET',
              Key: 'ID',
              Fields: ['MARKET'],
              Field: 'MARKETID',
            },
            {
              Object: 'HOTEL_SOURCE',
              Key: 'ID',
              Fields: ['SOURCE'],
              Field: 'SOURCEID',
            },
            {
              Object: 'HOTEL_RATECODE',
              Key: 'ID',
              Fields: ['RATECODE'],
              Field: 'RATECODEID',
            },
            {
              Object: 'HOTEL_RATETYPE',
              Key: 'ID',
              Fields: ['CODE'],
              Field: 'RATETYPEID',
            },
          ],
        };
        that.api.select(req).then((resp) => {
          let d = resp.ResultSets[0][0];
          console.log(d);
          that.allFormControls.AGENCYID_AGENCYCODE.setValue(d.AGENCYCODE);
          that.allFormControls.BOARDTYPEID.setValue(d.BOARDID);
          that.allFormControls.BOARDTYPEID_BOARDTYPE.setValue(
            d.BOARDID_BOARDTYPE
          );
          that.allFormControls.MARKETID.setValue(d.MARKETID);
          that.allFormControls.MARKETID_MARKET.setValue(d.MARKETID_MARKET);
          that.allFormControls.SOURCEID.setValue(d.SOURCEID);
          that.allFormControls.SOURCEID_SOURCE.setValue(d.SOURCEID_SOURCE);
          that.allFormControls.RATECODEID.setValue(d.RATECODEID);
          that.allFormControls.RATECODEID_RATECODE.setValue(
            d.RATECODEID_RATECODE
          );
          that.allFormControls.RATETYPEID.setValue(d.RATETYPEID);
          that.allFormControls.RATETYPEID_CODE.setValue(d.RATETYPEID_CODE);
          that.allFormControls.ROOMTYPEID.setValue(d.DEFAULTROOMTYPEID);
          that.allFormControls.ROOMTYPEID_ROOMTYPECODE.setValue(
            d.DEFAULTROOMTYPEID_ROOMTYPECODE
          );
          that.allFormControls.CURRENCYID.setValue(d.DEFAULTCURRENCYID);
          that.allFormControls.CURRENCYID_CURCODE.setValue(
            d.DEFAULTCURRENCYID_CODE3
          );
          that.allFormControls.NATIONALITY.setValue(d.DEFAULTCOUNTRYID);
          that.allFormControls.NATIONALITY_NAME.setValue(
            d.DEFAULTCOUNTRYID_NAME
          );
          that.allFormControls.AGENCY_COMMISSION_PERCENT.setValue(
            d.CHANNELCOMMISSIONPERCENT
          );
        });
      }
    }
  } catch (e) {
    console.log('Script Error!!');
  }
}, 1000);
let validateTC = function (v) {
  if (v == '11111111111') return true;
  let tc = v
    .toString()
    .split('')
    .map((n) => {
      return parseInt(n);
    });
  let d10 =
    ((tc[0] + tc[2] + tc[4] + tc[6] + tc[8]) * 7 -
      (tc[1] + tc[3] + tc[5] + tc[7])) %
    10;
  return (
    tc[9] == d10 &&
    tc[10] ==
      (tc[1] +
        tc[3] +
        tc[5] +
        tc[7] +
        tc[0] +
        tc[2] +
        tc[4] +
        tc[6] +
        tc[8] +
        d10) %
        10
  );
};
setTimeout(async () => {
  await awaitIf(() => that.allGrids?.medical-resname?.grid?.agGrid);
  let guestGrid = that.allGrids.medical-resname.grid.agGrid;
  guestGrid.cellEditingStopped.subscribe((d) => {
    console.log('edit stopped', d);
    if (d.column.colId == 'NATIONALIDNO') {
      if (d.value !== '' && !validateTC(d.value)) {
        angus.api.angusDialog.alert(
          '(' +
            d.value +
            ') ' +
            that.languageService.dynamicTranslator.translate(
              'is not valid! Please enter a valid ID number!'
            )
        );
        Object.values(guestGrid.api.rowModel.selectionController.selectedNodes)
          .filter((r) => {
            return r !== undefined;
          })[0]
          .setDataValue('NATIONALIDNO', '');
      }
    }
  });
}, 0);

let createFixNotes = async () => {
  await rxjs.timer(1000).toPromise();
  if (this.mode.value === 'insert') {
    let fixNotes = await this.api.func({ Object: 'FN_RESFIXNOTE' }).toPromise();
    this.allGrids['medical-note'].api.setRowData(fixNotes[0]);
    this.allGrids['medical-note'].grid.gridShareds.onRowLoad.next(true);
    this.allGrids['medical-note'].grid.isGridDataLoaded = true;
  }
};
createFixNotes();

//kimlik/pasaport okuyarak eklemek/güncellemek için MBASAL 04/05/2021

this._scan = (insertGrid, add = true) => {
  angus.popupFormService.scanner().subscribe((response) => {
    if (!response) {
      return;
    }

    let val = response.src;

    const loading = angus.loadingService.showLoadingOverlay();
    angus.api.kimlikokur(val).subscribe((data) => {
      if (Object.keys(data).length == 0) {
        loading.destroy();
        let msg3 = `No valid data.`;
        msg3 = angus.languageService.dynamicTranslator.translate(msg3);
        return;
      }
      let node;

      if (!add) {
        node = insertGrid.agGrid.api.getSelectedNodes()[0];
      } else {
        node = insertGrid.addNewRow();
      }
      console.clear();
      console.log(data);

      insertGrid.changeCellValue(node, 'NAME', data.firstName);
      insertGrid.changeCellValue(node, 'LNAME', data.lastName);
      if (data.birthDate) {
        insertGrid.changeCellValue(
          node,
          'BIRTHDATE',
          moment(moment(data.birthDate, 'YYMMDD').toDate()).format('YYYY-MM-DD')
        );
      }
      if (data.expirationDate) {
        insertGrid.changeCellValue(
          node,
          'IDEXPIREDATE',
          moment(moment(data.expirationDate, 'YYMMDD').toDate()).format(
            'YYYY-MM-DD'
          )
        );
      }
      if (data.sex == 'female') {
        insertGrid.changeCellValue(node, 'GENDER', '1');
      } else {
        insertGrid.changeCellValue(node, 'GENDER', '0');
      }
      //IDTYPE alanı misafir kartında var res_name de olmadığı için göndermedim.
      if (data.documentCode == 'ID' || data.documentCode == 'I') {
        insertGrid.changeCellValue(node, 'NATIONALIDNO', data.optional1.trim());
      } else if (data.documentCode == 'P') {
        insertGrid.changeCellValue(
          node,
          'PASSPORTNO',
          data.personalNumber.trim()
        );
      }

      if (data.nationality) {
        (async () => {
          const id = angus.api
            .select({
              Object: 'COUNTRY',
              Select: ['ID', 'NAME', 'CODE3'],
              Where: [
                {
                  Column: 'CODE3',
                  Operator: '=',
                  Value: data.nationality,
                },
              ],
              Paging: {
                ItemsPerPage: 1,
                Current: 1,
              },
            })
            .then((response) => {
              insertGrid.changeCellValue(
                node,
                'NATIONALITYID',
                response.ResultSets[0][0].ID
              );

              if (!this.recordService.formGroup.controls.NATIONALITY.value) {
                this.recordService.formGroup.controls.NATIONALITY.setValue(
                  response.ResultSets[0][0].ID
                );
              }

              insertGrid.changeCellValue(
                node,
                'NATIONALITYID_NAME',
                response.ResultSets[0][0].NAME
              );
              if (
                !this.recordService.formGroup.controls.NATIONALITY_NAME.value
              ) {
                this.recordService.formGroup.controls.NATIONALITY_NAME.setValue(
                  response.ResultSets[0][0].NAME
                );
              }
            });
        })();
      }

      node.setData(node.data);

      loading.destroy();
    });
  });
};

Last updated