Пример #1
0
    /*
     * CREATED:    H. Conant		MAR 10 2018
     *
     * Page_Load()
     * This method runs when the page loads and generates access codes
     * for any care sites that need them for the current date or the day after
     *
     * PARAMETERS:
     * object sender - object on the page that is being targeted
     * EventArgs e - event that has triggered the method
     *
     * RETURNS:
     * void
     *
     * ODEV METHOD CALLS:
     * CareSiteAccessController.GetAssignedCareSites()
     * CareSiteController.GetCareSiteIds()
     * CareSiteAccessController.GetAssignedAccessCodes()
     * AccessCodeController.GetAccessCodes()
     * CareSiteAccessController.AddCareSiteAccess()
     * ErrorMessagesAndValidation.List()
     */
    protected void Page_Load(object sender, EventArgs e)
    {
        DateTime      currentDate    = DateTime.Today;
        DateTime      tomorrowsDate  = currentDate.AddDays(1);
        List <string> failedToday    = new List <string>();
        List <string> failedTomorrow = new List <string>();
        Random        rnd            = new Random();

        List <int> alreadyAssignedAccessCodes = new List <int>();
        List <int> accessCodeIds            = new List <int>();
        List <int> alreadyAssignedCareSites = new List <int>();
        List <int> careSiteIds = new List <int>();

        #region Today's codes
        try
        {
            alreadyAssignedCareSites = careSiteAccessController.GetAssignedCareSites(currentDate);
        }
        catch (Exception ex)
        {
            ErrorMsg.Text = "Retrieving unassigned care sites failed for today's date. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
            ErrorMessage.Style.Add("display", "none");
            ErrorMessage2.Style.Add("display", "none");
        }

        try
        {
            careSiteIds = careSiteController.GetCareSiteIds(alreadyAssignedCareSites);
        }
        catch (Exception ex)
        {
            ErrorMsg.Text = "Retrieving care site IDs failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
            ErrorMessage.Style.Add("display", "none");
            ErrorMessage2.Style.Add("display", "none");
        }

        if (careSiteIds.Count > 0)
        {
            foreach (int careSiteId in careSiteIds)
            {
                try
                {
                    alreadyAssignedAccessCodes.Clear();
                    alreadyAssignedAccessCodes = careSiteAccessController.GetAssignedAccessCodes(currentDate, careSiteId);
                } catch (Exception ex)
                {
                    ErrorMsg.Text = "Retrieving assigned access codes for today's date failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
                    ErrorMessage.Style.Add("display", "none");
                    ErrorMessage2.Style.Add("display", "none");
                }

                try
                {
                    accessCodeIds.Clear();
                    accessCodeIds = accessCodeController.GetAccessCodes(alreadyAssignedAccessCodes, currentDate, careSiteId);
                }
                catch (Exception ex)
                {
                    ErrorMsg.Text = "Retrieving previously assigned access codes failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
                    ErrorMessage.Style.Add("display", "none");
                    ErrorMessage2.Style.Add("display", "none");
                }



                if (accessCodeIds.Count > 0)
                {
                    int index        = rnd.Next(0, accessCodeIds.Count);
                    int accessCodeId = accessCodeIds[index];

                    try
                    {
                        careSiteAccessController.AddCareSiteAccess(careSiteId, accessCodeId, currentDate);
                    }
                    catch (Exception ex)
                    {
                        ErrorMsg.Text = "Adding new care site access code failed for today's date. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
                        ErrorMessage.Style.Add("display", "none");
                        ErrorMessage2.Style.Add("display", "none");
                    }
                }
                else
                {
                    string siteName = careSiteController.GetCareSiteName(careSiteId);
                    failedToday.Add(siteName);
                }
            }
        }
        #endregion

        #region Tomorrow's codes
        try
        {
            alreadyAssignedCareSites.Clear();
            alreadyAssignedCareSites = careSiteAccessController.GetAssignedCareSites(tomorrowsDate);
        }
        catch (Exception ex)
        {
            ErrorMsg.Text = "Retrieving unassigned care sites failed for tomorrow's date. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
            ErrorMessage.Style.Add("display", "none");
            ErrorMessage2.Style.Add("display", "none");
        }
        try
        {
            careSiteIds.Clear();
            careSiteIds = careSiteController.GetCareSiteIds(alreadyAssignedCareSites);
        }
        catch (Exception ex)
        {
            ErrorMsg.Text = "Retrieving care site IDs failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
            ErrorMessage.Style.Add("display", "none");
            ErrorMessage2.Style.Add("display", "none");
        }

        if (careSiteIds.Count > 0)
        {
            foreach (int careSiteId in careSiteIds)
            {
                try
                {
                    alreadyAssignedAccessCodes.Clear();
                    alreadyAssignedAccessCodes = careSiteAccessController.GetAssignedAccessCodes(tomorrowsDate, careSiteId);
                }
                catch (Exception ex)
                {
                    ErrorMsg.Text = "Retrieving assigned access codes for tomorrow's date failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
                    ErrorMessage.Style.Add("display", "none");
                    ErrorMessage2.Style.Add("display", "none");
                }

                try
                {
                    accessCodeIds.Clear();
                    accessCodeIds = accessCodeController.GetAccessCodes(alreadyAssignedAccessCodes, tomorrowsDate, careSiteId);
                }
                catch (Exception ex)
                {
                    ErrorMsg.Text = "Retrieving previously assigned access codes failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
                    ErrorMessage.Style.Add("display", "none");
                    ErrorMessage2.Style.Add("display", "none");
                }


                if (accessCodeIds.Count > 0)
                {
                    int index        = rnd.Next(0, accessCodeIds.Count);
                    int accessCodeId = accessCodeIds[index];

                    try
                    {
                        careSiteAccessController.AddCareSiteAccess(careSiteId, accessCodeId, tomorrowsDate);
                    } catch (Exception ex)
                    {
                        ErrorMsg.Text = "Adding new care site access code failed for tomorrow's date. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message;
                        ErrorMessage.Style.Add("display", "none");
                        ErrorMessage2.Style.Add("display", "none");
                    }
                }
                else
                {
                    string siteName = careSiteController.GetCareSiteName(careSiteId);
                    failedTomorrow.Add(siteName);
                }
            }
        }
        #endregion

        if (ErrorMsg.Text == "")
        {
            ErrorMessagesAndValidation errMessAndVal = new ErrorMessagesAndValidation();

            if (failedToday.Count > 0 && failedTomorrow.Count > 0)
            {
                ErrorMessage.Text  = "Could not generate today's access codes for " + errMessAndVal.List(failedToday) + ". More words are needed to generate access codes, please contact your administrator.";
                ErrorMessage2.Text = "Could not generate tomorrow's access codes for " + errMessAndVal.List(failedTomorrow) + ". More words are needed to generate access codes, please contact your administrator.";
                ErrorMsg.Style.Add("display", "none");
            }
            else if (failedToday.Count > 0 && failedTomorrow.Count == 0)
            {
                ErrorMessage.Text = "Could not generate today's access codes for " + errMessAndVal.List(failedToday) + ". More words are needed to generate access codes, please contact your administrator.";
                ErrorMessage2.Style.Add("display", "none");
                ErrorMsg.Style.Add("display", "none");
            }
            else if (failedToday.Count == 0 && failedTomorrow.Count > 0)
            {
                ErrorMessage2.Text = "Could not generate tomorrow's access codes for " + errMessAndVal.List(failedTomorrow) + ". More words are needed to generate access codes, please contact your administrator.";
                ErrorMessage.Style.Add("display", "none");
                ErrorMsg.Style.Add("display", "none");
            }
            else
            {
                errordiv.Style.Add("display", "none");
            }
        }
        else
        {
            ErrorMessage.Style.Add("display", "none");
            ErrorMessage2.Style.Add("display", "none");
        }
    }
