class SortRawJsonData {


    //---------------------------------------- sorting for Finance:-TlApproved Claims tab
    Finance_TLapproved() {
        return function (a, b) {
            //sortby 1)TL_APPROVED_DATE
          /*  if (new Date(a.tlApprovedDate).getTime() > new Date(b.tlApprovedDate).getTime()) { // tlApprovedDate is from Json
                return 1;
            } else if (new Date(a.tlApprovedDate).getTime() < new Date(b.tlApprovedDate).getTime()) {
                return -1;
            } else {*/



                //sortby 2)SITE_VISIT_DATE                                      //descending order
                if (new Date(a.date).getTime() > new Date(b.date).getTime()) { // date is from Json
                    return -1;
                } else if (new Date(a.date).getTime() < new Date(b.date).getTime()) {
                    return 1;
                } else {



                    //sortby 3)ENGINEER_EMP_ID
                    if (a.empId > b.empId) { // empId is from Json
                        return 1;
                    } else if (a.empId < b.empId) {
                        return -1;
                    }

                }

           // }
        }
    }
    //---------------------------------------- sorting for Finance:-TlApproved Claims tab

    Finance_Approved_Rejected_PaidClaims_tabs(claimStatus) {
        return function (a, b) {
            //sortby 1)FINANCE_APPROVED_DATE
              var KEY1, KEY2;
            switch (claimStatus) {
                case CLAIM_FINANCE_APPROVED:
                    KEY1 = a.financeApprovedDate;
                    KEY2 = b.financeApprovedDate;
                    break;

                case CLAIM_FINANCE_REJECTED:
                    KEY1 = a.tlOrFinanceRejectedDate;
                    KEY2 = b.tlOrFinanceRejectedDate;
                    break;
                case CLAIM_PAID:
                    KEY1 = a.paidDate;
                    KEY2 = b.paidDate;
                    break;
            }

            if (new Date(KEY1).getTime() > new Date(KEY2).getTime()) { //desecnding order
                return -1;
            } else if (new Date(KEY1).getTime() < new Date(KEY2).getTime()) {
                return 1;
            } else {
                //sortby 2)SITE_VISIT_DATE
                if (new Date(a.date).getTime() > new Date(b.date).getTime()) {
                    return 1;
                } else if (new Date(a.date).getTime() < new Date(b.date).getTime()) {
                    return -1;
                } else {
                    //sortby 3)EMP_ID
                    if (a.empId > b.empId) { // empId is from Json
                        return 1;
                    } else if (a.empId < b.empId) {
                        return -1;
                    }
                }

            }
        }

    }
        //---------------------------------------- sorting for TL:-TlApproved Rejected financeApproved Claims tab
    TL_Approved_Rejected_financeApprovedClaims_tabs(claimStatus) {
        return function (a, b) {
            //sortby 1)CLAIM_DATE
            var KEY1, KEY2;
            switch (claimStatus) {
                case CLAIM_TL_APPROVED:
                    KEY1 = a.tlApprovedDate;
                    KEY2 = b.tlApprovedDate;
                    break;

                case CLAIM_TL_REJECTED:
                    KEY1 = a.tlOrFinanceRejectedDate;
                    KEY2 = b.tlOrFinanceRejectedDate;
                    break;
                case CLAIM_FINANCE_APPROVED:
                    KEY1 = a.financeApprovedDate;
                    KEY2 = b.financeApprovedDate;
                    break;
            }

            if (new Date(KEY1).getTime() > new Date(KEY2).getTime()) {  //desending order
                return -1;
            } else if (new Date(KEY1).getTime() < new Date(KEY2).getTime()) {
                return 1;
            } else {
                //sortby 2)SITE_VISIT_DATE
                if (new Date(a.date).getTime() > new Date(b.date).getTime()) {
                    return 1;
                } else if (new Date(a.date).getTime() < new Date(b.date).getTime()) {
                    return -1;
                } else {
                    //sortby 3)EMP_ID
                    if (a.empId > b.empId) { // empId is from Json
                        return 1;
                    } else if (a.empId < b.empId) {
                        return -1;
                    }
                }

            }
        }

    }
  //---------------------------------------- sorting for TL:-New Claims tab

    TL_NewClaims() {
        return function (a, b) {
            //sortby 1)FINANCE_APPROVED_DATE
            // if (new Date(a.claimdate).getTime() > new Date(b.claimdate).getTime()) { //desecnding order
            //     return 1;
            // } else if (new Date(a.claimdate).getTime() < new Date(b.claimdate).getTime()) {
            //     return -1;
            // } else {
            
                //sortby 2)SITE_VISIT_DATE
                if (new Date(a.date).getTime() > new Date(b.date).getTime()) {
                    return -1;
                } else if (new Date(a.date).getTime() < new Date(b.date).getTime()) {
                    return 1;
                } else {
                    //sortby 3)EMP_ID
                    if (a.empId > b.empId) { // empId is from Json
                        return 1;
                    } else if (a.empId < b.empId) {
                        return -1;
                    }
                }

            //}
        }

    }
    getSortedRowData(jsonRawData, claimStatus) {
        var sortedJsonData;
        //console.log(jsonRawData);
        if (LOGGED_IN_DEPARTMENT == FINANCE_DEPARTMENT) {
            if (claimStatus == CLAIM_TL_APPROVED) {
                sortedJsonData = jsonRawData.sort(this.Finance_TLapproved());
            } else {
                sortedJsonData = jsonRawData.sort(this.Finance_Approved_Rejected_PaidClaims_tabs(claimStatus));
            }
        } else if (LOGGED_IN_DEPARTMENT == TL_DEPARTMENT) {
           // sortedJsonData = jsonRawData.sort(this.TL_AllTabs(claimStatus));
             if (claimStatus == CLAIM_PENDING) {
                sortedJsonData = jsonRawData.sort(this.TL_NewClaims());
            } else {
                sortedJsonData = jsonRawData.sort(this.TL_Approved_Rejected_financeApprovedClaims_tabs(claimStatus));
            }


        }

        return sortedJsonData;
    }
}



// ;;