public StateMachine() { state = StateOfSystem.HOME_PAGE_NLI; }
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); }
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; } }