<?php
include dirname(__FILE__) . '/nocache.php';

include dirname(__FILE__) . '/dbconfig.php';
include dirname(__FILE__) . '/error.php';
include dirname(__FILE__) . '/utils.php';

include dirname(__FILE__) . '/session.php';

function check()
{
check_session();

setTextDomain('myapps');

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET CHARACTER SET 'utf8'");
$dbh = new PDO(DB_DSN, DB_USER, DB_PASSWORD, $options);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

error_reporting(E_ALL & ~E_NOTICE);

setTimezone($dbh);

$sql = <<<EOF
SELECT
 u.id,
 CAST(CONVERT_TZ(u.use_start, 'UTC', u.tz) as date) as use_start,
 CONVERT_TZ(u.last_login, 'UTC', u.tz) as last_login,
 CAST(CONVERT_TZ(DATE_ADD(IFNULL(
  (SELECT MAX(end_date) FROM activation WHERE used=u.id AND del_flg='0' AND end_date IS NOT NULL),
  u.freeend_date), INTERVAL -1 SECOND),'UTC',u.tz) as date) as contract_end,
 u.info_read,
 u.mail_enable,
 u.personal_info_read,
 p.name as plan_name,
 IF(sm.session < sm2.session, sm2.id, sm.id) as session,
 IF(sm.session < sm2.session, sm2.session, sm.session) as session_connections,
 IF(cm.capacity < cm2.capacity, cm2.id, cm.id) as capacity,
 IF(cm.capacity < cm2.capacity, cm2.gb, cm.gb) as capacity_gb
FROM userdata as u
INNER JOIN session_master as sm ON sm.id=u.session
INNER JOIN capacity_master as cm ON cm.id=u.capacity
LEFT OUTER JOIN
  activation as act
ON act.used=u.id 
AND act.del_flg='0' 
AND act.plan_id>0
AND act.start_date <= NOW() 
AND NOW() < act.end_date
INNER JOIN session_master as sm2 ON sm2.id=IFNULL(act.session,0)
INNER JOIN capacity_master as cm2 ON cm2.id=IFNULL(act.capacity,0)
LEFT OUTER JOIN
  plan_master as p
ON p.id=act.plan_id
WHERE u.member_id=:mids
EOF;

$stmt = $dbh->prepare($sql);
$params = array(':mids' => $_SESSION['member_id']);
$stmt->execute($params);

$result = $stmt->fetch(PDO::FETCH_ASSOC);

$sql = <<<EOF
SELECT
  s.host
FROM
  mqtt_host as s
INNER JOIN
  mqtt_auth as a
ON
  a.server = s.id
WHERE
  a.member_id=:mids
AND
  a.del_flg='0'
LIMIT 1
EOF;

$stmt = $dbh->prepare($sql);
$stmt->execute(array(':mids' => $_SESSION['member_id']));

$mqtt_server = $stmt->fetch(PDO::FETCH_ASSOC);

$sql = <<<END
SELECT 1 FROM information WHERE del_flg='0' and id>:g
UNION
SELECT 1 FROM personal_info WHERE del_flg='0' and id>:p and user_id=:uid
END;

$stmt = $dbh->prepare($sql);
$stmt->execute(array(
  ':uid' => $result['id'],
  ':g'   => $result['info_read'],
  ':p'   => $result['personal_info_read']
));
$read = $stmt->fetch(PDO::FETCH_ASSOC);

$array = [
    'contract_start' => $result['use_start'],
    'contract_end' => $result['contract_end'],
    'last_login' => $result['last_login'],
    'mail_enable' => $result['mail_enable'],
    'session' => (int)$result['session'],
    'capacity' => (int)$result['capacity'],
    'info_stat' => empty($read) ? 'none' : 'more',
    'mqtt_server' => $mqtt_server['host'],
    'plan_name' => $result['plan_name'],
    'capacity_gb' => $result['capacity_gb'],
    'session_connections' => $result['session_connections']
  ];
  echo json_encode($array);
}

wrap('check');
