<?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;


    if(array_key_exists($show, $desc_arr) && ($show=="dti" || $show=="dde" || $show=="dkw")) {
        $res = array();

        if($show == "dti") {
             $col = "etit.tit";
        }
        elseif($show == "dde") {
             $col = "emet.kws";
        }
        elseif($show == "dkw") {
             $col = "emet.desc";
        }
        $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()) {
            $detail = new ErrorDetail(P_ID, URL_TO_CRAWL, $err_data['pos'],$week);
            if ($show == 'dti') {
                $page_count = $detail->title_duplicate("show count");
                $total_pages += 1;
            } elseif ($show == 'dde') {
                $page_count = $detail->meta_desc_duplicate("show count");
                $total_pages += 1;
            } elseif ($show == 'dkw') {
                $page_count = $detail->meta_kw_duplicate("show count");
                $total_pages += 1;
            }


            if($show == "dti") {

                $err_data_arr['etit']['tit'] = $err_data['etit']['tit'];
                $res[$err_data['etit']['tit']]['description'] = get_error_desc($show, $err_data_arr, $page_count);
                $res[$err_data['etit']['tit']]['pos'] = $err_data['pos'];
            }
            elseif($show == "dde") {
                $err_data_arr['emet']['kws'] = $err_data['emet']['kws'];
                $res[$err_data['emet']['kws']]['description'] = get_error_desc($show, $err_data_arr, $page_count);
                $res[$err_data['emet']['kws']]['pos'] = $err_data['pos'];
            }
            elseif($show == "dkw") {
                $err_data_arr['emet']['desc'] = $err_data['emet']['desc'];
                $res[$err_data['emet']['desc']]['description'] = get_error_desc($show, $err_data_arr, $page_count);
                $res[$err_data['emet']['desc']]['pos'] = $err_data['pos'];
            }
            $err_data_arr[$err_data['pos']] = $err_data;
        }
        $page = array();
        $page['result'] = json_encode($res);
        $page['total_pages'] = $total_pages;
        $page['response_code'] = 100;
        echo json_encode($page);
        exit();

    }


    $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'];




        $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['url_grade'] = json_encode($url_grade);
    $page['url_pos'] = json_encode($url_pos);
    $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);
