#!/usr/bin/python3
#encoding:utf-8


import cgitb
cgitb.enable(display=1, logdir="log")
from sitepackage.cgiweb import template, cgi_cover
from sitepackage.thissql import sqlw, sqlr


import os
import json
import datetime


__config__ = {
  "template_dir_path":"template"}


def main(geted_simple_cookies, info, parametrs, files):
  ok = False
  if 'session_id' in geted_simple_cookies:
    session_id = geted_simple_cookies['session_id'].value
    sessions_data = sqlr("SELECT user_id,expires FROM sessions WHERE session_id=?",
      [session_id])
    if len(sessions_data) != 1:
      errors = "error3.session expire"
    else:
      user_id, expires = sessions_data[0]
      utcnow = datetime.datetime.utcnow()
      if expires > str(utcnow.timestamp()):
        ok = True
      else:
        errors = "error4.session expire"
  else:
    errors = "error5.no email or pass"
  if ok:

    checked = ""
    if "checked" in parametrs:
      checked = " checked"
    if ("date_from" in parametrs and
        "time_from" in parametrs and
        "date_to" in parametrs and
        "time_to" in parametrs):
      search_from = datetime.datetime.strptime(
        parametrs["date_from"][0]+parametrs["time_from"][0],
        "%Y-%m-%d%H:%M")
      search_to = datetime.datetime.strptime(
        parametrs["date_to"][0]+parametrs["time_to"][0],
        "%Y-%m-%d%H:%M")
    else:
      offset = datetime.timedelta(hours=4)
      tz = datetime.timezone(offset, name='UAE')
      now_dt = datetime.datetime.now(tz=tz)
      search_from = now_dt.replace(hour=0, minute=0)
      search_to = now_dt.replace(hour=23, minute=59)
    date_from = search_from.strftime("%Y-%m-%d")
    time_from = search_from.strftime("%H:%M")
    date_to = search_to.strftime("%Y-%m-%d")
    time_to = search_to.strftime("%H:%M")

    table = """<table>
<tr>
  <td>uid</td>
  <td>pay_sys</td>
  <td>pay_sys_ref</td>
  <td>date</td>
  <td>payment_success</td>
  <td>mail_success</td>
  <td>mail_success2</td>
  <td>request_files</td>
  <td>request_values</td>
  <td>payment_url</td>
</tr>"""

    for uid, pay_sys, pay_sys_ref, request, payment, payment_success, mail_success, mail_success2, date in sqlr(
        "SELECT uid, pay_sys, pay_sys_ref, request, payment, payment_success, mail_success, mail_success2, date FROM pay_result", []):
      request = json.loads(request)
      files_td = ""
      for key, values in request["files"].items():
        for value in values:
          files_td += ' <a href="/files/%s">%s</a>' % (value, value)
      date = datetime.datetime.fromtimestamp(float(date))
      date = date.strftime('%Y-%m-%d %H:%M:%S')
      data = uid, pay_sys, pay_sys_ref, date, payment_success, [mail_success], [mail_success2], files_td, str(request["parametrs"]), payment
      if checked != "":
        if pay_sys != "no pay_sys":
         table += "<tr><td>%s</td></tr>" % "</td><td>".join([str(index) for index in data])
      else:
        if payment_success == 1:
          table += "<tr><td>%s</td></tr>" % "</td><td>".join([str(index) for index in data])
    table += "</table>"

    page = template(
      open(
        os.path.join(
          __config__["template_dir_path"],
          "admin3.html"),
        encoding="utf8").read(),
      { "date_from":date_from,
        "time_from":time_from,
        "date_to":date_to,
        "time_to":time_to,
        "checked":checked,
        "table":table
      }
    )
  else:
    page = str(errors)
  return {'page':page}


if __name__ == "__main__":
  cgi_cover(main)
