예제 #1
0
 public StateMachine()
 {
     state = StateOfSystem.HOME_PAGE_NLI;
 }
예제 #2
0
        public bool SetSystemState(UserActions action, LoginStatus login)
        {
            var prevState = state;

            // NAV bar doesn't work during verifying states
            if (!IsInVerifingState())
            {
                // NAV home page clicks >> returns user to home page
                if (action == UserActions.HOME_CLICK && !IsInVerifingState())
                {
                    if (login == LoginStatus.LOGGED_OUT)
                    {
                        state = StateOfSystem.HOME_PAGE_NLI;
                    }
                    else if (login == LoginStatus.ADMIN)
                    {
                        state = StateOfSystem.HOME_PAGE_ADMIN;
                    }
                    else
                    {
                        state = StateOfSystem.HOME_PAGE_USER;
                    }
                }

                // NAV logout button clicks >> logs user out
                if (action == UserActions.LOGIN_LOGOUT_CLICK && !IsInVerifingState())
                {
                    if (login == LoginStatus.LOGGED_OUT)
                    {
                        state = StateOfSystem.LOGIN_PAGE;
                    }
                    else
                    {
                        state = StateOfSystem.HOME_PAGE_NLI;
                    }
                }

                // NAV admin button clicks >> takes user to admin panel if user is an admin
                if (action == UserActions.ADMIN_CLICK && login == LoginStatus.ADMIN)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }

                // NAV appointments button clicks >> takes user to appointments page if user is not an admin
                if (action == UserActions.APPOINTMENTS_CLICK && login == LoginStatus.USER)
                {
                    state = StateOfSystem.APPOINTMENTS_PAGE;
                }

                // login page state | Possible actions >> Join, Login
                if (state == StateOfSystem.LOGIN_PAGE && action == UserActions.JOIN_CLICK)
                {
                    state = StateOfSystem.JOIN_PAGE;
                }
                else if (state == StateOfSystem.LOGIN_PAGE && action == UserActions.LOGIN_CLICK)
                {
                    state = StateOfSystem.VERIFY_LOGIN;
                }

                // join page state | Possible actions >> Join, Cancel
                else if (state == StateOfSystem.JOIN_PAGE && action == UserActions.JOIN_CLICK)
                {
                    state = StateOfSystem.VERIFY_JOIN;
                }
                else if (state == StateOfSystem.JOIN_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.LOGIN_PAGE;
                }

                // appointments page state | Possible actions >> Create, Remove
                else if (state == StateOfSystem.APPOINTMENTS_PAGE && action == UserActions.CREATE_CLICK)
                {
                    state = StateOfSystem.CREATE_APPOINT_PAGE;
                }
                else if (state == StateOfSystem.APPOINTMENTS_PAGE && action == UserActions.REMOVE_CLICK)
                {
                    state = StateOfSystem.VERIFY_APPOINT_REMOVE;
                }

                // new appointment page state | Possible actions >> Create, Cancel
                else if (state == StateOfSystem.CREATE_APPOINT_PAGE && action == UserActions.CREATE_CLICK)
                {
                    state = StateOfSystem.VERIFY_APPOINT_CREATE;
                }
                else if (state == StateOfSystem.CREATE_APPOINT_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.APPOINTMENTS_PAGE;
                }

                // admin page state | Possible actions >> Add Dentist, Edit Dentist, Remove Dentist, Add App Type, Remove App Type
                else if (state == StateOfSystem.ADMIN_PAGE && action == UserActions.ADD_DEN_CLICK)
                {
                    state = StateOfSystem.ADD_DENTIST_PAGE;
                }
                else if (state == StateOfSystem.ADMIN_PAGE && action == UserActions.EDIT_DEN_CLICK)
                {
                    state = StateOfSystem.EDIT_DENTIST_PAGE;
                }
                else if (state == StateOfSystem.ADMIN_PAGE && action == UserActions.REMOVE_DEN_CLICK)
                {
                    state = StateOfSystem.REMOVE_DENTIST_PAGE;
                }
                else if (state == StateOfSystem.ADMIN_PAGE && action == UserActions.ADD_APP_TYPE_CLICK)
                {
                    state = StateOfSystem.ADD_APPOINT_TYPE_PAGE;
                }
                else if (state == StateOfSystem.ADMIN_PAGE && action == UserActions.REMOVE_APP_TYPE_CLICK)
                {
                    state = StateOfSystem.REMOVE_APPOINT_TYPE_PAGE;
                }
                else if (state == StateOfSystem.ADMIN_PAGE && action == UserActions.EDIT_DEN_DETAILS_CLICK)
                {
                    state = StateOfSystem.EDIT_DENTIST_DETAILS_PAGE;
                }

                // add dentist page state | Possible actions >> Create, Cancel
                else if (state == StateOfSystem.ADD_DENTIST_PAGE && action == UserActions.CREATE_CLICK)
                {
                    state = StateOfSystem.VERIFY_ADD_DENTIST;
                }
                else if (state == StateOfSystem.ADD_DENTIST_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }

                // edit dentist page state | Possible actions >> Update, Cancel
                else if (state == StateOfSystem.EDIT_DENTIST_PAGE && action == UserActions.UPDATE_CLICK)
                {
                    state = StateOfSystem.VERIFY_EDIT_DENTIST;
                }
                else if (state == StateOfSystem.EDIT_DENTIST_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }

                // remove dentist page state | Possible actions >> Remove, Cancel
                else if (state == StateOfSystem.REMOVE_DENTIST_PAGE && action == UserActions.REMOVE_CLICK)
                {
                    state = StateOfSystem.VERIFY_REMOVE_DENTIST;
                }
                else if (state == StateOfSystem.REMOVE_DENTIST_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }

                // add appointment type page | Possible actions >> Create, Cancel
                else if (state == StateOfSystem.ADD_APPOINT_TYPE_PAGE && action == UserActions.CREATE_CLICK)
                {
                    state = StateOfSystem.VERIFY_ADD_APPOINT_TYPE;
                }
                else if (state == StateOfSystem.ADD_APPOINT_TYPE_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }

                // remove appointment type page | Possible actions >> Remove, Cancel
                else if (state == StateOfSystem.REMOVE_APPOINT_TYPE_PAGE && action == UserActions.REMOVE_CLICK)
                {
                    state = StateOfSystem.VERIFY_REMOVE_APPOINT_TYPE;
                }
                else if (state == StateOfSystem.REMOVE_APPOINT_TYPE_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }

                // edit dentist details page | Possible actions >> Update, Cancel
                else if (state == StateOfSystem.EDIT_DENTIST_DETAILS_PAGE && action == UserActions.UPDATE_CLICK)
                {
                    state = StateOfSystem.VERIFY_EDIT_DENTIST_DETAILS;
                }
                else if (state == StateOfSystem.EDIT_DENTIST_DETAILS_PAGE && action == UserActions.CANCEL_CLICK)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }
            }

            // verify join states | Possible actions >> Success, Failure
            if (state == StateOfSystem.VERIFY_JOIN && action == UserActions.SUCCESS)
            {
                state = StateOfSystem.LOGIN_PAGE;
            }
            else if (state == StateOfSystem.VERIFY_JOIN && action == UserActions.FAILURE)
            {
                state = StateOfSystem.JOIN_PAGE;
            }

            // verify login states | Possible actions >> Success, Failure
            else if (state == StateOfSystem.VERIFY_LOGIN && action == UserActions.SUCCESS)
            {
                if (login == LoginStatus.ADMIN)
                {
                    state = StateOfSystem.ADMIN_PAGE;
                }
                else if (login == LoginStatus.USER)
                {
                    state = StateOfSystem.APPOINTMENTS_PAGE;
                }
            }
            else if (state == StateOfSystem.VERIFY_LOGIN && action == UserActions.FAILURE)
            {
                state = StateOfSystem.LOGIN_PAGE;
            }

            // verify logout states | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_LOGOUT)
            {
                state = StateOfSystem.HOME_PAGE_NLI;
            }

            // verify creating appointments | Possible actions >> Success, Failure
            else if (state == StateOfSystem.VERIFY_APPOINT_CREATE && action == UserActions.SUCCESS)
            {
                state = StateOfSystem.APPOINTMENTS_PAGE;
            }
            else if (state == StateOfSystem.VERIFY_APPOINT_CREATE && action == UserActions.FAILURE)
            {
                state = StateOfSystem.CREATE_APPOINT_PAGE;
            }

            // verify removing appointments | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_APPOINT_REMOVE)
            {
                state = StateOfSystem.APPOINTMENTS_PAGE;
            }

            // verify adding a new dentist | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_ADD_DENTIST)
            {
                state = StateOfSystem.ADD_DENTIST_PAGE;
            }

            // verify editing an existing dentist | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_EDIT_DENTIST)
            {
                state = StateOfSystem.EDIT_DENTIST_PAGE;
            }

            // verify removing a dentist | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_REMOVE_DENTIST)
            {
                state = StateOfSystem.REMOVE_DENTIST_PAGE;
            }

            // verify adding an appointment type | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_ADD_APPOINT_TYPE)
            {
                state = StateOfSystem.ADD_APPOINT_TYPE_PAGE;
            }

            // verify removing an appointment type | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_REMOVE_APPOINT_TYPE)
            {
                state = StateOfSystem.REMOVE_APPOINT_TYPE_PAGE;
            }

            // verify editing a dentist's details | Possible actions >> None
            else if (state == StateOfSystem.VERIFY_EDIT_DENTIST_DETAILS)
            {
                state = StateOfSystem.EDIT_DENTIST_DETAILS_PAGE;
            }

            return(prevState != state);
        }
