'''

Dans ce fichier sont regrouper les api utilisées
en phase de developpement ou deblogage.

ex : la suppression d'un compte utilisateur, chose qui ne doit pas se passer en prod.
en prod, le compte est desactivé.

'''


from pymongo import MongoClient
import pymongo
import json
from flask import Flask, request, jsonify
#from flask_mongoengine import MongoEngine
import json
from bson import ObjectId
import re
import numpy as np
import ela_index_bdd_classes as ela_index
import logging
from datetime import datetime
import prj_common as mycommon
import secrets
import GlobalVariable as MYSY_GV


class JSONEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        return json.JSONEncoder.default(self, o)



'''
Cette fonction supprimer tous les tokens d'un user
- argument : email.
'''
def Dev_del_user_token(diction):
    try:
        client = MongoClient(MYSY_GV.CONNECTION_STRING)

        '''
                # Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés
                # Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API
                # Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
                # field_list.
                '''
        field_list = ['email']

        incom_keys = diction.keys()
        for val in incom_keys:
            if val not in field_list:
                mycommon.myprint(
                    " Creation partner account : Le champ  '" + val + "' n'existe pas, Creation formation annulée")
                return False

        '''
        Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente,
        On controle que les champs obligatoires sont presents dans la liste 
        '''
        field_list_obligatoire = ['email']

        for val in field_list_obligatoire:
            if val not in diction:
                mycommon.myprint(" : La valeur '" + val + "' n'est pas presente dans liste ")
                return False

        # recuperation des paramettre
        mydata = {}
        email = ""

        if ("email" in diction.keys()):
            if diction['email']:
                email = diction['email']


        mydata['date_update'] = str(datetime.now())
        mydata['indexed'] = '0'

        dbname = client['cherifdb']
        coll_token = MYSY_GV.dbname['user_token']

        myquery = {"email": email}
        delete_row = coll_token.delete_many(myquery)
        mycommon.myprint(
            " ela-Token - " + str(delete_row.deleted_count) + "  documents deleted. user mail ==> " + str(email) + " ")

        return True, str(delete_row.deleted_count) + "  documents deleted. user mail ==> '" + str(email) + "' "

    except Exception as e:
        mycommon.myprint(e)
        return False, "Impossible de supprimer les tokens"