protected void Page_Load(object sender, EventArgs e)
        {
            Int64 forWorkTeamId = 0;

            if (MercuryApplication == null)
            {
                return;
            }


            if ((!MercuryApplication.HasEnvironmentPermission(Mercury.Server.EnvironmentPermissions.WorkTeamReview))

                && (!MercuryApplication.HasEnvironmentPermission(Mercury.Server.EnvironmentPermissions.WorkTeamManage)))

            {
                Response.Redirect("/PermissionDenied.aspx", true); return;
            }


            if (!Page.IsPostBack)
            {
                #region Initial Page Load

                if (Request.QueryString["WorkTeamId"] != null)
                {
                    forWorkTeamId = Int64.Parse(Request.QueryString["WorkTeamId"]);
                }

                if (forWorkTeamId != 0)
                {
                    workTeam = MercuryApplication.WorkTeamGet(forWorkTeamId, false);

                    if (workTeam == null)
                    {
                        workTeam = new Mercury.Client.Core.Work.WorkTeam(MercuryApplication);
                    }

                    Page.Title = "WorkTeam - " + workTeam.Name;
                }

                else
                {
                    workTeam = new Mercury.Client.Core.Work.WorkTeam(MercuryApplication);
                }

                environmentAccessReference = MercuryApplication.EnvironmentAccessGetByEnvironmentName(MercuryApplication.Session.EnvironmentName, false);

                InitializeAll();

                Session[SessionCachePrefix + "WorkTeam"] = workTeam;

                Session[SessionCachePrefix + "WorkTeamUnmodified"] = workTeam.Copy();

                Session[SessionCachePrefix + "EnvironmentAccessReference"] = environmentAccessReference;

                #endregion
            } // Initial Page Load

            else   // Postback

            {
                workTeam = (Mercury.Client.Core.Work.WorkTeam)Session[SessionCachePrefix + "WorkTeam"];

                environmentAccessReference = (List <Mercury.Server.Application.EnvironmentAccess>)Session[SessionCachePrefix + "EnvironmentAccessReference"];
            }

            SaveResponseLabel.Text = String.Empty;

            ApplySecurity();


            if (!String.IsNullOrEmpty(workTeam.Name))
            {
                Page.Title = "Work Team - " + workTeam.Name;
            }
            else
            {
                Page.Title = "New Work Team";
            }

            return;
        }
        protected Boolean ApplyChanges()
        {
            Boolean success = false;

            Boolean isModified = false;

            Boolean isValid = false;

            Dictionary <String, String> validationResponse;


            if (MercuryApplication == null)
            {
                return(false);
            }

            Mercury.Client.Core.Work.WorkTeam workTeamUnmodified = (Mercury.Client.Core.Work.WorkTeam)Session[SessionCachePrefix + "WorkTeamUnmodified"];


            workTeam.Name = WorkTeamName.Text;

            workTeam.Description = WorkTeamDescription.Text;

            workTeam.WorkTeamType = (Mercury.Server.Application.WorkTeamType)Convert.ToInt32(WorkTeamType.SelectedValue);

            workTeam.Enabled = WorkTeamEnabled.Checked;

            workTeam.Visible = WorkTeamVisible.Checked;


            if (workTeamUnmodified.Id == 0)
            {
                isModified = true;
            }

            if (!isModified)
            {
                isModified = !workTeam.IsEqual(workTeamUnmodified);
            }

            validationResponse = workTeam.Validate();

            isValid = (validationResponse.Count == 0);



            if ((isModified) && (isValid))
            {
                if (!MercuryApplication.HasEnvironmentPermission(Mercury.Server.EnvironmentPermissions.WorkTeamManage))
                {
                    SaveResponseLabel.Text = "Permission Denied.";

                    return(false);
                }

                success = MercuryApplication.WorkTeamSave(workTeam);

                if (success)
                {
                    workTeam = MercuryApplication.WorkTeamGet(workTeam.Id, false);

                    Session[SessionCachePrefix + "WorkTeam"] = workTeam;

                    Session[SessionCachePrefix + "WorkTeamUnmodified"] = workTeam.Copy();

                    SaveResponseLabel.Text = "Save Successful.";

                    InitializeAll();
                }

                else
                {
                    SaveResponseLabel.Text = "Unable to Save.";

                    if (MercuryApplication.LastException != null)
                    {
                        SaveResponseLabel.Text = SaveResponseLabel.Text + " [" + MercuryApplication.LastException.Message + "]";
                    }

                    success = false;
                }
            }

            else if (!isModified)
            {
                SaveResponseLabel.Text = "No Changes Detected."; success = true;
            }

            else if (!isValid)
            {
                foreach (String validationKey in validationResponse.Keys)
                {
                    SaveResponseLabel.Text = "Invalid [" + validationKey + "]: " + validationResponse[validationKey];

                    break;
                }

                success = false;
            }

            return(success);
        }