1
1
from MenuManager import MenuManager
2
2
from StatisticsManager import StatisticsManager
3
3
from AdminManager import AdminManager
4
+ from CustomWidgetCreator import CustomWidgetCreator
5
+ from AdminUI import AdminUI
6
+ from functools import partial
4
7
5
8
class AdminPresenter ():
6
- def __init__ (self , ui ) -> None :
7
- self .ui = ui
9
+ def __init__ (self , kioskpresenter ) -> None :
10
+ self .kioskpresenter = kioskpresenter
11
+ self .ui = AdminUI ()
12
+ self .ui .assignPresenter (self )
13
+ self .ui .initUI ()
8
14
self .MenuManager = MenuManager .instance ()
9
15
self .StatisticsManager = StatisticsManager .instance ()
10
- self .AdminManager = AdminManager .instance ()
16
+ self .AdminManager = AdminManager .instance ()
17
+ self .WidgetCreator = CustomWidgetCreator ()
18
+ self .menutypelist = self .MenuManager .getMenutypeList ()
19
+ self .loadMenu ()
20
+
21
+ # 관리자 도구 창 염
22
+ def openUI (self ):
23
+ if not self .ui .isVisible ():
24
+ self .ui .stackedWidget .setCurrentIndex (0 )
25
+ self .ui .wrongpasswordlabel .setText ("" )
26
+ self .ui .show ()
27
+
28
+ # 비밀번호 인증
29
+ def authenticate (self , password ):
30
+ success = self .AdminManager .authenticate (password )
31
+ if success :
32
+ self .ui .passwordlineedit .setText ("" )
33
+ self .ui .changeUI (1 )
34
+ else :
35
+ self .ui .wrongpasswordlabel .setText ("잘못된 비밀번호입니다." )
36
+
37
+ # 주문 대기목록에 주문 추가
38
+ def addOrderQueueItem (self , orderlist , ordernum , tprice ):
39
+ table = self .ui .orderqueuetable
40
+
41
+ current_row_count = table .rowCount ()
42
+ table .setRowCount (current_row_count + 1 )
43
+ orderstr = ''
44
+ for i , data in enumerate (orderlist .values ()):
45
+ orderstr += f'{ data ["menu" ].name } x { data ["quantity" ]} '
46
+ if i != len (orderlist ) - 1 :
47
+ orderstr += '\n '
48
+
49
+ table .setItem (current_row_count , 0 , self .WidgetCreator .tableWidgetItem (str (ordernum )))
50
+ table .setItem (current_row_count , 1 , self .WidgetCreator .tableWidgetItem (orderstr ))
51
+ table .setItem (current_row_count , 2 , self .WidgetCreator .tableWidgetItem (str (tprice )))
52
+ removeButton = self .WidgetCreator .cartItemManageButton (managetype = "remove" )
53
+ table .resizeRowToContents (current_row_count )
54
+ removeButton .clicked .connect (lambda : self .removeOrderQueueItem (table , removeButton ))
55
+ table .setCellWidget (current_row_count , 3 , removeButton )
56
+
57
+ # 주문 대기목록에서 주문 삭제
58
+ def removeOrderQueueItem (self , table , button ):
59
+ row = self .getWidgetRow (table , 3 , button )
60
+ table .removeRow (row )
61
+
62
+ # 메뉴 관리 창에 현재 메뉴 목록 표시
63
+ def loadMenu (self ):
64
+ table = self .ui .curmenutable
65
+ menus = self .MenuManager .getMenuList ()
66
+ table .setRowCount (len (menus ))
67
+
68
+ for i , menu in enumerate (menus ):
69
+ table .setItem (i , 0 , self .WidgetCreator .tableWidgetItem (str (menu .id )))
70
+ table .setItem (i , 1 , self .WidgetCreator .tableWidgetItem (menu .name ))
71
+ table .setItem (i , 2 , self .WidgetCreator .tableWidgetItem (str (menu .price )))
72
+ table .setItem (i , 3 , self .WidgetCreator .tableWidgetItem (str (menu .menutype )[9 :]))
73
+
74
+ editButton = self .WidgetCreator .cartItemManageButton (managetype = "edit" )
75
+ editButton .clicked .connect (partial (self .editMenu , menu .id , menu .name , str (menu .price ), str (menu .menutype )[9 :]))
76
+ table .setCellWidget (i , 4 , editButton )
77
+
78
+ removeButton = self .WidgetCreator .cartItemManageButton (managetype = "remove" )
79
+ removeButton .clicked .connect (lambda : self .deleteMenu (menu .id ))
80
+ table .setCellWidget (i , 5 , removeButton )
81
+
82
+ # 메뉴 수정
83
+ def editMenu (self , id , name , price , menutype ):
84
+ original_values = [name , price , menutype ]
85
+ window = self .WidgetCreator .menuEditor (name , price , menutype , self .menutypelist )
86
+ def sendsignal ():
87
+ newvalues = [window .menunameline .text (), window .menupriceline .text (), window .menutypecombobox .currentText ()]
88
+ for i in range (len (newvalues )):
89
+ if newvalues [i ] == '' : newvalues [i ] = original_values [i ]
90
+ self .MenuManager .editMenu (id , newvalues [0 ], newvalues [1 ], newvalues [2 ])
91
+ window .close ()
92
+ window .okButton .clicked .connect (lambda : sendsignal ())
93
+ window .exec_ ()
94
+ self .refresh ()
95
+
96
+ # 메뉴 삭제
97
+ def deleteMenu (self , id ):
98
+ self .MenuManager .deleteMenu (id )
99
+ self .refresh ()
100
+
101
+ # 메뉴 생성
102
+ def createMenu (self ):
103
+ window = self .WidgetCreator .menuCreator (self .menutypelist )
104
+ def sendsignal ():
105
+ newvalues = [window .menunameline .text (), window .menupriceline .text (), window .menutypecombobox .currentText ()]
106
+ for i in range (len (newvalues )):
107
+ if newvalues [i ] == '' :
108
+ window .errormessage .setText ("입력하지 않은 정보가 있습니다." )
109
+ return
110
+ self .MenuManager .createMenu (newvalues [0 ], newvalues [1 ], newvalues [2 ])
111
+ window .errormessage .setText ("" )
112
+ window .close ()
113
+ window .okButton .clicked .connect (lambda : sendsignal ())
114
+ window .exec_ ()
115
+ self .refresh ()
116
+
117
+ # ui 새로고침
118
+ def refresh (self ):
119
+ self .loadMenu ()
120
+ self .menutypelist = self .MenuManager .getMenutypeList ()
121
+ self .kioskpresenter .loadMenu ()
122
+
123
+ # 위젯이 들어있는 행 찾음
124
+ def getWidgetRow (self , table , column , widget ):
125
+ row = - 1
126
+ for i in range (table .rowCount ()):
127
+ if table .cellWidget (i , column ) == widget :
128
+ row = i
129
+ if row == - 1 :
130
+ print ("Could not find row" )
131
+ return - 1
132
+ return row
133
+
0 commit comments