Beispiel #1
0
        protected void PreviewButton_Click(object sender, EventArgs e)
        {
            // Get the homepage being edited
            Homepage homepage = Homepage.Get(HomepageId);

            // Create a copy if the homepage is published
            if (homepage.IsPublished)
            {
                homepage = HomepageManager.GetCopy(homepage);
            }

            // List of images
            IList <BinaryFile> imageList = new List <BinaryFile>();

            // Get the homepage and images
            GetHomepageAndImages(ref homepage, ref imageList);

            try
            {
                HomepageManager.PreviewHomepage(CurrentUser, homepage, imageList);
                MessageLabel1.SetSuccessMessage("Homepage preview created successfully.");
                DisplayHomepage(homepage);

                string script = "window.open('" + ResolveUrl("~/Default.aspx?HideBumper=1&PreviewHomepageId=") + homepage.HomepageId + "', 'HomepagePreview');";
                Page.ClientScript.RegisterStartupScript(GetType(), "PreviewHomepageScript", script, true);
            }
            catch (InvalidHomepageException ihex)
            {
                MessageLabel1.SetErrorMessage("the following errors occured:", ihex.Errors);
            }
        }
Beispiel #2
0
        protected void AssetFilePathsDataGrid_OnItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "add")
            {
                try
                {
                    TextBox NewFilePathTextBox = (TextBox)e.Item.FindControl("NewFilePathTextBox");
                    string  path = NewFilePathTextBox.Text;

                    AssetFilePathManager.CreateNew(path);
                    AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.AddFilepath, string.Format("Added file path: {0}", path));

                    MessageLabel1.SetSuccessMessage("Asset file path added successfully");

                    BindList();
                }
                catch (InvalidAssetFilePathException iafpex)
                {
                    ErrorList errors = iafpex.Errors;

                    if (errors.Count == 1)
                    {
                        MessageLabel1.SetErrorMessage(errors[0].ToString());
                    }
                    else
                    {
                        MessageLabel1.SetErrorMessage("Unable to add new file path", errors);
                    }
                }
            }
        }
Beispiel #3
0
        protected void UpdateAccountExpiryDateLinkButton_Click(object sender, EventArgs e)
        {
            // Get the user
            int  userId = GetRequiredQueryStringParameter("UserId", "UserList.aspx");
            User user   = Data.User.Get(userId);

            // Get the expiry date
            DateTime expiryDate = user.GetAccountExpiryDate();

            // Update it, if the user has an expiry date (ie. is non expiring)
            if (expiryDate < DateTime.MaxValue)
            {
                DateTime dt            = (expiryDate < DateTime.Now) ? DateTime.Now : expiryDate;
                DateTime newExpiryDate = dt.AddDays(UserManager.AccountExpiryDays);

                // Also approve user
                user.UserStatus = UserStatus.Approved;

                // Update user
                user.AccountExpiryDate = newExpiryDate;
                Data.User.Update(user);

                // Update UI
                DisplayUserAccountExpiryDate(user);
                MessageLabel1.SetSuccessMessage(string.Format("account expiry date updated to: {0}", newExpiryDate.ToString(Global.DateTimeFormat)));

                // Update audit log
                AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.ModifyUser, string.Format("Updated {0}'s (Userid: {1}) account expiry date to: {2}", user.FullName, user.UserId, newExpiryDate.ToString("dd MMM yyyy HH:mm")));
            }
            else
            {
                MessageLabel1.SetErrorMessage("account never expires, expiry date not updated");
            }
        }
Beispiel #4
0
        private void UpdateMetadata(int metadataId)
        {
            try
            {
                string name      = NameTextBox.Text;
                string reference = ExternalRefTextBox.Text;
                string synonyms  = SynonymsTextBox.Text;

                MetadataManager.Update(metadataId, name, reference, synonyms, CurrentUser);
                MessageLabel1.SetSuccessMessage("Metadata updated successfully");
            }
            catch (BaseEntityException <Metadata> ex)
            {
                if (ex.Errors.Count > 0)
                {
                    MessageLabel1.SetErrorMessage("Unable to update metadata; The following errors occured:", ex.Errors);
                }
                else
                {
                    MessageLabel1.SetErrorMessage(ex.Message);
                }
            }
            catch (Exception ex)
            {
                m_Logger.Fatal(string.Format("Error editing metadata with id: {0}", metadataId), ex);
                MessageLabel1.SetErrorMessage("An unhandled error occured", ex.ToString());
            }
        }