Пример #2
0
    /*
     * CREATED:     C. Stanhope		MAR 23 2018
     * MODIFIED:   C. Stanhope     MAR 24 2018
     *  - Added validation, finished method
     * MODIFIED:   C. Stanhope     APR 5 2018
     *  - trim whitespace on inputs
     *  - validation now matches add care site
     * MODIFIED:   C. Stanhope     APR 6 2018
     *  - added try-catch for database access
     * MODIFIED:   C. Stanhope     APR 17 2018
     *  - fixed city regex to limit at 30 characters
     *  - fixed care site regex to limit at 80 characters
     *
     * UpdateCareSiteButton_Click()
     * Used to update a care site in the database. Validates all input fields and updates only if valid.
     *
     * PARAMETERS:
     * object sender - references the object that raised the Page_Load event
     * EventArgs e - optional class that may be passed that inherits from EventArgs (usually empty)
     *
     * RETURNS:
     * void
     *
     * ODEV METHOD CALLS:
     * MessageUserControl.ShowInfoMessage()
     * CareSiteController.GetCareSiteByCareSiteID()
     * MessageUserControl.ShowErrorMessage()
     * ErrorMessagesAndValidation.ErrorList()
     */
    protected void UpdateCareSiteButton_Click(object sender, EventArgs e)
    {
        if (selectedCareSite != null)
        {
            bool          isValid   = true;
            List <string> errorList = new List <string>();

            #region regexes for validation
            Regex careSiteRegex = new Regex(@"^[A-z]{1}[A-z 0-9 .-]{4,79}$");
            Regex addressRegex  = new Regex(@"^[A-z 0-9 .#-]{1,40}$");
            Regex cityRegex     = new Regex(@"^[A-z]{1}[A-z .-]{0,29}$");
            #endregion

            #region get values from page and validate
            string careSiteName = CareSiteNameTextBox.Text.Trim();
            if (!careSiteRegex.IsMatch(careSiteName))
            {
                errorList.Add("Care site must be a minimum of 5 characters and a maximum of 80 characters long. It must start with a letter and can contain letters, numbers, and the following symbols: . -");
                isValid = false;
            }

            string address = AddressTextBox.Text.Trim();
            if (!addressRegex.IsMatch(address))
            {
                errorList.Add("Address must be a minimum of 1 character and a maximum of 40 characters long. It can contain letters, numbers, and the following symbols: # . -");
                isValid = false;
            }

            string city = CityTextBox.Text.Trim();
            if (!cityRegex.IsMatch(city))
            {
                errorList.Add("City must be a minimum of 1 letter and a maximum of 30 characters long. It must start with a letter and can contain letters and the following symbols: . -");
                isValid = false;
            }

            string province = ProvinceDDL.SelectedValue;

            #endregion

            if (isValid)
            {
                #region see if data changed
                bool dataChanged = false;
                if (selectedCareSite.caresitename != careSiteName)
                {
                    dataChanged = true;
                }
                else if (selectedCareSite.address != address)
                {
                    dataChanged = true;
                }
                else if (selectedCareSite.city != city)
                {
                    dataChanged = true;
                }
                else if (selectedCareSite.province != province)
                {
                    dataChanged = true;
                }
                #endregion

                if (dataChanged)
                {
                    #region put valid data into selectedCareSite, add to database, show success message, change DDL
                    selectedCareSite.caresitename = careSiteName;
                    selectedCareSite.address      = address;
                    selectedCareSite.city         = city;
                    selectedCareSite.province     = province;

                    try
                    {
                        careSiteController.UpdateCareSite(selectedCareSite);

                        MessageUserControl.ShowSuccessMessage("The " + selectedCareSite.caresitename + " care site was successfully updated.");

                        CareSiteDDL.SelectedItem.Text = selectedCareSite.caresitename;
                    }
                    catch (Exception ex)
                    {
                        MessageUserControl.ShowErrorMessage("Updating care site failed. Please try again. If error persists, please contact your administrator.", ex);
                    }
                    #endregion
                }
                else
                {
                    MessageUserControl.ShowInfoMessage("No changes to save.");
                }
            }
            else
            {
                #region show user message with "errors"

                ErrorMessagesAndValidation errMessAndVal = new ErrorMessagesAndValidation();

                string errorMessage = errMessAndVal.ErrorList(errorList);

                //MessageUserControl.ShowInfoMessage(errorMessage);
                MessageUserControl.ShowInfoList("The following errors caused adding a care site to fail: ", errorList);
                #endregion
            }
        }
        else // no care site selected
        {
            MessageUserControl.ShowErrorMessage("No care site selected. The \"Update Care Site\" button should not be available if no care site is selected. Please try again. If error persists, please contact your administrator.");
        }
    }
