https://dev.kronoz.win/r/marzneshin.git
1from datetime import datetime as dt
2from enum import Enum
3from typing import Optional
4
5from pydantic import BaseModel
6
7from app.models.admin import Admin
8from app.models.user import UserResponse
9
10
11class Notification(BaseModel):
12 created_at: float = dt.utcnow().timestamp()
13
14
15class AdminNotif(Notification):
16 pass
17
18
19class UserNotification(Notification):
20 user: UserResponse
21
22 class Action(str, Enum):
23 user_created = "user_created"
24 user_updated = "user_updated"
25 user_activated = "user_activated"
26 user_deactivated = "user_deactivated"
27 user_deleted = "user_deleted"
28 user_enabled = "user_enabled"
29 user_disabled = "user_disabled"
30 data_usage_reset = "data_usage_reset"
31 subscription_revoked = "subscription_revoked"
32 reached_usage_percent = "reached_usage_percent"
33 reached_days_left = "reached_days_left"
34
35
36class UserCreated(UserNotification):
37 action: UserNotification.Action = UserNotification.Action.user_created
38 by: Admin
39
40
41class UserUpdated(UserNotification):
42 action: UserNotification.Action = UserNotification.Action.user_updated
43 by: Admin
44
45
46class UserActivated(UserNotification):
47 action: UserNotification.Action = UserNotification.Action.user_activated
48 by: Optional[Admin] = None
49
50
51class UserDeactivated(UserNotification):
52 action: UserNotification.Action = UserNotification.Action.user_deactivated
53 by: Optional[Admin] = None
54
55
56class UserDeleted(UserNotification):
57 action: UserNotification.Action = UserNotification.Action.user_deleted
58 by: Admin
59
60
61class UserEnabled(UserNotification):
62 action: UserNotification.Action = UserNotification.Action.user_enabled
63 by: Optional[Admin] = None
64
65
66class UserDisabled(UserNotification):
67 action: UserNotification.Action = UserNotification.Action.user_disabled
68 by: Optional[Admin] = None
69
70
71class UserDataUsageReset(UserNotification):
72 action: UserNotification.Action = UserNotification.Action.data_usage_reset
73 by: Optional[Admin] = None
74
75
76class UserSubscriptionRevoked(UserNotification):
77 action: UserNotification.Action = (
78 UserNotification.Action.subscription_revoked
79 )
80 by: Admin
81
82
83class ReachedUsagePercent(UserNotification):
84 action: UserNotification.Action = (
85 UserNotification.Action.reached_usage_percent
86 )
87
88
89class ReachedDaysLeft(UserNotification):
90 action: UserNotification.Action = UserNotification.Action.reached_days_left