<?php
include "../../db/dBase.php";
$dbase = new dBase();
$tcon = $dbase->con;
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

$currentDate = date("Y-m-d H:i");
$data = json_decode(file_get_contents("php://input"));
$response = array('status' => 'fail');
$recall_data = array();

if (isset($data->API_KEY)) {
    $key_ = mysqli_real_escape_string($tcon, $data->API_KEY);
    $key = md5($key_);

    // check API Validity
    $api_n = $dbase->queryto_fetch_api("SELECT COUNT(*) AS `count`,`userID` FROM `access_log` WHERE `token`='$key' ");
    if ($api_n['count'] == 1) {
        $cUser = $api_n['userID'];


        if (isset($data->id)) {
             $id = mysqli_real_escape_string($tcon, $data->id);



            $lead_data = $dbase->queryto_fetch_api("SELECT lead.building_name,lead.property_type,lead.listing_refID,lead.is_qualified,lead.cdf,lead.source,_country.iso,_country.phonecode,_country.nicename AS `country`,lead.comment,lead.verify,lead.priority,lead.rating,lead.project,lead.dev,lead.com,project.title AS `project_name`,lead.status,_status_list.title AS `status_name`, area.title AS `community_name` ,'' AS `last_updated_date` ,lead.assign_date,campaign.title AS `campaign_name` ,lead.rent_sale AS `category`, lead.name,lead.email,lead.phone,lead.id,_source.name AS `source_name`,_source.img AS `img` FROM `lead` LEFT JOIN `_source` ON _source.short=lead.source LEFT JOIN `campaign` ON campaign.campaignID = lead.campaign LEFT JOIN _country ON lead.country=_country.iso LEFT JOIN `area` ON lead.com = area.id LEFT JOIN `_status_list` ON lead.status = _status_list.code LEFT JOIN `project` ON project.id =lead.project  WHERE  lead.agent='$cUser' AND lead.id ='$id' ");

            $lead_profile = $dbase->queryto_fetch_api("SELECT  `call_record`,`whatsapp`,`call_time`, `id`,`name_2`,`phone_2`,`designation`,`budget`,`property_type`,`created`,`created_date`,`modified`,`modified_date`,`ref_link`,`listing_refID`,`how_soon`,`price`,`purpose`,`bedroom`,`bathroom`,`building_name`,`contract_period` FROM `lead_profile` WHERE `leadID`='$id' ");
            if(isset($lead_profile['id'])){ $lead_profile=$lead_profile; }else{ $lead_profile=array('id'=>0); }

            $assign_row = $dbase->queryto_fetch_api("SELECT user.dp,user.name,assign.assign_by,assign.dated,assign.view_date FROM `assign` LEFT JOIN `user` ON assign.assign_by=user.userID WHERE assign.leadID='$id' AND assign.agent='$cUser' LIMIT 1 ");
            if (!$assign_row) { $assign_row = array('view_date' => '', 'dated' => ''); }

            $assign_history = $dbase->queryto_fetch_api("SELECT COUNT(*) AS `count` FROM `assign_history` WHERE assign_history.leadID='$id' AND assign_history.agent<>'$cUser' ");

            $custom_fields = $dbase->querytoWhile("SELECT `title`,`value`,`id` FROM `lead_custom_fields` WHERE `leadID`='$id' ");
            $settings = $dbase->queryto_fetch_api("SELECT `setting_value`,`id` FROM `setting_preference` WHERE `userID` ='$cUser' AND `setting_type`='whatsapp_message' ");
            
            $message = $dbase->queryto_fetch_api("SELECT COUNT(*) AS `count`,`parent` FROM `message` WHERE `refID` ='$id' AND ( `to_user`='$cUser' OR `from_user` ='$cUser' ) ");
            
            $verification_responses=[];
            if($lead_data['verify']=='POSITIVE'){
                $verification_responses=$dbase->queryto_fetch_api("SELECT _property_type.name AS `prName`, developer.title AS `devName`,area.title AS `areaName`,user.name AS `modifiedName` ,verification_reply.method,user.dp, verification_reply.status, verification_reply.comment, verification_reply.rent_sale, verification_reply.dev, verification_reply.com, verification_reply.budget, verification_reply.how_soon, verification_reply.property_type, verification_reply.tags, verification_reply.modified_by,verification_reply.modified FROM `verification_reply` LEFT JOIN `user` ON user.userID = verification_reply.modified_by LEFT JOIN `developer` ON developer.id=verification_reply.dev LEFT JOIN `area` ON area.id=verification_reply.com LEFT JOIN `_property_type` ON _property_type.slug=verification_reply.property_type WHERE verification_reply.status='POSITIVE' AND verification_reply.leadID = '$id' ORDER BY verification_reply.id DESC ");
            }
            
            $sticky_note=$dbase->queryto_fetch_api("SELECT `color`,`note`,`privacy`,`userID` FROM `sticky_note` WHERE `ref`='$id' AND ( `userID`='$cUser' OR `privacy`='all' ) ");

            $dbase->execute("UPDATE `notification` SET `status`='1' WHERE `reference`='$id' AND `status`='0' AND `not_to`='$cUser' ");

            if($assign_row['view_date']==''){
            $dbase->execute("UPDATE `assign` SET `view_date`='$currentDate' WHERE `leadID`='$id' AND `agent`='$cUser' ");
            }
            if($lead_data['status']=='U'){
            $dbase->execute("UPDATE `lead` SET `status`='S' WHERE `id`='$id' AND `agent`='$cUser' ");
            }
            if($lead_data['status']=='E'){
            $recall_data = $dbase->queryto_fetch_api("SELECT `id`,`ref`,`type` FROM `request` WHERE `ref` ='$id' AND `type`='recall-lead' AND `status`='NEW'  ");
            }

            $history_row = $dbase->querytoWhile("SELECT _response_list.type,_response_list.color,_response_list.title,user.dp,user.name AS `updated_user` , response_history.comment,response_history.dated,response_history.response_code,response_history.agent FROM `response_history` LEFT JOIN `_response_list` ON response_history.response_code = _response_list.code LEFT JOIN `user` ON response_history.agent=user.userID WHERE response_history.leadID='$id' ");

            // if($assign_row['dated']){
            $response = array('recall_data'=>$recall_data,'assign_history'=>$assign_history,'verify'=>$verification_responses,'message'=>$message,'lead_data' => $lead_data, 'assign' => $assign_row, 'custom_fields' => array_filter($custom_fields),'lead_profile'=>$lead_profile ,'setting'=>$settings,'note'=>$sticky_note,'status' => 'success','update_history'=>array_filter($history_row));
            // }
                
            }
    }
}

echo json_encode(array_filter($response));