Пример #3
0
    /*
     * CREATED:     P. Chavez		MAR 22 2018
     * MODIFIED:   C. Stanhope     APR 5 2018
     *  - inputs now trim whitespace
     * MODIFIED:   C. Stanhope     APR 14 2018
     *  - user messages formatted the same as other pages
     *
     * AddAccountButton_Click()
     * This method creates a new account based on the input fields when the button is clicked.
     *
     * PARAMETERS:
     * object sender - references the object that raised the Page_Load event
     * EventArgs e - optional class that may be passed that inherits from EventArgs (usually empty)
     *
     * RETURNS:
     * void
     *
     * ODEV METHOD CALLS:
     * ErrorMessagesAndValidation.ErrorList()
     * MessageUserControl.ShowInfoMessage()
     * UserManager.GenerateNewPassword()
     * UserManager.AddAccountUser()
     * MessageUserControl.ShowSuccessMessage()
     * MessageUserControl.ShowErrorMessage()
     * MessageUserControl.ShowInfoList()
     */
    protected void AddAccountButton_Click(object sender, EventArgs e)
    {
        //Retrieve the values from the controls
        string firstNameText = FirstNameTextBox.Text.Trim();
        string lastNameText  = LastNameTextBox.Text.Trim();
        string emailText     = EmailTextBox.Text.Trim();
        string authLevelText = AuthorizationLevelRolesRadioList.SelectedValue;
        int    careSiteID    = int.Parse(CareSiteDDL.Visible == false ? "0" : CareSiteDDL.SelectedValue);

        List <string> errorList = new List <string>();
        bool          isValid   = true;

        #region check if any inputs are blank
        if (string.IsNullOrWhiteSpace(firstNameText))
        {
            errorList.Add("First Name");
            isValid = false;
        }

        if (string.IsNullOrWhiteSpace(lastNameText))
        {
            errorList.Add("Last Name");
            isValid = false;
        }

        if (string.IsNullOrWhiteSpace(emailText))
        {
            errorList.Add("Email");
            isValid = false;
        }
        if (string.IsNullOrWhiteSpace(authLevelText))
        {
            errorList.Add("Authorization Level");
            isValid = false;
        }
        #endregion

        if (!isValid)
        {
            ErrorMessagesAndValidation errMessAndVal = new ErrorMessagesAndValidation();
            string errorMessage = errMessAndVal.ErrorList(errorList);
            MessageUserControl.ShowInfoMessage(errorMessage);
        }
        else
        {
            bool          matchRegex     = true;
            List <string> regexErrorList = new List <string>();

            Regex regexName = new Regex(@"^(?m)[A-Za-z][A-Za-z`. -]*$", RegexOptions.IgnoreCase);
            if (!regexName.Match(firstNameText).Success)
            {
                matchRegex = false;
                regexErrorList.Add("First Name can only contain letters, dashes, apostrophes, grave accents, spaces and periods.");
            }
            if (!regexName.Match(lastNameText).Success)
            {
                matchRegex = false;
                regexErrorList.Add("Last Name can only contain letters, dashes, apostrophes, grave accents, spaces and periods.");
            }

            if (!emailText.Contains("@"))
            {
                matchRegex = false;
                regexErrorList.Add("Email must include an '@' symbol.");
            }

            if (careSiteID == 0 && authLevelText == AuthorizationLevelRoles.User)
            {
                matchRegex = false;
                regexErrorList.Add("The Authorization Level User must have a Care Site associated with the account.");
            }

            if (matchRegex)
            {
                try
                {
                    UserManager     userManager    = new UserManager();
                    string          newPassword    = userManager.GenerateNewPassword();
                    ApplicationUser newUserAccount = userManager.AddAccountUser(firstNameText, lastNameText, emailText, authLevelText, careSiteID, newPassword);
                    string          resultMessage  = string.Format("The new account was created! UserName: {0} | Password: {1}", newUserAccount.UserName, newPassword);
                    MessageUserControl.ShowSuccessMessage(resultMessage);

                    //Reset the fields
                    FirstNameTextBox.Text = "";
                    LastNameTextBox.Text  = "";
                    EmailTextBox.Text     = "";
                    AuthorizationLevelRolesRadioList.SelectedValue = AuthorizationLevelRoles.User;
                    CareSiteDDL.SelectedValue = "0";
                    CareSiteDDL.Visible       = true;
                    CareSiteLabel.Visible     = true;
                }
                catch (Exception ex)
                {
                    MessageUserControl.ShowErrorMessage("Adding account failed. Please try again. If error persists, please contact your administrator.", ex);
                }
            }
            else // A regex didn't match
            {
                MessageUserControl.ShowInfoList("The following errors caused adding a management account to fail: ", regexErrorList);
            }
        }
    }
