@@ -525,7 +525,8 @@ def show_total_money(parent, title):
525
525
content_layout .addWidget (back_button , alignment = QtCore .Qt .AlignCenter )
526
526
main_layout .addWidget (content_frame )
527
527
return page
528
-
528
+
529
+ #-----------employees menu pages-----------
529
530
def create_employee_menu_page (parent , title ):
530
531
page , main_layout = create_page_with_header (parent , title )
531
532
@@ -550,7 +551,101 @@ def create_employee_menu_page(parent, title):
550
551
main_layout .addWidget (button_frame )
551
552
552
553
return page , * buttons # Unpack as add_button, update_employee, etc.
554
+
555
+ def create_account_page (parent , title ):
556
+ page , main_layout = create_page_with_header (parent , title )
557
+
558
+ content_frame = create_styled_frame (page )
559
+ content_frame .setSizePolicy (QtWidgets .QSizePolicy .Preferred , QtWidgets .QSizePolicy .Expanding )
560
+ content_layout = QtWidgets .QVBoxLayout (content_frame )
561
+
562
+ form_frame = create_styled_frame (content_frame , min_size = (400 , 200 ), style = "background-color: #ffffff; border-radius: 15px; padding: 10px;" )
563
+ form_layout = QtWidgets .QVBoxLayout (form_frame )
564
+ form_layout .setSpacing (3 )
565
+
566
+ # Define input fields
567
+ fields = ["Name :" , "Age :" , "Address" ,"Balance :" , "Mobile number :" ]
568
+ edits = []
569
+
570
+ for i , field in enumerate (fields ):
571
+ field_frame , field_edit = create_input_field (form_frame , field ,min_label_size = (160 , 0 ))
572
+ form_layout .addWidget (field_frame )
573
+ if i == 0 :
574
+ name_edit = field_edit
575
+ elif i == 1 :
576
+ Age_edit = field_edit
577
+ elif i == 2 :
578
+ Address_edit = field_edit
579
+ elif i == 3 :
580
+ Balance_edit = field_edit
581
+ elif i == 4 :
582
+ Mobile_number_edit = field_edit
583
+ edits .append (field_edit )
584
+ # Dropdown for account type
585
+ account_type_label = QtWidgets .QLabel ("Account Type :" , form_frame )
586
+ account_type_label .setStyleSheet ("font-size: 14px; font-weight: bold; color: #333333;" )
587
+ form_layout .addWidget (account_type_label )
588
+ account_type_dropdown = QtWidgets .QComboBox (form_frame )
589
+ account_type_dropdown .addItems (["Savings" , "Current" , "Fixed Deposit" ])
590
+ account_type_dropdown .setStyleSheet ("""
591
+ QComboBox {
592
+ padding: 5px;
593
+ border: 1px solid #ccc;
594
+ border-radius: 4px;
595
+ background-color: white;
596
+ min-width: 200px;
597
+ font-size: 14px;
598
+ }
599
+ QComboBox:hover {
600
+ border: 1px solid #999;
601
+ }
602
+ QComboBox::drop-down {
603
+ border: none;
604
+ width: 25px;
605
+ }
606
+ QComboBox::down-arrow {
607
+ width: 12px;
608
+ height: 12px;
609
+ }
610
+ QComboBox QAbstractItemView {
611
+ border: 1px solid #ccc;
612
+ background-color: white;
613
+ selection-background-color: #0078d4;
614
+ selection-color: white;
615
+ }
616
+ """ )
617
+ form_layout .addWidget (account_type_dropdown )
618
+
619
+ # Submit button
620
+ button_frame = create_styled_frame (form_frame , style = "padding: 7px;" )
621
+ button_layout = QtWidgets .QVBoxLayout (button_frame )
622
+
623
+
624
+ submit_button = create_styled_button (button_frame , "Submit" , min_size = (100 , 50 ))
625
+ button_layout .addWidget (submit_button , 0 , QtCore .Qt .AlignHCenter )
553
626
627
+
628
+ form_layout .addWidget (button_frame )
629
+ content_layout .addWidget (form_frame , 0 , QtCore .Qt .AlignHCenter | QtCore .Qt .AlignVCenter )
630
+ main_layout .addWidget (content_frame )
631
+ back_btn = QtWidgets .QPushButton ("Back" , content_frame )
632
+ back_btn .setStyleSheet ("""
633
+ QPushButton {
634
+ background-color: #6c757d;
635
+ color: white;
636
+ border: none;
637
+ border-radius: 4px;
638
+ padding: 8px 16px;
639
+ font-size: 14px;
640
+ }
641
+ QPushButton:hover {
642
+ background-color: #5a6268;
643
+ }
644
+ """ )
645
+ back_btn .clicked .connect (lambda : parent .setCurrentIndex (ADMIN_MENU_PAGE ))
646
+ main_layout .addWidget (back_btn , 0 ,alignment = QtCore .Qt .AlignLeft )
647
+
648
+ return page ,( name_edit , Age_edit ,Address_edit ,Balance_edit ,Mobile_number_edit , account_type_dropdown ,submit_button )
554
649
# -------------------------------------------------------------------------------------------------------------
555
650
# === Main Window Setup ===
556
651
# -------------------------------------------------------------------------------------------------------------
@@ -746,10 +841,10 @@ def update_employee_data(name, password, salary, position, name_to_update):
746
841
stacked_widget ,
747
842
title = "Employee Login"
748
843
)
749
-
844
+ employee_submit . clicked . connect ( lambda : stacked_widget . setCurrentIndex ( EMPLOYEE_MENU_PAGE ))
750
845
employee_menu_page , E_Create_Account , E_Show_Details , E_add_Balance , E_Withdraw_Money , E_Chack_Balanace , E_Update_Account , E_list_of_all_Members , E_Delete_Account , E_Back = create_employee_menu_page (stacked_widget ,"Employee Menu" )
751
846
# List of all page
752
- # E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE))
847
+ E_Create_Account .clicked .connect (lambda : stacked_widget .setCurrentIndex (EMPLOYEE_CREATE_ACCOUNT_PAGE ))
753
848
# E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE))
754
849
# E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_PAGE))
755
850
# E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_PAGE))
@@ -759,7 +854,59 @@ def update_employee_data(name, password, salary, position, name_to_update):
759
854
# E_Delete_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_DELETE_ACCOUNT_PAGE))
760
855
# E_Back.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE))
761
856
762
- # Add pages to stacked widget
857
+ employee_create_account_page ,all_employee_menu_btn = create_account_page (stacked_widget , "Create Account" )
858
+ submit_button = all_employee_menu_btn [6 ].clicked .connect (lambda : add_account_form_submit (
859
+ all_employee_menu_btn [0 ].text ().strip (),
860
+ all_employee_menu_btn [1 ].text ().strip (),
861
+ all_employee_menu_btn [2 ].text ().strip (),
862
+ all_employee_menu_btn [3 ].text ().strip (),
863
+ all_employee_menu_btn [5 ].currentText (),
864
+ all_employee_menu_btn [4 ].text ().strip ()
865
+ ))
866
+
867
+ def add_account_form_submit (name , age , address , balance , account_type , mobile ):
868
+ if (
869
+ len (name ) != 0
870
+ and len (age ) != 0
871
+ and len (address ) != 0
872
+ and len (balance ) != 0
873
+ and len (account_type ) != 0
874
+ and len (mobile ) != 0
875
+ ):
876
+ try :
877
+ balance = int (balance )
878
+ except ValueError :
879
+ show_popup_message (stacked_widget , "Balance must be a valid number" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
880
+ return
881
+ if balance < 0 :
882
+ show_popup_message (stacked_widget , "Balance cannot be negative" ,EMPLOYEE_CREATE_ACCOUNT_PAGE )
883
+ return
884
+ if account_type not in ["Savings" , "Current" ,"Fixed Deposit" ]:
885
+ show_popup_message (stacked_widget , "Invalid account type" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
886
+ return
887
+ if len (mobile ) != 10 :
888
+ show_popup_message (stacked_widget , "Mobile number must be 10 digits" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
889
+ return
890
+ if not mobile .isdigit ():
891
+ show_popup_message (stacked_widget , "Mobile number must contain only digits" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
892
+ return
893
+ if not name .isalpha ():
894
+ show_popup_message (stacked_widget , "Name must contain only alphabets" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
895
+ return
896
+ if not age .isdigit ():
897
+ show_popup_message (stacked_widget , "Age must contain only digits" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
898
+ return
899
+ if int (age ) < 18 :
900
+ show_popup_message (stacked_widget , "Age must be greater than 18" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
901
+ return
902
+ if len (address ) < 10 :
903
+ show_popup_message (stacked_widget , "Address must be at least 10 characters long" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
904
+ return
905
+ backend .create_customer (name , age , address , balance , account_type , mobile )
906
+ show_popup_message (stacked_widget , "Account created successfully" , EMPLOYEE_MENU_PAGE , False )
907
+ else :
908
+ show_popup_message (stacked_widget , "Please fill in all fields" , EMPLOYEE_CREATE_ACCOUNT_PAGE )
909
+ # Add pages to stacked widget
763
910
stacked_widget .addWidget (home_page )#0
764
911
stacked_widget .addWidget (admin_page )#1
765
912
stacked_widget .addWidget (employee_page )#2
@@ -770,6 +917,7 @@ def update_employee_data(name, password, salary, position, name_to_update):
770
917
stacked_widget .addWidget (employee_list_page )#7
771
918
stacked_widget .addWidget (admin_total_money )#8
772
919
stacked_widget .addWidget (employee_menu_page )#9
920
+ stacked_widget .addWidget (employee_create_account_page )#10
773
921
774
922
775
923
0 commit comments