# -*- coding: utf-8 -*-
import requests
import json

class IglooApi():
    
    API_URL = "https://api.igloodeveloper.co/v2"
    API_KEY = "KvBCEjlJQyPt1prhajOPJ8.NWC0ayyeaj6dPwXz2yXJVyCorcmbL6dkWCyw8sYB"
    HEADER = {
        "X-IGLOOCOMPANY-APIKEY": API_KEY,
        "Content-Type": "application/json"
    }
    REQUEST_ERROR = "ERROR - code: {code} - message: {message}"

    #TODO: integrer daily, hourly, perm
    def algoPin(self,lockId,pin,startDate,endDate=0,perm=0,hourly=0,daily=0):
        if perm:
            url = '{}/locks/{}/pin/permanent'.format(self.API_URL,lockId)
            payload = {'variance':pin, 'startDate':startDate}
        elif hourly:
            url = '{}/locks/{}/pin/hourly'.format(self.API_URL,lockId)
            payload = {'variance':pin, 'startDate':startDate, 'endDate':endDate}
        elif daily:
            url = '{}/locks/{}/pin/daily'.format(self.API_URL,lockId)
            payload = {'variance':pin, 'startDate':startDate, 'endDate':endDate}
        else:
            url = '{}/locks/{}/pin/onetime'.format(self.API_URL,lockId)
            payload = {'variance':int(pin), 'startDate':startDate}
            
        r = requests.post(url,json = payload, headers=self.HEADER)
        if r.status_code == 200:
            data = json.loads(r.text)
            
        else :
            data = r.text
        return data, r.status_code

    def bluetooth_guestKey(self, lockId,startDate, endDate, permissions = []):
        permissions = [
        "UNLOCK",
        "SET_TIME",
        "GET_TIME",
        "GET_BATTERY_LEVEL",
        "GET_LOCK_STATUS",
        "SET_VOLUME",
        "RESET_LOCK",
        "SET_AUTORELOCK",
        "SET_MAX_INCORRECT_PINS",
        "GET_LOGS",
        "CREATE_PIN",
        "EDIT_PIN",
        "DELETE_PIN",
        "SET_MASTER_PIN",
        "LOCK",
        "ENABLE_AUTOUNLOCK",
        "BLACKLIST_GUEST_KEY",
        "UNBLACKLIST_GUEST_KEY",
        "ENABLE_DFU",
        "SET_DAYLIGHT_SAVINGS",
        "ADD_CARD",
        "DELETE_CARD",
        "SET_BRIGHTNESS"
    ]
        url = '{}/locks/{}/ekeys'.format(self.API_URL,lockId)
        payload = {
            'startDate':startDate,
            'endDate': endDate,
            'permissions':permissions
        }
        r = requests.post(url,json = payload, headers=self.HEADER) 
        if r.status_code == 200:
            data = json.loads(r.text)

        else :
            data = r.text

        return data, r.status_code

    def get_activity_logs(self,lockId,payload):
        url = '{}/locks/{}/activitylogs'.format(self.API_URL,lockId)
        pload = {
            'payload':payload,#//   Payload from the SDK

        }
        #TODO: add SDK and test
        success = {
                'activityLogs': ['No Data'],
                }

        # r = requests.post(url,data = pload, headers=self.HEADER) 
        # if r.status_code == 200:
        #         data = json.loads(r.text)

        #         return #TODO: Success message
        # else :
        #     return self.REQUEST_ERROR(code = r.status_code, message = r.text)
        return success,200

