11import datetime
22from fastapi import APIRouter , Depends
33from pydantic import BaseModel
4- from sqlmodel import Session
4+ from sqlmodel import Session , select
55from constants import API_URL
66from utils import execute_request , get_vinted_headers
7- from config .models import get_session
7+ from config .models import get_session , FavoriteMessage , User
88
99router = APIRouter (
1010 prefix = "/accounting" ,
@@ -15,10 +15,129 @@ class CleanConversations(BaseModel):
1515 monthsToKeep : int
1616
1717
18+ class AddFavoriteMessage (BaseModel ):
19+ name : str
20+ message : str
21+
22+
23+ class DeleteFavoriteMessage (BaseModel ):
24+ id : int
25+
26+
27+ class UpdateFavoriteMessage (BaseModel ):
28+ id : int
29+ name : str
30+ message : str
31+
32+
1833class ExportSalesData (BaseModel ):
1934 period : str
2035
2136
37+ @router .get ("/favorite-messages" )
38+ def get_favorite_messages (
39+ session : Session = Depends (get_session ),
40+ ):
41+ user = session .exec (select (User ).where (User .id == 1 )).first ()
42+ if not user :
43+ return {"success" : False , "error" : "User not found" }
44+
45+ messages = session .exec (
46+ select (FavoriteMessage )
47+ .where (FavoriteMessage .userId == user .userId )
48+ .order_by (FavoriteMessage .createdAt .desc ())
49+ .limit (5 )
50+ ).all ()
51+
52+ return {"success" : True , "messages" : messages }
53+
54+
55+ @router .post ("/add-favorite-message" )
56+ def add_favorite_message (
57+ add_favorite_message : AddFavoriteMessage ,
58+ session : Session = Depends (get_session ),
59+ ):
60+ user = session .exec (select (User ).where (User .id == 1 )).first ()
61+ if not user :
62+ return {"success" : False , "error" : "User not found" }
63+
64+ existing_count = session .exec (
65+ select (FavoriteMessage ).where (FavoriteMessage .userId == user .userId )
66+ ).all ()
67+
68+ if len (existing_count ) >= 5 :
69+ return {"success" : False , "error" : "Maximum 5 favorite messages allowed" }
70+
71+ new_message = FavoriteMessage (
72+ name = add_favorite_message .name ,
73+ message = add_favorite_message .message ,
74+ userId = user .userId ,
75+ createdAt = datetime .datetime .now (),
76+ updatedAt = datetime .datetime .now (),
77+ )
78+
79+ session .add (new_message )
80+ session .commit ()
81+ session .refresh (new_message )
82+
83+ return {"success" : True , "data" : new_message }
84+
85+
86+ @router .delete ("/delete-favorite-message" )
87+ def delete_favorite_message (
88+ delete_favorite_message : DeleteFavoriteMessage ,
89+ session : Session = Depends (get_session ),
90+ ):
91+ user = session .exec (select (User ).where (User .id == 1 )).first ()
92+ if not user :
93+ return {"success" : False , "error" : "User not found" }
94+
95+ message = session .exec (
96+ select (FavoriteMessage ).where (
97+ FavoriteMessage .id == delete_favorite_message .id ,
98+ FavoriteMessage .userId == user .userId ,
99+ )
100+ ).first ()
101+
102+ if not message :
103+ return {"success" : False , "error" : "Message not found" }
104+
105+ session .delete (message )
106+ session .commit ()
107+
108+ return {"success" : True , "message" : "Message deleted successfully" }
109+
110+
111+ @router .patch ("/update-favorite-message" )
112+ def update_favorite_message (
113+ update_favorite_message : UpdateFavoriteMessage ,
114+ session : Session = Depends (get_session ),
115+ ):
116+ user = session .exec (select (User ).where (User .id == 1 )).first ()
117+ if not user :
118+ return {"success" : False , "error" : "User not found" }
119+
120+ message = session .exec (
121+ select (FavoriteMessage ).where (
122+ FavoriteMessage .id == update_favorite_message .id ,
123+ FavoriteMessage .userId == user .userId ,
124+ )
125+ ).first ()
126+
127+ if not message :
128+ return {"success" : False , "error" : "Message not found" }
129+
130+ message .name = update_favorite_message .name
131+ message .message = update_favorite_message .message
132+ message .updatedAt = datetime .datetime .now ()
133+
134+ session .add (message )
135+ session .commit ()
136+ session .refresh (message )
137+
138+ return {"success" : True , "data" : message }
139+
140+
22141def get_transactions_data (year , month , headers ):
23142 page = 1
24143 url = f"{ API_URL } wallet/invoices/{ year } /{ month } ?page={ page } "
0 commit comments