com.etak.csrTestFirefox.steps.DashboardSteps.java Source code

Java tutorial

Introduction

Here is the source code for com.etak.csrTestFirefox.steps.DashboardSteps.java

Source

package com.etak.csrTestFirefox.steps;

import com.etak.csrTestFirefox.pages.DashboardPage;
import com.etak.csrTestFirefox.pages.HomePage;
import com.etak.csrTestFirefox.util.*;
import net.thucydides.core.annotations.Step;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

/**
 * Created by sekarayu on 22/09/2015.
 */
public class DashboardSteps {
    private DashboardPage dashboardPage;
    private HomePage homePage;
    private DBConnection dbConnection = new DBConnection();
    private CountryISO countryISO = new CountryISO();
    private CSRutil csRutil = new CSRutil();
    private CommonProduct commonProduct = new CommonProduct();
    private CommonTT commonTT = new CommonTT();

    Logger logger = Logger.getLogger("info");

    //set db connection
    private void setConnect() {
        try {
            dbConnection.DBConn2();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //close db connection
    private void closeConnection() {
        try {
            dbConnection.stmt.close();
            dbConnection.conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Step
    public void searchMsisdn(String msisdn) {
        homePage.searchBox.typeAndEnter(msisdn);
    }

    //for header, add blank before and after
    @Step
    public void searchMsisdnBlank(String msisdn) {
        homePage.searchBox.typeAndEnter(" " + msisdn + " ");
    }

    @Step
    public void waitDashLoad() {
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    //get cust id from page
    public String getcustid() {
        String custid = dashboardPage.dashcustid.getText();
        System.out.println("CUSTID = " + custid);
        return custid;
    }

    //assert name
    private String assertName() {
        String custid = getcustid();
        String query = "SELECT FIRSTNAME, LASTNAME FROM CRM_CUSTOMERS (NOLOCK) WHERE CUSTOMERID =" + custid;
        String name = "";
        String fname = "";
        String lname = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                fname = rs.getString("FIRSTNAME");
                lname = rs.getString("LASTNAME");
                if (rs.wasNull()) {
                    name = "null";
                } else {
                    name = fname + " " + lname;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return name;
    }

    @Step
    public void checkName() {
        String namedb = assertName();
        boolean cekname = false;
        String namepg = dashboardPage.dashname.getTextValue().toString();
        if (namedb.equals("null") || namedb.equals("") || namedb.equals(" ")) {
            namedb = ":";
        }
        cekname = namepg.contains(namedb);
        if (cekname == true) {
            logger.info("Expected: " + namedb + ". Actual: " + namepg);
            assert true;
        } else {
            logger.info("Expected: " + namedb + ". Actual: " + namedb);
            killSession();
            assert false;
        }
    }

    //assert nationality
    private String assertNat() {
        String custid = getcustid();
        String query = "SELECT NATIONALITY FROM CRM_MVNO_CUSTOMERS_PROPERTY (NOLOCK) WHERE CUSTOMERID=" + custid;
        String national = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                national = rs.getString("NATIONALITY");
                if (rs.wasNull()) {
                    national = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return national;
    }

    @Step
    public void checkNat() {
        int nationality = Integer.parseInt(assertNat());
        String natdb = countryISO.getCountry(nationality);
        String natpg = dashboardPage.dashnationality.getTextValue().toString();
        boolean ceknat = false;
        if (natdb.equals("null") || natdb.equals("") || natdb.equals(" ") || natdb.equals("0")) {
            natdb = ":";
        }
        ceknat = natpg.contains(natdb);
        if (ceknat == true) {
            logger.info("Expected: " + natdb + ". Actual: " + natpg);
            assert true;
        } else {
            logger.info("Expected: " + natdb + ". Actual: " + natpg);
            killSession();
            assert false;
        }
    }

    //assert date of birth
    private String assertDob() {
        String custid = getcustid();
        String query = "SELECT DATEOFBIRTH FROM CRM_CUSTOMERS (NOLOCK) WHERE CUSTOMERID=" + custid;
        String dob = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                dob = rs.getString("DATEOFBIRTH");
                if (rs.wasNull()) {
                    dob = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return dob;
    }

    @Step
    public void checkDob() {
        String dobdb = assertDob();
        String dobpg = dashboardPage.dashdob.getTextValue().toString();
        boolean cekdob = false;
        if (dobdb.equals("null") || dobdb.equals("") || dobdb.equals("0") || dobdb.equals(" ")) {
            dobdb = ":";
        } else {
            String mth = dobdb.substring(5, 7);
            dobdb = dobdb.substring(8, 10) + " " + csRutil.getMonth(mth) + " " + dobdb.substring(0, 4);
        }
        cekdob = dobpg.contains(dobdb);
        if (cekdob == true) {
            logger.info("Expected: " + dobdb + ". Actual: " + dobpg);
            assert true;
        } else {
            logger.info("Expected: " + dobdb + ". Actual: " + dobpg);
            killSession();
            assert false;
        }
    }

    //assert id type
    private String assertIdType() {
        String custid = getcustid();
        String query = "SELECT IDTYPE FROM CRM_CUSTOMERS_PROPERTY (NOLOCK) WHERE CUSTOMERID=" + custid;
        String idtype = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                idtype = rs.getString("IDTYPE");
                if (rs.wasNull()) {
                    idtype = "0";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return idtype;
    }

    @Step
    public void checkIdType() {
        String idtypedb = assertIdType();
        String idtypepg = dashboardPage.dashidtype.getTextValue().toString();
        boolean cekidt = false;
        if ("1".equals(idtypedb)) {
            idtypedb = "Passport";
        } else if ("2".equals(idtypedb)) {
            idtypedb = "DriversLicense";
        } else if ("3".equals(idtypedb)) {
            idtypedb = "DNI";
        } else if ("4".equals(idtypedb)) {
            idtypedb = "NIF";
        } else if ("5".equals(idtypedb)) {
            idtypedb = "NIE";
        } else if ("6".equals(idtypedb)) {
            idtypedb = "CIF";
        } else {
            idtypedb = ":";
        }
        cekidt = idtypepg.contains(idtypedb);
        if (cekidt == true) {
            logger.info("Expected: " + idtypedb + ". Actual: " + idtypepg);
            assert true;
        } else {
            logger.info("Expected: " + idtypedb + ". Actual: " + idtypepg);
            killSession();
            assert false;
        }
    }

    //assert id number
    private String assertIdNumb() {
        String custid = getcustid();
        String query = "SELECT IDNUMBER FROM CRM_CUSTOMERS_PROPERTY (NOLOCK) WHERE CUSTOMERID=" + custid;
        String idnum = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                idnum = rs.getString("IDNUMBER");
                if (rs.wasNull()) {
                    idnum = "0";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return idnum;
    }

    @Step
    public void checkIdNumb() {
        String idnumdb = assertIdNumb();
        String idnumpg = dashboardPage.dashidnumber.getTextValue().toString();
        boolean cekidnum = false;
        if ("0".equals(idnumdb) || "".equals(idnumdb) || " ".equals(idnumdb)) {
            idnumdb = ":";
        }
        cekidnum = idnumpg.contains(idnumdb);
        if (cekidnum == true) {
            logger.info("Expected: " + idnumdb + ". Actual: " + idnumpg);
            assert true;
        } else {
            logger.info("Expected: " + idnumdb + ". Actual: " + idnumpg);
            killSession();
            assert false;
        }
    }

    //assert cust id
    private String assertCustId(String msisdn) {
        String query = "SELECT CUSTOMERID FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE RESOURCE ='" + msisdn
                + "' AND STATUSID = 1";
        String custid = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                custid = rs.getString("CUSTOMERID");
                if (rs.wasNull()) {
                    custid = "0";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return custid;
    }

    @Step
    public void checkCustId(String msisdn) {
        String custiddb = assertCustId(msisdn);
        String custidpg = dashboardPage.dashcustid.getTextValue().toString();
        /*if(custidpg.length() > 2){
        custidpg = custidpg.substring(custidpg.lastIndexOf(":")+2);
        }*/
        if (custiddb.equals(custidpg)) {
            logger.info("Expected: " + custiddb + ". Actual: " + custidpg);
            assert true;
        } else {
            logger.info("Expected: " + custiddb + ". Actual: " + custidpg);
            killSession();
            assert false;
        }
    }

    //assert status
    private String assertCustStatus() {
        String custid = getcustid();
        String query = "SELECT PENDINGSTATUS FROM CRM_CUSTOMERS_PROPERTY (NOLOCK) WHERE CUSTOMERID = " + custid;
        String status = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                status = rs.getString("PENDINGSTATUS");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return status;
    }

    @Step
    public void checkCustStatus() {
        String statusdb = assertCustStatus();
        String statuspg = dashboardPage.dashstatus.getText().toLowerCase();
        if ("1".equals(statusdb)) {
            statusdb = "pending";
        } else if ("2".equals(statusdb)) {
            statusdb = "active";
        } else if ("3".equals(statusdb)) {
            statusdb = "terminated";
        } else if ("5".equals(statusdb)) {
            statusdb = "preactive";
        } else if ("6".equals(statusdb)) {
            statusdb = "regulatory";
        }
        if (statuspg.contains(statusdb)) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    //assert fiscal address
    private String assertFiscal() {
        String custid = getcustid();
        String query = "SELECT A.HOUSENO AS HOUSENO, A.ADDRESS AS ADDRESS, A.HOUSEEXTENSION AS EXT, A.CITY AS CITY, A.STATE AS STATE, A.ZIPCODE AS ZIP "
                + "FROM ADDRESSES A, CRM_CUSTOMERS_ADDRESSES B (NOLOCK) "
                + "WHERE A.ADDRESSID = B.ADDRESSID AND B.USAGE_TYPE = 0 AND B.CUSTOMERID=" + custid;
        String fiscal = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                fiscal = rs.getString("ADDRESS") + " " + rs.getString("HOUSENO") + ", ext. " + rs.getString("EXT")
                        + ", " + rs.getString("CITY") + ", " + rs.getString("STATE") + " " + rs.getString("ZIP");
                if (rs.wasNull()) {
                    fiscal = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return fiscal;
    }

    @Step
    public void checkFiscal() {
        String fiscaldb = assertFiscal();
        String fiscalpg = dashboardPage.dashfiscal.getTextValue().toString();
        boolean cekfis = false;
        if (fiscaldb.equals("null") || fiscaldb.equals("") || fiscaldb.equals(" ")) {
            fiscaldb = ":";
        }
        cekfis = fiscalpg.contains(fiscaldb);
        if (cekfis == true) {
            logger.info("Expected: " + fiscaldb + ". Actual: " + fiscalpg);
            assert true;
        } else {
            logger.info("Expected: " + fiscaldb + ". Actual: " + fiscalpg);
            killSession();
            assert false;
        }
    }

    //assert delivery address
    private String assertDeliv() {
        String custid = getcustid();
        String query = "SELECT A.HOUSENO AS HOUSENO, A.ADDRESS AS ADDRESS, A.HOUSEEXTENSION AS EXT, A.CITY AS CITY, A.STATE AS STATE, A.ZIPCODE AS ZIP "
                + "FROM ADDRESSES A, CRM_CUSTOMERS_ADDRESSES B (NOLOCK) "
                + "WHERE A.ADDRESSID = B.ADDRESSID AND B.USAGE_TYPE = 1 AND B.CUSTOMERID=" + custid;
        String deliv = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                deliv = rs.getString("ADDRESS") + " " + rs.getString("HOUSENO") + ", ext. " + rs.getString("EXT")
                        + ", " + rs.getString("CITY") + ", " + rs.getString("STATE") + " " + rs.getString("ZIP");
                if (rs.wasNull()) {
                    deliv = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return deliv;
    }

    @Step
    public void checkDeliv() {
        String delivdb = assertDeliv();
        String delivpg = dashboardPage.dashdeliv.getTextValue().toString();
        boolean cekdeliv = false;
        if (delivdb.equals("null") || delivdb.equals("") || delivdb.equals(" ")) {
            delivdb = ":";
        }
        cekdeliv = delivpg.contains(delivdb);
        if (cekdeliv == true) {
            logger.info("Expected: " + delivdb + ". Actual: " + delivpg);
            assert true;
        } else {
            logger.info("Expected: " + delivdb + ". Actual: " + delivpg);
            killSession();
            assert false;
        }
    }

    //assert customer address
    private String assertCustAddr() {
        String custid = getcustid();
        String query = "SELECT A.HOUSENO AS HOUSENO, A.ADDRESS AS ADDRESS, A.HOUSEEXTENSION AS EXT, A.CITY AS CITY, A.STATE AS STATE, A.ZIPCODE AS ZIP "
                + "FROM ADDRESSES A, CRM_CUSTOMERS_ADDRESSES B (NOLOCK) "
                + "WHERE A.ADDRESSID = B.ADDRESSID AND B.USAGE_TYPE = 2 AND B.CUSTOMERID=" + custid;
        String custaddr = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                custaddr = rs.getString("ADDRESS") + " " + rs.getString("HOUSENO") + ", ext. " + rs.getString("EXT")
                        + ", " + rs.getString("CITY") + ", " + rs.getString("STATE") + " " + rs.getString("ZIP");
                if (rs.wasNull()) {
                    custaddr = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return custaddr;
    }

    @Step
    public void checkCustAddr() {
        String custaddrdb = assertCustAddr();
        String custaddrpg = dashboardPage.dashcustaddr.getTextValue().toString();
        boolean cekcustaddr = false;
        if (custaddrdb.equals("null") || custaddrdb.equals("") || custaddrdb.equals(" ")) {
            custaddrdb = ":";
        }
        cekcustaddr = custaddrpg.contains(custaddrdb);
        if (cekcustaddr == true) {
            logger.info("Expected: " + custaddrdb + ". Actual: " + custaddrpg);
            assert true;
        } else {
            logger.info("Expected: " + custaddrdb + ". Actual: " + custaddrpg);
            killSession();
            assert false;
        }
    }

    //assert bank number
    private String assertBanknum() {
        String custid = getcustid();
        String query = "SELECT TOP 1 BANKNUMBER FROM CRM_CUSTOMERS_BANK (NOLOCK) WHERE CUSTOMERID = " + custid
                + " ORDER BY CREATEDATE DESC";
        String banknum = "";
        setConnect();
        try {
            ResultSet resultSet = dbConnection.stmt.executeQuery(query);
            if (resultSet.next()) {
                banknum = resultSet.getString("BANKNUMBER");
                if (resultSet.wasNull()) {
                    banknum = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return banknum;
    }

    @Step
    public void checkBanknum() {
        String banknumdb = assertBanknum();
        String banknumpg = dashboardPage.dashbanknum.getTextValue().toString();
        boolean cekbank = false;
        if ("null".equals(banknumdb) || "".equals(banknumdb) || " ".equals(banknumdb) || "0".equals(banknumdb)) {
            banknumdb = ":";
        }
        cekbank = banknumpg.contains(banknumdb);
        if (cekbank == true) {
            logger.info("Expected: " + banknumdb + ". Actual: " + banknumpg);
            assert true;
        } else {
            logger.info("Expected: " + banknumdb + ". Actual: " + banknumpg);
            killSession();
            assert false;
        }
    }

    /*SUBSCRIPTION INFORMATION BOX*/

    //assert phone number
    @Step
    public void checkPhoneNum(String msisdn) {
        String numpg = dashboardPage.dashphone.getTextValue().toString();
        boolean cekph = false;
        cekph = numpg.contains(msisdn);
        if (cekph == true) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    //assert icc id
    private String assertIccid() {
        String custid = getcustid();
        //String query = "SELECT ICC FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE RESOURCE='"+msisdn+"' AND STATUSID=1";
        String query = "SELECT ICC FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE CUSTOMERID=" + custid;
        String iccid = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                iccid = rs.getString("ICC");
                if (rs.wasNull()) {
                    iccid = "0";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return iccid;
    }

    @Step
    public void checkIccid() {
        String iccdb = assertIccid();
        String iccpg = dashboardPage.dashiccid.getTextValue().toString();
        boolean cekicc = false;
        cekicc = iccpg.contains(iccdb);
        if (cekicc == true) {
            logger.info("Expected: " + iccdb + ". Actual: " + iccpg);
            assert true;
        } else {
            logger.info("Expected: " + iccdb + ". Actual: " + iccpg);
            assert false;
        }
    }

    //assert imsi
    private String assertImsi() {
        String custid = getcustid();
        //String query = "SELECT IMSI FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE RESOURCE='"+msisdn+"' AND STATUSID=1";
        String query = "SELECT IMSI FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE CUSTOMERID=" + custid;
        String imsi = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                imsi = rs.getString("IMSI");
                if (rs.wasNull()) {
                    imsi = "0";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return imsi;
    }

    @Step
    public void checkImsi() {
        String imsidb = assertImsi();
        String imsipg = dashboardPage.dashimsi.getTextValue().toString();
        boolean cekimsi = false;
        cekimsi = imsipg.contains(imsidb);
        if (cekimsi == true) {
            logger.info("Expected: " + imsidb + ". Actual: " + imsipg);
            assert true;
        } else {
            logger.info("Expected: " + imsidb + ". Actual: " + imsipg);
            killSession();
            assert false;
        }
    }

    //assert customer type
    private String assertCustType() {
        String custid = getcustid();
        String query = "SELECT CUSTOMERTYPEID FROM CRM_CUSTOMERS_PROPERTY (NOLOCK) WHERE CUSTOMERID = " + custid;
        String custype = "";
        setConnect();
        try {
            ResultSet rs = dbConnection.stmt.executeQuery(query);
            if (rs.next()) {
                custype = rs.getString("CUSTOMERTYPEID");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return custype;
    }

    @Step
    public void checkCustType() {
        String custypepg = dashboardPage.subsType.getText();
        String custypedb = assertCustType();
        if (custypedb.equals("0")) {
            custypedb = "none";
        } else if (custypedb.equals("1")) {
            custypedb = "private";
        } else if (custypedb.equals("2")) {
            custypedb = "business";
        }
        logger.info("Expected : " + custypedb + ". Actual : " + custypepg.toLowerCase());
        if (custypedb.equals(custypepg.toLowerCase())) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    //assert sim status
    private String assertSimStatus() {
        String custid = getcustid();
        String query = "SELECT STATUSID FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE CUSTOMERID = " + custid;
        String simstat = "";
        setConnect();
        try {
            ResultSet resultSet = dbConnection.stmt.executeQuery(query);
            if (resultSet.next()) {
                simstat = resultSet.getString("STATUSID");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return simstat;
    }

    @Step
    public void checkSimStatus() {
        String simstatpg = dashboardPage.simStatus.getText();
        String simstatdb = assertSimStatus();
        if (simstatdb.equals("1")) {
            simstatdb = "active";
        } else if (simstatdb.equals("2")) {
            simstatdb = "deactive";
        } else if (simstatdb.equals("3")) {
            simstatdb = "expired";
        } else if (simstatdb.equals("8")) {
            simstatdb = "init";
        } else if (simstatdb.equals("9")) {
            simstatdb = "installed";
        } else if (simstatdb.equals("10")) {
            simstatdb = "inactive";
        } else if (simstatdb.equals("11")) {
            simstatdb = "frozen";
        } else if (simstatdb.equals("15")) {
            simstatdb = "reserved";
        } else if (simstatdb.equals("20")) {
            simstatdb = "deleted";
        } else if (simstatdb.equals("0")) {
            simstatdb = "notinauc";
        }

        logger.info("Expected : " + simstatdb + ". Actual : " + simstatpg.toLowerCase());
        if (simstatdb.equals(simstatpg.toLowerCase())) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    //assert create date
    private String assertCreateDt() {
        String custid = getcustid();
        String query = "SELECT CREATEDATE FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE CUSTOMERID = " + custid;
        String createDt = "";
        setConnect();
        try {
            ResultSet resultSet = dbConnection.stmt.executeQuery(query);
            if (resultSet.next()) {
                createDt = resultSet.getString("CREATEDATE");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return createDt;
    }

    @Step
    public void checkCreateDt() {
        String createdtdb = assertCreateDt().substring(0, 10);
        createdtdb = createdtdb.substring(8, 10) + " " + csRutil.getMonth(createdtdb.substring(5, 7)) + " "
                + createdtdb.substring(0, 4);
        String createdtpg = dashboardPage.createDt.getText();
        logger.info("Expected : " + createdtdb.toLowerCase() + ". Actual : " + createdtpg.toLowerCase());
        if (createdtdb.toLowerCase().equals(createdtpg.toLowerCase())) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    //assert first used
    private String assertFirstUsed() {
        String custid = getcustid();
        String query = "SELECT FIRSTUSED FROM CRM_CUSTOMERS_RESOURCEMB (NOLOCK) WHERE CUSTOMERID = " + custid;
        String firstused = "";
        setConnect();
        try {
            ResultSet resultSet = dbConnection.stmt.executeQuery(query);
            if (resultSet.next()) {
                firstused = resultSet.getString("FIRSTUSED");
                if (resultSet.wasNull()) {
                    firstused = "null";
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return firstused;
    }

    @Step
    public void checkFirstUsed() {
        String fudb = assertFirstUsed();
        String fupg = dashboardPage.firstUsed.getText();
        if (fudb.equals("null") || fudb.equals("") || fudb.equals(" ") || fudb.equals("NULL")) {
            fudb = "";
        } else {
            fudb = fudb.substring(8, 10) + " " + csRutil.getMonth(fudb.substring(5, 7)) + " "
                    + fudb.substring(0, 4);
        }
        if (fudb.toLowerCase().equals(fupg.toLowerCase())) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    //CHECK ORDER AND PRODUCT
    private int countProduct() {
        String custid = getcustid();
        String query = "SELECT COUNT(*) AS TOTAL FROM CRM_CUSTOMERS_PROMOTION (NOLOCK) WHERE ACTIVE = 1 AND CUSTOMERID = "
                + custid;
        int totalProd = 0;
        setConnect();
        try {
            ResultSet resultSet = dbConnection.stmt.executeQuery(query);
            if (resultSet.next()) {
                totalProd = resultSet.getInt("TOTAL");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return totalProd;
    }

    private String[] checkProductName() {
        String custid = getcustid();
        int totalProd = countProduct();
        String[] cekprodname = new String[0];
        if (totalProd > 0) {
            List<String> prodname = commonProduct.assertProductName(custid);
            String[] productname = prodname.toArray(new String[prodname.size()]);
            logger.info(productname);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_productTable"),
                    table.indexOf("billinfoContent"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekprodname = new String[productname.length];
            for (int i = 0; i < productname.length; i++) {
                logger.info("Expected : " + productname[i]);
                if (prodPg.toLowerCase().contains(productname[i].toLowerCase())) {
                    cekprodname[i] = "true";
                } else {
                    cekprodname[i] = "false";
                }
            }
        } else {
            cekprodname[0] = "true";
        }
        return cekprodname;
    }

    private String[] checkProductStartDate() {
        String custid = getcustid();
        int totalProd = countProduct();
        String[] cekprodstart = new String[0];
        String startdate = "";
        if (totalProd > 0) {
            List<String> prodstart = commonProduct.assertProductStartDate(custid);
            String[] productstart = prodstart.toArray(new String[prodstart.size()]);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_productTable"),
                    table.indexOf("billinfoContent"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekprodstart = new String[productstart.length];
            for (int i = 0; i < productstart.length; i++) {
                if (!productstart[i].equals("null")) {
                    String mth = productstart[i].substring(5, 7);
                    startdate = productstart[i].substring(8, 10) + " " + csRutil.getMonth(mth) + " "
                            + productstart[i].substring(0, 4);
                    logger.info("Expected : " + startdate);
                    if (prodPg.toLowerCase().contains(startdate.toLowerCase())) {
                        cekprodstart[i] = "true";
                    } else {
                        cekprodstart[i] = "false";
                    }
                } else {
                    startdate = "";
                    if (prodPg.toLowerCase().contains(startdate)) {
                        cekprodstart[i] = "true";
                    } else {
                        cekprodstart[i] = "false";
                    }
                }
            }
        } else {
            cekprodstart[0] = "true";
        }
        return cekprodstart;
    }

    private String[] checkProductEndDate() {
        String custid = getcustid();
        int totalProd = countProduct();
        String[] cekprodend = new String[0];
        String enddate = "";
        if (totalProd > 0) {
            List<String> prodend = commonProduct.assertProductEndDate(custid, totalProd);
            String[] productend = prodend.toArray(new String[prodend.size()]);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_productTable"),
                    table.indexOf("billinfoContent"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekprodend = new String[productend.length];
            for (int i = 0; i < productend.length; i++) {
                if (!productend[i].equals("null")) {
                    String mth = productend[i].substring(5, 7);
                    enddate = productend[i].substring(8, 10) + " " + csRutil.getMonth(mth) + " "
                            + productend[i].substring(0, 4);
                    logger.info("Expected : " + enddate);
                    if (prodPg.toLowerCase().contains(productend[i].toLowerCase())) {
                        cekprodend[i] = "true";
                    } else {
                        cekprodend[i] = "false";
                    }
                } else {
                    enddate = "";
                    if (prodPg.toLowerCase().contains(enddate)) {
                        cekprodend[i] = "true";
                    } else {
                        cekprodend[i] = "false";
                    }
                }
            }
        } else {
            cekprodend[0] = "true";
        }
        return cekprodend;
    }

    private String[] checkProductBalance() {
        String custid = getcustid();
        int totalProd = countProduct();
        String[] cekprodbal = new String[0];
        if (totalProd > 0) {
            List<String> prodbal = commonProduct.assertProductBalance(custid);
            String[] productbal = prodbal.toArray(new String[prodbal.size()]);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_productTable"),
                    table.indexOf("billinfoContent"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekprodbal = new String[productbal.length];
            for (int i = 0; i < productbal.length; i++) {
                logger.info("Expected : " + productbal[i]);
                if (prodPg.contains(productbal[i])) {
                    cekprodbal[i] = "true";
                } else {
                    cekprodbal[i] = "false";
                }
            }
        } else {
            cekprodbal[0] = "true";
        }
        return cekprodbal;
    }

    @Step
    public void checkProductNameOnDash() {
        String[] prodname = checkProductName();
        if (Arrays.asList(prodname).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkProductStartDateOnDash() {
        String[] prodstart = checkProductStartDate();
        if (Arrays.asList(prodstart).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkProductEndDateOnDash() {
        String[] prodend = checkProductEndDate();
        if (Arrays.asList(prodend).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkProductBalanceOnDash() {
        String[] prodbal = checkProductBalance();
        if (Arrays.asList(prodbal).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    //TROUBLE TICKET
    @Step
    public void clickNewTTBtn() {
        dashboardPage.newTTBtn.click();
        try {
            Thread.sleep(8000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        if (dashboardPage.createTTpage.isDisplayed()) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    private int countTT() {
        String custid = getcustid();
        String query = " SELECT COUNT(*) AS TOTAL FROM CRM_TT_TICKETS (NOLOCK) WHERE FUID = 190000 AND STATUSID <> 105 AND CUSTOMERID = "
                + custid;
        setConnect();
        int totalTT = 0;
        try {
            ResultSet resultSet = dbConnection.stmt.executeQuery(query);
            if (resultSet.next()) {
                totalTT = resultSet.getInt("TOTAL");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        closeConnection();
        return totalTT;
    }

    private String[] checkTTDeptName() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttdeptname = new String[0];
        if (totalTT > 0) {
            List<String> ttdeptname = commonTT.assertTTDeptName(custid);
            String[] deptname = ttdeptname.toArray(new String[ttdeptname.size()]);
            logger.info(deptname);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttdeptname = new String[deptname.length];
            for (int i = 0; i < deptname.length; i++) {
                logger.info("Expected : " + deptname[i]);
                if (prodPg.toLowerCase().contains(deptname[i].toLowerCase())) {
                    cekttdeptname[i] = "true";
                } else {
                    cekttdeptname[i] = "false";
                }
            }
        } else {
            cekttdeptname[0] = "true";
        }
        return cekttdeptname;
    }

    private String[] checkTTCode() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttcode = new String[0];
        if (totalTT > 0) {
            List<String> ttcode = commonTT.assertTTCode(custid);
            String[] code = ttcode.toArray(new String[ttcode.size()]);
            logger.info(code);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttcode = new String[code.length];
            for (int i = 0; i < code.length; i++) {
                logger.info("Expected : " + code[i]);
                if (prodPg.toLowerCase().contains(code[i].toLowerCase())) {
                    cekttcode[i] = "true";
                } else {
                    cekttcode[i] = "false";
                }
            }
        } else {
            cekttcode[0] = "true";
        }
        return cekttcode;
    }

    private String[] checkTTNumber() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttnum = new String[0];
        if (totalTT > 0) {
            List<String> ttnum = commonTT.assertTTNumber(custid);
            String[] number = ttnum.toArray(new String[ttnum.size()]);
            logger.info(number);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttnum = new String[number.length];
            for (int i = 0; i < number.length; i++) {
                logger.info("Expected : " + number[i]);
                if (prodPg.toLowerCase().contains(number[i].toLowerCase())) {
                    cekttnum[i] = "true";
                } else {
                    cekttnum[i] = "false";
                }
            }
        } else {
            cekttnum[0] = "true";
        }
        return cekttnum;
    }

    private String[] checkTTSubmittedBy() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttsub = new String[0];
        if (totalTT > 0) {
            List<String> ttsub = commonTT.assertTTSubmittedBy(custid);
            String[] submittedby = ttsub.toArray(new String[ttsub.size()]);
            logger.info(submittedby);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttsub = new String[submittedby.length];
            for (int i = 0; i < submittedby.length; i++) {
                logger.info("Expected : " + submittedby[i]);
                if (prodPg.toLowerCase().contains(submittedby[i].toLowerCase())) {
                    cekttsub[i] = "true";
                } else {
                    cekttsub[i] = "false";
                }
            }
        } else {
            cekttsub[0] = "true";
        }
        return cekttsub;
    }

    private String[] checkTTReportTime() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttreptime = new String[0];
        String time = "";
        if (totalTT > 0) {
            List<String> ttreptime = commonTT.assertTTReportTime(custid);
            String[] reporttime = ttreptime.toArray(new String[ttreptime.size()]);
            logger.info(reporttime);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttreptime = new String[reporttime.length];
            for (int i = 0; i < reporttime.length; i++) {
                String mth = reporttime[i].substring(4, 6);
                time = reporttime[i].substring(6, 8) + " " + csRutil.getMonth(mth) + " "
                        + reporttime[i].substring(0, 4);
                logger.info("Expected : " + time);
                if (prodPg.toLowerCase().contains(time.toLowerCase())) {
                    cekttreptime[i] = "true";
                } else {
                    cekttreptime[i] = "false";
                }
            }
        } else {
            cekttreptime[0] = "true";
        }
        return cekttreptime;
    }

    private String[] checkTTClass() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttclass = new String[0];
        if (totalTT > 0) {
            List<String> ttclass = commonTT.assertTTClass(custid);
            String[] incidentclass = ttclass.toArray(new String[ttclass.size()]);
            logger.info(incidentclass);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttclass = new String[incidentclass.length];
            for (int i = 0; i < incidentclass.length; i++) {
                logger.info("Expected : " + incidentclass[i]);
                if (prodPg.toLowerCase().contains(incidentclass[i].toLowerCase())) {
                    cekttclass[i] = "true";
                } else {
                    cekttclass[i] = "false";
                }
            }
        } else {
            cekttclass[0] = "true";
        }
        return cekttclass;
    }

    private String[] checkTTStatus() {
        String custid = getcustid();
        int totalTT = countTT();
        String[] cekttstat = new String[0];
        if (totalTT > 0) {
            List<String> ttstat = commonTT.assertTTStatus(custid);
            String[] statusid = ttstat.toArray(new String[ttstat.size()]);
            logger.info(statusid);
            String table = dashboardPage.getDriver().getPageSource();
            String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
            String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
            logger.info(prodPg);
            cekttstat = new String[statusid.length];
            for (int i = 0; i < statusid.length; i++) {
                logger.info("Expected : " + statusid[i]);
                if (prodPg.toLowerCase().contains(statusid[i].toLowerCase())) {
                    cekttstat[i] = "true";
                } else {
                    cekttstat[i] = "false";
                }
            }
        } else {
            cekttstat[0] = "true";
        }
        return cekttstat;
    }

    @Step
    public void checkCustWithNoTT() {
        int totalTT = countTT();
        String table = dashboardPage.getDriver().getPageSource();
        String tableProd = table.substring(table.indexOf("dashboard_TTtable"), table.indexOf("</table>"));
        String prodPg = tableProd.substring(tableProd.indexOf("<tbody>"), tableProd.indexOf("</tbody>"));
        int count = StringUtils.countMatches(prodPg, "<tr");
        logger.info("Expected: " + totalTT + ". Actual: " + count);
        if (totalTT == 0 && count == 0) {
            assert true;
        } else {
            killSession();
            assert false;
        }
    }

    @Step
    public void checkTTDeptNameOnDash() {
        String[] deptname = checkTTDeptName();
        if (Arrays.asList(deptname).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkTTCodeOnDash() {
        String[] ttcode = checkTTCode();
        if (Arrays.asList(ttcode).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkTTNumberOnDash() {
        String[] ttnum = checkTTNumber();
        if (Arrays.asList(ttnum).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkTTSubmittedByOnDash() {
        String[] ttsubmit = checkTTSubmittedBy();
        if (Arrays.asList(ttsubmit).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkTTReportTimeOnDash() {
        String[] ttreptime = checkTTReportTime();
        if (Arrays.asList(ttreptime).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkTTClassOnDash() {
        String[] ttclass = checkTTClass();
        if (Arrays.asList(ttclass).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    @Step
    public void checkTTStatusOnDash() {
        String[] ttstatus = checkTTStatus();
        if (Arrays.asList(ttstatus).contains("false")) {
            killSession();
            assert false;
        } else {
            assert true;
        }
    }

    //GO TO CUST DETAIL FROM DASHBOARD
    @Step
    public void goToCustDet() {
        try {
            Thread.sleep(7000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        dashboardPage.goToCustDetailFrDash.click();
    }

    private void killSession() {
        dashboardPage.getDriver().quit();
    }
}