Beispiel #5
0
        protected void UpdateDefaultButton_Click(object sender, EventArgs e)
        {
            foreach (DataGridItem dgi in AssetFilePathsDataGrid.Items)
            {
                HiddenField AssetFilePathIdHiddenField = (HiddenField)dgi.FindControl("AssetFilePathIdHiddenField");
                RadioButton IsDefaultRadioButton       = (RadioButton)dgi.FindControl("IsDefaultRadioButton");

                if (IsDefaultRadioButton.Checked)
                {
                    int assetFilePathId = NumericUtils.ParseInt32(AssetFilePathIdHiddenField.Value, 0);

                    try
                    {
                        AssetFilePathManager.SetDefault(assetFilePathId);
                        AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.ChangeDefaultFilepath, string.Format("Changed default file path to AssetFilePathId: {0}", assetFilePathId));

                        MessageLabel1.SetSuccessMessage("Default asset file path updated successfully");
                    }
                    catch (InvalidAssetFilePathException ifpx)
                    {
                        MessageLabel1.SetErrorMessage("Unable to change default path", ifpx.Errors);
                    }

                    break;
                }
            }
        }
        protected override void Grid_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "add")
            {
                TextBox           NameTextBox        = (TextBox)e.Item.FindControl("NewNameTextBox");
                BrandCheckBoxList BrandsCheckBoxList = (BrandCheckBoxList)e.Item.FindControl("NewBrandsCheckBoxList");
                TextBox           DomainTextBox      = (TextBox)e.Item.FindControl("NewDomainTextBox");
                CheckBox          InternalCheckBox   = (CheckBox)e.Item.FindControl("NewInternalCheckBox");

                try
                {
                    Company company = Company.New();

                    company.Name            = NameTextBox.Text;
                    company.Domain          = DomainTextBox.Text;
                    company.IsInternal      = InternalCheckBox.Checked;
                    company.CreateDate      = DateTime.Now;
                    company.CreatedByUserId = CurrentUser.UserId.GetValueOrDefault();

                    AddBrandsToCompany(company, BrandsCheckBoxList);

                    CompanyManager.SaveCompany(company);

                    AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.AddCompany, string.Format("Added Approved Company: {0}, CompanyId: {1}", company.Name, company.CompanyId));

                    ResetGridState();
                    MessageLabel1.SetSuccessMessage("Company added successfully");
                }
                catch (InvalidCompanyException iacex)
                {
                    MessageLabel1.SetErrorMessage("Unable to add company", iacex.Errors);
                }
            }
        }
