<?php
// localhost/Distributed/Mongo/Auditor/issues_data.php?e=eimg.mal&p=11&s=missing_alt&t=500&effect=Major&project=flipkart.com&p_id=7
    require_once "conf.php"; //common configuration constants and error function defined
    require_once 'ErrorDetail.php';

    $error = $_GET['e'];
    $show = $_GET['s'];
    $total = $_GET['t'];
    $effect = $_GET['effect'];
    $page_count = 0;
    $total_pages = 0;

    $proj_data = getProjData($my_dist_host, $my_dist_user, $my_dist_pass, $my_dist_db);
    $week = (int)$proj_data['crawl_no'] - 1;
    $week_past = $week - 1;


    if(array_key_exists($show, $desc_arr) && ($show=="dti" || $show=="dde" || $show=="dkw")) {
        // http://167.114.96.216/Distributed/Auditor/issues_data_new.php?e=etit.dti&p_id=365207e84579abf3043720a89efbb935&s=dti&t=7644&effect=Major&project=aajtak.intoday.in
        $res = array();
        $err_data_cur = array();
        $err_data_past = array();

        if($show == "dti") {
             $col = "etit.tit";
        }
        elseif($show == "dde") {
             $col = "emet.kws";
        }
        elseif($show == "dkw") {
             $col = "emet.desc";
        }
        // this week
        $err_value = $mongoDB->auditor->find(
            array('pi' => P_ID, 'w' => $week, "$error" =>  array('$gt' => 0)),
            array('_id' => 0, "$col" => 1, 'pos' => 1)
        );
        while ($err_data = $err_value->getNext()) {
            if($show == "dti") {
                $err_data_cur[$err_data['etit']['tit']] = $err_data['pos'];
            }
            elseif($show == "dde") {
                $err_data_cur[$err_data['emet']['kws']] = $err_data['pos'];
            }
            elseif($show == "dkw") {
                $err_data_cur[$err_data['emet']['desc']] = $err_data['pos'];
            }
        }


        // previous week
        $err_value_p = $mongoDB->auditor->find(
            array('pi' => P_ID, 'w' => $week_past, "$error" =>  array('$gt' => 0)),
            array('_id' => 0, "$col" => 1, 'pos' => 1)
        );
        while ($err_data_p = $err_value_p->getNext()) {
            if($show == "dti") {
                $err_data_past[$err_data_p['etit']['tit']] = $err_data_p['pos'];
            }
            elseif($show == "dde") {
                $err_data_past[$err_data_p['emet']['kws']] = $err_data_p['pos'];
            }
            elseif($show == "dkw") {
                $err_data_past[$err_data_p['emet']['desc']] = $err_data_p['pos'];
            }
        }

        if(!empty($err_data_cur)) {
            foreach ($err_data_cur as $edck => $edcv) {
                $detail = new ErrorDetail(P_ID, URL_TO_CRAWL, $edcv,$week);

                if(array_key_exists($edck, $err_data_past)) {
                    $past_status = "same";
                    unset($err_data_past[$edck]);
                } else {
                    $past_status = "new";
                    unset($err_data_past[$edck]);
                }

                if ($show == 'dti') {
                    $page_count = $detail->title_duplicate("show count");
                    $err_data_arr['etit']['tit'] = $edck;
                } elseif ($show == 'dde') {
                    $page_count = $detail->meta_desc_duplicate("show count");
                    $err_data_arr['emet']['kws'] = $edck;
                } elseif ($show == 'dkw') {
                    $page_count = $detail->meta_kw_duplicate("show count");
                    $err_data_arr['emet']['desc'] = $edck;
                }
                $total_pages += 1;
                $res[$edck]['pos'] = $edcv;
                $res[$edck]['status'] = $past_status;
                $res[$edck]['description'] = get_error_desc($show, $err_data_arr, $page_count);
            }
        }

        if(!empty($err_data_past)) {
            foreach ($err_data_past as $edpk => $edpv) {
                $detail = new ErrorDetail(P_ID, URL_TO_CRAWL, $edpv,$week_past);

                if ($show == 'dti') {
                    $page_count = $detail->title_duplicate("show count");
                    $err_data_arr['etit']['tit'] = $edpk;
                } elseif ($show == 'dde') {
                    $page_count = $detail->meta_desc_duplicate("show count");
                    $err_data_arr['emet']['kws'] = $edpk;
                } elseif ($show == 'dkw') {
                    $page_count = $detail->meta_kw_duplicate("show count");
                    $err_data_arr['emet']['desc'] = $edpk;
                }
                $total_pages += 1;
                $res[$edpk]['pos'] = $edpv;
                $res[$edpk]['status'] = "deleted";
                $res[$edpk]['description'] = get_error_desc($show, $err_data_arr, $page_count);
            }
        }
echo "<pre>";
print_r($res);
die;
        $page = array();
        $page['result'] = json_encode($res);
        $page['total_pages'] = $total_pages;
        $page['response_code'] = 100;
    } else {
        $ERR_VALUES['_id'] = 0; $ERR_VALUES['pos'] = 1;
        $err_value = $mongoDB->auditor->find(
            array('pi' => P_ID, 'w' => $week),
            $ERR_VALUES
        );
        while ($err_data = $err_value->getNext()) {
            $err_data_arr[$err_data['pos']] = $err_data;
        }
        $err_col_arr['_id'] = 0; $err_col_arr['u'] = $err_col_arr['pos'] = $err_col_arr['t'] = $err_col_arr['etit.tit'] = 1;

        if(array_key_exists($show, $desc_arr)) {
            if($error == 't') {
                $each_errors = $mongoDB->auditor->find(
                    array('pi' => P_ID, 'w' => $week, "$error" => array('$gt' => (int)T_SPEED_SLOW)),
                    $err_col_arr
                );
            }
            else {
                $each_errors = $mongoDB->auditor->find(
                    array('pi' => P_ID, 'w' => $week, "$error" => array('$gt' => 0)),
                    $err_col_arr
                );
            }
        }
        else {
            die("Internal Error Occured");
        }

        while($e_error = $each_errors->getNext()) {
            $page_errors = array();

            foreach ($e_error as $eskey => $esvalue) {
                if($eskey !== "u" && $eskey !== "pos" && $eskey !== 't') {
                    if(is_array($esvalue)) {
                        foreach ($esvalue as $esk => $esv) {
                            if(!empty($esvalue[$esk]) && $esvalue[$esk] >= 1 && $esk !== 'tit')
                            {
                                if(empty($page_errors[$esk]))
                                    $page_errors[$esk] = 0;
                                $page_errors[$esk] = 1;
                                $error_names[$esk] = $final_arr[$esk];
                            }
                        }
                    }
                    elseif(!empty($e_error[$eskey])  && $e_error[$eskey] >= 1 && $eskey !== 'tit') {
                        if(empty($page_errors[$eskey]))
                            $page_errors[$eskey] = 0;
                        $page_errors[$eskey] = 1;
                        $error_names[$eskey] = $final_arr[$eskey];
                    }
                }
            }
            if($e_error['t'] > T_SPEED_SLOW) {
                $error_names['t'] = $final_arr['t'];
                $page_errors['t'] = 1;
            }

            $e_error['u'] = rawurlencode($e_error['u']);

            // $e_error['etit']['tit'] = empty($e_error['etit']['tit']) ? "" : $e_error['etit']['tit'];
            // $url_error[$e_error['u']][$e_error['etit']['tit']] = $page_errors;
            // $url_grade[$e_error['u']] = calculateGrade($page_errors);
            // $url_pos[$e_error['u']] = $e_error['pos'];

            $url_error[$e_error['u']]['title'] = empty($e_error['etit']['tit']) ? "" : $e_error['etit']['tit'];
            $url_error[$e_error['u']]['errors'] = $page_errors;
            $url_error[$e_error['u']]['grade'] = calculateGrade($page_errors);
            $url_error[$e_error['u']]['pos'] = $e_error['pos'];

            $detail = new ErrorDetail(P_ID, URL_TO_CRAWL, $e_error['pos'],$week);

            if ($show == 'dti') {
                $page_count = $detail->title_duplicate("show count");
            } elseif ($show == 'dde') {
                $page_count = $detail->meta_desc_duplicate("show count");
            } elseif ($show == 'dkw') {
                $page_count = $detail->meta_kw_duplicate("show count");
            }
            $url_err_desc[$e_error['u']] = get_error_desc($show, $err_data_arr[$e_error['pos']], $page_count);

            $grade_arr = array_count_values($url_grade);

            if(empty($grade_arr['A'])) $grade_arr['A'] = 0;
            if(empty($grade_arr['B'])) $grade_arr['B'] = 0;
            if(empty($grade_arr['C'])) $grade_arr['C'] = 0;
            if(empty($grade_arr['D'])) $grade_arr['D'] = 0;
            if(empty($grade_arr['E'])) $grade_arr['E'] = 0;
            if(empty($grade_arr['F'])) $grade_arr['F'] = 0;
        }

        if($error == 'tu') {
            $dup_nos = $mongoDB->auditor->find(
                array('pi' => P_ID, 'tu' => array('$gt' => 0)),
                array('_id' => 0, 'u'=>1, 'dp'=>1, 'tu'=>1)
            );

            $dup_arr = array();
            while ($dup = $dup_nos->getNext()) {
                $dup['u'] = rawurlencode($dup['u']);

                $dup_arr[$dup['u']]['percentage'] = $dup['dp'];
                $dup_arr[$dup['u']]['total'] = $dup['tu'];
            }
        }

        $page = array();
        $page['grade_err'] = json_encode($grade_arr);
        $page['url_error'] = json_encode($url_error);
        $page['page_errors'] = json_encode($page_errors);
        $page['error_names'] = json_encode($error_names);
        $page['url_err_desc'] = json_encode($url_err_desc);

        $page['coloumns'] = 3;

        if(!empty($dup_arr))
        {
            $page['coloumns'] = 5;
            $page['duplicates'] = json_encode($dup_arr);
        }
        $page['response_code'] = 100;
    }

    echo json_encode($page);
    exit();