예제 #3
0
        private void ModifyPage(StateOfSystem systemState)
        {
            window.ResetWindow();
            switch (systemState)
            {
            case StateOfSystem.HOME_PAGE_NLI:
            {
                window.SetPage(window.UsrCntrl_Home);
                window.Btn_LogInOut.Content        = "Log In";
                window.Btn_Admin.IsEnabled         = false;
                window.Btn_Admin.Visibility        = Visibility.Hidden;
                window.Btn_Appointments.IsEnabled  = false;
                window.Btn_Appointments.Visibility = Visibility.Hidden;
            } break;

            case StateOfSystem.LOGIN_PAGE:
            {
                window.SetPage(window.UsrCntrl_LogIn);
            } break;

            case StateOfSystem.JOIN_PAGE:
            {
                window.SetPage(window.UsrCntrl_Join);
            } break;

            case StateOfSystem.HOME_PAGE_ADMIN:
            {
                window.SetPage(window.UsrCntrl_Home);
            } break;

            case StateOfSystem.HOME_PAGE_USER:
            {
                window.SetPage(window.UsrCntrl_Home);
            } break;

            case StateOfSystem.ADMIN_PAGE:
            {
                window.SetPage(window.UsrCntrl_Admin);
                window.Btn_LogInOut.Content = "Log Out";
                window.Btn_Admin.IsEnabled  = true;
                window.Btn_Admin.Visibility = Visibility.Visible;
            } break;

            case StateOfSystem.APPOINTMENTS_PAGE:
            {
                window.SetPage(window.UsrCntrl_MyApps);
                window.Btn_LogInOut.Content        = "Log Out";
                window.Btn_Appointments.IsEnabled  = true;
                window.Btn_Appointments.Visibility = Visibility.Visible;
                var thread = new GetUserAppointments(5000, sessionKey.GetSessionID());
                thread.eventHandler += HandleAppointmentsMyAppsUpdate;
                thread.Start();
            } break;

            case StateOfSystem.VERIFY_JOIN:
            {
                window.SetPage(window.UsrCntrl_Join);
            } break;

            case StateOfSystem.ADD_DENTIST_PAGE:
            {
                window.SetPage(window.UsrCntrl_AddDentist);
            } break;

            case StateOfSystem.EDIT_DENTIST_PAGE:
            {
                window.SetPage(window.UsrCntrl_EditDentist);
                var thread = new GetDentistsThread(5000, "");
                thread.eventHandler += HandleGetDentistsEditDenUpdate;
                thread.Start();
            } break;

            case StateOfSystem.REMOVE_DENTIST_PAGE:
            {
                window.SetPage(window.UsrCntrl_RemoveDentist);
                var thread = new GetDentistsThread(5000, "");
                thread.eventHandler += HandleGetDentistsRemoveDenUpdate;
                thread.Start();
            } break;

            case StateOfSystem.ADD_APPOINT_TYPE_PAGE:
            {
                window.SetPage(window.UsrCntrl_AddAppType);
            } break;

            case StateOfSystem.REMOVE_APPOINT_TYPE_PAGE:
            {
                window.SetPage(window.UsrCntrl_RemoveAppType);
                var thread = new GetAppointmentTypesThread(5000, 0);
                thread.eventHandler += HandleGetAllAppTypesRemAppUpdate;
                thread.Start();
            } break;

            case StateOfSystem.CREATE_APPOINT_PAGE:
            {
                window.SetPage(window.UsrCntrl_NewApp);
                var thread = new GetDentistsThread(5000, "");
                thread.eventHandler += HandleGetAllDentistsNewAppUpdate;
                thread.Start();
                var threadTypes = new GetAppointmentTypesThread(5000, 0);
                threadTypes.eventHandler += HandleGetAllAppTypesNewAppUpdate;
                threadTypes.Start();
            } break;

            case StateOfSystem.VERIFY_REMOVE_APPOINT_TYPE:
            {
                window.SetPage(window.UsrCntrl_RemoveAppType);
            } break;

            case StateOfSystem.VERIFY_REMOVE_DENTIST:
            {
                window.SetPage(window.UsrCntrl_RemoveDentist);
            } break;

            case StateOfSystem.EDIT_DENTIST_DETAILS_PAGE:
            {
                window.SetPage(window.UsrCntrl_EditDentistDetails);
                var thread = new GetDentistsThread(5000, "");
                thread.eventHandler += HandleGetAllDentistsEditDenDetailsUpdate;
                thread.Start();
            } break;
            }
        }