Beispiel #7
0
        private void CreateMetadata(int parentId)
        {
            try
            {
                string name      = NameTextBox.Text;
                string reference = ExternalRefTextBox.Text;
                string synonyms  = SynonymsTextBox.Text;

                Metadata o = MetadataManager.Add(name, parentId, BrandId, GroupNumber, reference, synonyms, CurrentUser);

                MetadataIdTextBox.Value = o.MetadataId.ToString();
                MessageLabel1.SetSuccessMessage("metadata created successfully");
            }
            catch (BaseEntityException <Metadata> ex)
            {
                if (ex.Errors.Count > 0)
                {
                    MessageLabel1.SetErrorMessage("Unable to create metadata; The following errors occured:", ex.Errors);
                }
                else
                {
                    MessageLabel1.SetErrorMessage(ex.Message);
                }
            }
            catch (Exception ex)
            {
                m_Logger.Fatal(string.Format("Error creating metadata with parent id: {0}", parentId), ex);
                MessageLabel1.SetErrorMessage("An unhandled error occured", ex.ToString());
            }
        }
        protected override void Grid_UpdateCommand(object source, DataGridCommandEventArgs e)
        {
            int               id                 = Convert.ToInt32(e.CommandArgument);
            TextBox           NameTextBox        = (TextBox)e.Item.FindControl("NameTextBox");
            BrandCheckBoxList BrandsCheckBoxList = (BrandCheckBoxList)e.Item.FindControl("BrandsCheckBoxList");
            TextBox           DomainTextBox      = (TextBox)e.Item.FindControl("DomainTextBox");
            CheckBox          InternalCheckBox   = (CheckBox)e.Item.FindControl("InternalCheckBox");

            try
            {
                Company company = Company.Get(id);

                company.Name       = NameTextBox.Text;
                company.Domain     = DomainTextBox.Text;
                company.IsInternal = InternalCheckBox.Checked;

                AddBrandsToCompany(company, BrandsCheckBoxList);

                CompanyManager.SaveCompany(company);

                AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.ModifyCompany, string.Format("Modified Approved Company: {0}, CompanyId: {1}", company.Name, company.CompanyId));

                ResetGridState();
                MessageLabel1.SetSuccessMessage("Company updated successfully");
            }
            catch (InvalidCompanyException iacex)
            {
                MessageLabel1.SetErrorMessage("Unable to save company", iacex.Message);
            }
        }
        protected override void Grid_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "add")
            {
                TextBox  NewNameTextBox       = (TextBox)e.Item.FindControl("NewNameTextBox");
                CheckBox NewIsVisibleCheckBox = (CheckBox)e.Item.FindControl("NewIsVisibleCheckBox");

                try
                {
                    AssetType assetType = AssetType.New();
                    assetType.Name      = NewNameTextBox.Text.Trim();
                    assetType.IsVisible = NewIsVisibleCheckBox.Checked;
                    AssetTypeManager.SaveAssetType(assetType);

                    AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.AddAssetType, string.Format("Added Asset Type: {0}, AssetTypeId: {1}", assetType.Name, assetType.AssetTypeId));

                    ResetGridState();
                    MessageLabel1.SetSuccessMessage("Asset type added successfully");
                }
                catch (InvalidAssetTypeException imtex)
                {
                    MessageLabel1.SetErrorMessage("Unable to add asset type", imtex.Errors);
                    BindGrid(CurrentPage);
                }
            }
        }
        protected void AddToWorkflowButton_Click(object sender, EventArgs e)
        {
            if (AllUsersListBox.SelectedIndex == -1)
            {
                MessageLabel1.SetErrorMessage("No user selected");
                return;
            }

            List <ListItem> selectedItems = new List <ListItem>();

            foreach (ListItem li in AllUsersListBox.Items)
            {
                if (li.Selected)
                {
                    if (SelectedUsersListBox.Items.FindByValue(li.Value) != null)
                    {
                        MessageLabel1.SetErrorMessage("One or more selected users are already in workflow");
                        return;
                    }

                    selectedItems.Add(li);
                }
            }

            foreach (ListItem li in selectedItems)
            {
                li.Selected = false;
                SelectedUsersListBox.Items.Insert(SelectedUsersListBox.Items.Count, li);
            }

            DeselectAllUsers();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                int  userId = GetRequiredQueryStringParameter("userId", "UserList.aspx");
                User user   = Data.User.Get(userId);

                if (user.UserStatusId != Convert.ToInt32(UserStatus.PendingAdminApproval))
                {
                    MessageLabel1.SetErrorMessage("User has already been processed");
                    MessageLabel1.Pinned = true;
                    ActionPanel.Visible  = false;
                    SubmitButton.Visible = false;
                    ChangeCancelButton();
                }

                FirstNameLabel.Text = user.FirstName;
                LastNameLabel.Text  = user.LastName;
                EmailAddressHyperLink.EmailAddress = user.Email;
                CompanyLabel.Text      = user.CompanyName;
                CountryLabel.Text      = user.Country.Name;
                PhoneNumberLabel.Text  = user.PhoneNumber;
                MobileNumberLabel.Text = user.MobileNumber;
                NotesTextBox.Text      = user.Notes;
            }
        }
