File size: 1,340 Bytes
6954bf4
 
428a607
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6954bf4
428a607
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import arrow

from flask_login import UserMixin
from firebase_config import firebase_db
from firebase_admin import firestore


class User(UserMixin):
    def __init__(self, id=None, nama=None, email=None, role=None, registered_at=None, inactive=None):
        self.id = id
        self.nama = nama
        self.email = email
        self.role = role
        self.registered_at = registered_at
        self.inactive = inactive


    def update(self):
        firebase_db.collection('users').document(self.id).update({
            'inactive': self.inactive,
        })

        return self
    

    @staticmethod
    def fetch():
        users = firebase_db.collection('users').where('role', '==', 'pengguna').order_by("registered_at", direction=firestore.Query.DESCENDING).stream()

        datas = []
        for user in users:
            data = user.to_dict()
            datas.append({
                'id': user.id,
                'nama': data['nama'],
                'email': data['email'],
                'role': data['role'],
                'inactive': data['inactive'],
                'registered_at': arrow.get(data['registered_at']).to('Asia/Jakarta').format('dddd, DD-MM-YYYY HH:mm:ss', locale='id_ID'),
                'status_badge': 'danger' if data['inactive'] == "1" else 'success'
            })

        return datas