Пример #4
0
    /*
     * CREATED:     E. Lautner		APR 1 2018
     * MODIFIED:   C. Stanhope     APR 14 2018
     *  - changed validation to match the account_add validation
     *
     * ModifyUser_Click()
     * Gathers all given information on the page about the selected account. Sends this information to the userManager so that the account can be updated.
     *
     * PARAMETERS:
     * object sender - references the object that raised the Page_Load event
     * EventArgs e - optional class that may be passed that inherits from EventArgs (usually empty)
     *
     * RETURNS:
     * void
     *
     * ODEV METHOD CALLS:
     * MessageUserControl.ShowSuccessMessage()
     * MessageUserControl.ShowErrorMessage()
     * UserManager.ModifyAccount()
     * UserManager.GetRoles()
     */
    protected void ModifyUser_Click(object sender, EventArgs e)
    {
        {
            sentUserName = Request.QueryString["id"];
            if (sentUserName == "" || sentUserName == null)
            {
                MessageUserControl.ShowErrorMessage("An account has not been selected. Please navigate back to the Account Search page and select an account. If error persists, please contact your administrator.");
            }

            else
            {
                //Retrieve the values from the controls
                string firstNameText = FirstNameTB.Text.Trim();
                string lastNameText  = LastNameTB.Text.Trim();
                string emailText     = EmailTB.Text.Trim();
                string authLevelText = AuthorizationLevelRolesRadioList.SelectedValue;
                int    careSiteID    = int.Parse(CareSiteDDL.Visible == false ? "0" : CareSiteDDL.SelectedValue);

                List <string> errorList = new List <string>();
                bool          isValid   = true;

                #region check if any inputs are blank
                if (string.IsNullOrWhiteSpace(firstNameText))
                {
                    errorList.Add("First Name");
                    isValid = false;
                }

                if (string.IsNullOrWhiteSpace(lastNameText))
                {
                    errorList.Add("Last Name");
                    isValid = false;
                }

                if (string.IsNullOrWhiteSpace(emailText))
                {
                    errorList.Add("Email");
                    isValid = false;
                }
                if (string.IsNullOrWhiteSpace(authLevelText))
                {
                    errorList.Add("Authorization Level");
                    isValid = false;
                }
                #endregion

                if (!isValid)
                {
                    ErrorMessagesAndValidation errMessAndVal = new ErrorMessagesAndValidation();
                    string errorMessage = errMessAndVal.ErrorList(errorList);
                    MessageUserControl.ShowInfoMessage(errorMessage);
                }
                else
                {
                    if (!emailText.Contains("@"))
                    {
                        MessageUserControl.ShowInfoMessage("Email must include an '@' symbol.");
                    }
                    else
                    {
                        if (System.Text.RegularExpressions.Regex.IsMatch(FirstNameTB.Text, @"^(?m)[A-Za-z][A-Za-z`. -]*$") && System.Text.RegularExpressions.Regex.IsMatch(LastNameTB.Text, @"^(?m)[A-Za-z][A-Za-z`. -]*$"))
                        {
                            if (int.Parse(CareSiteDDL.SelectedValue) == 0 && AuthorizationLevelRolesRadioList.SelectedValue == AuthorizationLevelRoles.User)
                            {
                                MessageUserControl.ShowInfoMessage("Authorization Level: User, must be associated with a care site");
                            }
                            else
                            {
                                try
                                {
                                    UserManager userManager  = new UserManager();
                                    var         selectedUser = userManager.FindByName(UsernameLabel.Text);
                                    var         userRoles    = userManager.GetRoles(selectedUser.Id);

                                    string userRole = string.Join("", userRoles.ToArray());

                                    string newUserName = userManager.ModifyAccount(UsernameLabel.Text, FirstNameTB.Text.Trim(), LastNameTB.Text.Trim(), EmailTB.Text.Trim(), int.Parse(CareSiteDDL.SelectedValue), userRole, AuthorizationLevelRolesRadioList.SelectedValue);
                                    if (newUserName != UsernameLabel.Text)
                                    {
                                        string resultMessage = string.Format("Update successful, new UserName is {0} ", newUserName);
                                        MessageUserControl.ShowSuccessMessage(resultMessage);
                                        UsernameLabel.Text = newUserName;
                                    }

                                    else
                                    {
                                        string resultMessage = string.Format("Update successful for user: {0}", UsernameLabel.Text);
                                        MessageUserControl.ShowSuccessMessage(resultMessage);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    MessageUserControl.ShowErrorMessage("Update Failed. Please try again. If error persists, please contact your administrator. Error Message: " + ex.Message);
                                }
                            }
                        }
                        else
                        {
                            MessageUserControl.ShowInfoMessage("First Name and Last Name can only contain letters, dashes, apostrophes, grave accents, spaces and periods.");
                        }
                    }
                }
            }
        }
    }