Beispiel #12
0
        protected void EmulateUserButton_Click(object sender, EventArgs e)
        {
            int userId = WebUtils.GetIntRequestParam("UserId", 0);

            User currentUser  = CurrentUser;
            User emulatedUser = Data.User.Get(userId);

            if (emulatedUser.IsNull)
            {
                MessageLabel1.SetErrorMessage("User not found");
                return;
            }

            //renew session api token if user not currently active
            if (!UserManager.APISessionIsValid(emulatedUser))
            {
                UserManager.RenewSessionAPIToken(emulatedUser);
            }

            m_Logger.DebugFormat("User: {0} emulating: {1}, user id: {2}", CurrentUser.FullName, emulatedUser.FullName, emulatedUser.UserId);

            AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.UserLogin, string.Format("Emulating: {0}", emulatedUser.FullName));

            SessionInfo.Current.User = emulatedUser;
            SessionInfo.Current.UserSessionInfo.Reset();
            SessionInfo.Current.AdminSessionInfo.Reset();

            Login.SetupSessionForCurrentSessionUser();

            AuditLogManager.LogUserAction(emulatedUser, AuditUserAction.UserLogin, string.Format("User being emulated by {0}", currentUser.FullName));

            Response.Redirect("~/Default.aspx");
        }
Beispiel #13
0
        protected void PublishButton_Click(object sender, EventArgs e)
        {
            // Get the homepage being edited
            Homepage homepage = Homepage.Get(HomepageId);

            // If the homepage being edited is not for the brand being edited
            // then create a copy of it, which will become the brand homepage.
            if (homepage.BrandId != EditingBrandId)
            {
                homepage = HomepageManager.GetCopy(homepage);
            }

            // List of images
            IList <BinaryFile> imageList = new List <BinaryFile>();

            // Get the homepage and images
            GetHomepageAndImages(ref homepage, ref imageList);

            try
            {
                HomepageManager.PublishHomepage(CurrentUser, homepage, imageList);
                MessageLabel1.SetSuccessMessage("Homepage published successfully");
                DisplayHomepage(homepage);
            }
            catch (InvalidHomepageException ihex)
            {
                MessageLabel1.SetErrorMessage("the following errors occured:", ihex.Errors);
            }
        }
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!Settings.IpAddressRestrictionEnabled)
     {
         MessageLabel1.SetErrorMessage("IP Address restrictions are currently disabled. Changes to IP addresses will not take effect until this is re-enabled. This can be done by editing the configuration file.");
         MessageLabel1.Pinned = true;
     }
 }
Beispiel #15
0
 protected void PasswordReminderButton_Click(object sender, EventArgs e)
 {
     try
     {
         UserManager.ResetPasswordAndSend(GetEmailAddress());
         MessageLabel1.SetSuccessMessage("A new password has been emailed to you.");
     }
     catch (InvalidUserException iuex)
     {
         MessageLabel1.SetErrorMessage(iuex.Message);
     }
 }
        protected void BulkChangePermissionsButton_Click(object sender, EventArgs e)
        {
            List <int> selectedIdList = GetSelectedAssetIdList();

            if (selectedIdList.Count == 0)
            {
                MessageLabel1.SetErrorMessage("No assets selected");
                return;
            }

            Session["BulkAction_AssetIdList"] = selectedIdList;
            Response.Redirect("AssetsBulkChangePermissions.aspx");
        }
        private void RedirectToActionPage(string page)
        {
            List <int> selectedIdList = GetSelectedAssetIdList();

            if (selectedIdList.Count == 0)
            {
                MessageLabel1.SetErrorMessage("No assets selected");
                return;
            }

            Session["BulkAction_AssetIdList"] = selectedIdList;
            Response.Redirect(page);
        }
        protected void RemoveFromWorkflowButton_Click(object sender, EventArgs e)
        {
            if (SelectedUsersListBox.SelectedIndex == -1)
            {
                MessageLabel1.SetErrorMessage("No user selected");
                return;
            }

            while (SelectedUsersListBox.SelectedIndex > -1)
            {
                SelectedUsersListBox.Items.RemoveAt(SelectedUsersListBox.SelectedIndex);
            }

            DeselectAllUsers();
        }
        protected void CreateWorkflowFromBrandButton_Click(object sender, EventArgs e)
        {
            if (BrandDropDownList.SelectedId <= 0)
            {
                MessageLabel1.SetErrorMessage("Please select a brand");
                return;
            }

            int   brandId = BrandDropDownList.SelectedId;
            Brand brand   = Brand.Get(brandId);

            if (brand.IsNull)
            {
                MessageLabel1.SetErrorMessage("Invalid brand");
                return;
            }

            // Remove old items
            SelectedUsersListBox.Items.Clear();

            // New workflow will have same name as brand
            WorkflowNameTextBox.Text = brand.Name;

            // First get superadmin
            User firstSuperAdmin = GetFirstUser(UserRole.SuperAdministrator, 0);

            // first BU Admin
            User firstBrandAdmin = GetFirstUser(UserRole.BrandAdministrator, brandId);

            // Add super admin to listbox
            if (!firstSuperAdmin.IsNull)
            {
                AddUserToListBox(firstSuperAdmin, SelectedUsersListBox);
            }

            // Add BU Admin to listbox
            if (!firstBrandAdmin.IsNull)
            {
                AddUserToListBox(firstBrandAdmin, SelectedUsersListBox);
            }

            // Deselect the brand
            BrandDropDownList.SelectedIndex = -1;

            // Show feedback
            MessageLabel1.SetSuccessMessage("Default workflow created for brand.  Add or remove users, or press 'Save' to finish.");
        }
        protected void MoveUpButton_Click(object sender, EventArgs e)
        {
            if (SelectedUsersListBox.SelectedIndex == -1)
            {
                MessageLabel1.SetErrorMessage("No user selected");
                return;
            }

            if (SelectedUsersListBox.SelectedIndex == 0)
            {
                MessageLabel1.SetErrorMessage("The first user in the list cannot be moved up");
                return;
            }

            SelectedUsersListBox.Items.Insert(SelectedUsersListBox.SelectedIndex + 1, SelectedUsersListBox.Items[SelectedUsersListBox.SelectedIndex - 1]);
            SelectedUsersListBox.Items.RemoveAt(SelectedUsersListBox.SelectedIndex - 1);
        }
Beispiel #21
0
        private bool PageIsValid(BinaryFile file)
        {
            ErrorList errors = new ErrorList();

            if (file.IsEmpty)
            {
                errors.Add("No file uploaded");
            }

            if (errors.Count > 0)
            {
                MessageLabel1.SetErrorMessage("Error uploading asset(s)", errors);
                return(false);
            }

            return(true);
        }
        protected void MoveDownButton_Click(object sender, EventArgs e)
        {
            if (SelectedUsersListBox.SelectedIndex == -1)
            {
                MessageLabel1.SetErrorMessage("No user selected");
                return;
            }

            if (SelectedUsersListBox.SelectedIndex == SelectedUsersListBox.Items.Count - 1)
            {
                MessageLabel1.SetErrorMessage("The last user in the list cannot be moved down");
                return;
            }

            SelectedUsersListBox.Items.Insert(SelectedUsersListBox.SelectedIndex, SelectedUsersListBox.Items[SelectedUsersListBox.SelectedIndex + 1]);
            SelectedUsersListBox.Items.RemoveAt(SelectedUsersListBox.SelectedIndex + 1);
        }
Beispiel #23
0
        protected void SourceCategoryDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            AssetFinder finder = new AssetFinder();

            finder.CategoryIdList.Add(SourceCategoryDropDownList.SelectedId);
            List <Asset> assets = Asset.FindMany(finder);

            if (assets.Count == 0)
            {
                MessageLabel1.SetErrorMessage("The selected category does not have any assets");
                return;
            }

            var assetIdList = (from a in assets
                               select a.AssetId.GetValueOrDefault()).ToList();

            BindToList(assetIdList);
        }
        protected override void Grid_DeleteCommand(object source, DataGridCommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandArgument);

            try
            {
                CompanyManager.DeleteCompany(id);

                AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.DeleteCompany, string.Format("Deleted Company with CompanyId: {0}", id));
                MessageLabel1.SetSuccessMessage("Company deleted successfully");

                BindGrid(CurrentPage);
            }
            catch (Exception ex)
            {
                MessageLabel1.SetErrorMessage("Error deleting company: " + ex.Message);
            }
        }
        protected void BulkDeleteButton_Click(object sender, EventArgs e)
        {
            List <int> selectedIdList = GetSelectedAssetIdList();

            if (selectedIdList.Count == 0)
            {
                MessageLabel1.SetErrorMessage("No assets selected");
                return;
            }

            if (selectedIdList.Count >= Settings.MaxBulkDeleteAllowed)
            {
                MessageLabel1.SetErrorMessage(string.Format("Only a maximum of {0} assets can be selected for deletion at one time", Settings.MaxBulkDeleteAllowed));
                return;
            }

            Session["BulkAction_AssetIdList"] = selectedIdList;
            Response.Redirect("AssetsBulkDelete.aspx");
        }
        protected override void Grid_DeleteCommand(object source, DataGridCommandEventArgs e)
        {
            try
            {
                int       assetTypeId = Convert.ToInt32(e.CommandArgument);
                AssetType assetType   = AssetTypeCache.Instance.GetById(assetTypeId);

                AssetTypeManager.DeleteAssetType(assetTypeId);
                AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.DeleteAssetType, string.Format("Deleted Asset Type: {0}, AssetTypeId: {1}", assetType.Name, assetTypeId));

                MessageLabel1.SetSuccessMessage("Asset type deleted successfully");
            }
            catch (SystemException sysex)
            {
                MessageLabel1.SetErrorMessage(sysex.Message);
            }

            BindGrid(CurrentPage);
        }
        protected override void Grid_UpdateCommand(object source, DataGridCommandEventArgs e)
        {
            TextBox EntityTextBox = (TextBox)e.Item.FindControl("EntityTextBox");
            int     id            = Convert.ToInt32(e.CommandArgument);

            try
            {
                string ipAddress = EntityTextBox.Text;

                IpAddressManager.Update(id, ipAddress);
                AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.ModifyIpAddress, string.Format("Modified Ip Address: {0}, IpAddressId: {1}", id, ipAddress));

                ResetGridState();
                MessageLabel1.SetSuccessMessage("IP Address updated successfully");
            }
            catch (InvalidIpAddressException ex)
            {
                MessageLabel1.SetErrorMessage(ex.Message);
            }
        }
Beispiel #28
0
        private AssetTypeFileExtension SaveATFE()
        {
            AssetTypeFileExtension atfe = GetATFEFromForm();
            BinaryFile             file = new BinaryFile(IconFileUpload.PostedFile);

            try
            {
                AssetTypeFileExtensionManager.Save(atfe, file);
                FormPanel.Visible    = false;
                SuccessPanel.Visible = true;

                return(atfe);
            }
            catch (AssetTypeFileExtensionException ex)
            {
                MessageLabel1.SetErrorMessage("Error saving file extension", ex.Errors);
            }

            return(AssetTypeFileExtension.Empty);
        }
        protected override void Grid_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "add")
            {
                TextBox NewEntityTextBox = (TextBox)e.Item.FindControl("NewEntityTextBox");
                string  ipAddress        = NewEntityTextBox.Text.Trim();

                try
                {
                    IpAddress ipa = IpAddressManager.Add(ipAddress);
                    AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.AddIpAddress, string.Format("Added Ip Address: {0}, IpAddressId: {1}", ipa.IpAddressValue, ipa.IpAddressId));

                    ResetGridState();
                    MessageLabel1.SetSuccessMessage("IP Address added successfully");
                }
                catch (InvalidIpAddressException ex)
                {
                    MessageLabel1.SetErrorMessage(ex.Message);
                }
            }
        }
        protected void SaveButton_Click(object sender, EventArgs e)
        {
            Workflow.BrandId = WorkflowBrandDropDownList.SelectedId;
            Workflow.Name    = WorkflowNameTextBox.Text;

            Workflow.WorkflowUserList.Clear();

            int position = 0;

            foreach (ListItem li in SelectedUsersListBox.Items)
            {
                position++;

                int userId = Convert.ToInt32(li.Value);

                WorkflowUser wfu = WorkflowUser.New();
                wfu.UserId    = userId;
                wfu.Position  = position;
                wfu.DateAdded = DateTime.Now;

                Workflow.WorkflowUserList.Add(wfu);
            }

            try
            {
                WorkflowManager.SaveWorkflow(Workflow);
                MessageLabel1.SetSuccessMessage("Workflow saved successfully");

                CancelButton.Text   = "Back to workflow list";
                CancelButton.Prompt = string.Empty;

                DeselectAllUsers();
            }
            catch (ValidationException vex)
            {
                MessageLabel1.SetErrorMessage("Error saving workflow", vex.Errors);
            }
        }