using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.GlobalHelper;
using CMS.ProjectManagement;
using CMS.UIControls;
using CMS.ExtendedControls;
public partial class CMSModules_ProjectManagement_Controls_UI_Projectstatus_Edit : CMSAdminEditControl
{
#region "Variables"
private ProjectStatusInfo mProjectstatusObj = null;
private int mProjectstatusId = 0;
#endregion
#region "Properties"
///
/// Messages placeholder
///
public override MessagesPlaceHolder MessagesPlaceHolder
{
get
{
return plcMess;
}
}
///
/// Indicates if control is used on live site
///
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
base.IsLiveSite = value;
plcMess.IsLiveSite = value;
}
}
///
/// Projectstatus data.
///
public ProjectStatusInfo ProjectstatusObj
{
get
{
if (mProjectstatusObj == null)
{
mProjectstatusObj = ProjectStatusInfoProvider.GetProjectStatusInfo(StatusID);
}
return mProjectstatusObj;
}
set
{
mProjectstatusObj = value;
if (value != null)
{
mProjectstatusId = value.StatusID;
}
else
{
mProjectstatusId = 0;
}
}
}
///
/// Projectstatus ID.
///
public int StatusID
{
get
{
return mProjectstatusId;
}
set
{
mProjectstatusId = value;
mProjectstatusObj = null;
}
}
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.MANAGE_CONFIGURATION);
if (StopProcessing)
{
return;
}
SetupControls();
// Set edited object
if (StatusID > 0)
{
EditedObject = ProjectstatusObj;
}
// Load the form data
if (!URLHelper.IsPostback())
{
LoadData();
}
}
protected void btnOk_Click(object sender, EventArgs e)
{
// Validate and save the data
Process();
}
#endregion
#region "Private methods"
///
/// Initializes form controls.
///
private void SetupControls()
{
// Button
btnOk.Text = GetString("general.ok");
// Validators
rfvStatusDisplayName.ErrorMessage = GetString("general.requiresdisplayname");
rfvStatusName.ErrorMessage = GetString("general.requirescodename");
// Display 'Changes were saved' message if required
if (QueryHelper.GetBoolean("saved", false) && !URLHelper.IsPostback())
{
ShowChangesSaved();
}
colorPicker.SupportFolder = URLHelper.ResolveUrl("~/CMSAdminControls/ColorPicker");
}
///
/// Loads the data into the form.
///
private void LoadData()
{
// Load the form from the info object
if (ProjectstatusObj != null)
{
txtStatusName.Text = ProjectstatusObj.StatusName;
txtStatusDisplayName.Text = ProjectstatusObj.StatusDisplayName;
colorPicker.SelectedColor = ProjectstatusObj.StatusColor;
txtStatusIcon.Text = ProjectstatusObj.StatusIcon;
chkStatusIsFinished.Checked = ProjectstatusObj.StatusIsFinished;
chkStatusIsNotStarted.Checked = ProjectstatusObj.StatusIsNotStarted;
chkStatusEnabled.Checked = ProjectstatusObj.StatusEnabled;
}
}
///
// Processes the form - saves the data.
///
private void Process()
{
// Validate the form
if (Validate())
{
// Ensure the info object
if (ProjectstatusObj == null)
{
ProjectstatusObj = new ProjectStatusInfo();
ProjectstatusObj.StatusOrder = ProjectStatusInfoProvider.GetStatusCount(false) + 1;
}
// Initialize object
ProjectstatusObj.StatusName = txtStatusName.Text.Trim();
ProjectstatusObj.StatusDisplayName = txtStatusDisplayName.Text.Trim();
ProjectstatusObj.StatusColor = colorPicker.SelectedColor;
ProjectstatusObj.StatusIcon = txtStatusIcon.Text.Trim();
ProjectstatusObj.StatusIsFinished = chkStatusIsFinished.Checked;
ProjectstatusObj.StatusIsNotStarted = chkStatusIsNotStarted.Checked;
ProjectstatusObj.StatusEnabled = chkStatusEnabled.Checked;
// Save object data to database
ProjectStatusInfoProvider.SetProjectStatusInfo(ProjectstatusObj);
ItemID = ProjectstatusObj.StatusID;
RaiseOnSaved();
// Show confirmation
ShowChangesSaved();
}
}
///
/// Validates the form. If validation succeeds returns true, otherwise returns false.
///
private bool Validate()
{
string codename = txtStatusName.Text.Trim();
// Validate required fields
string errorMessage = new Validator()
.NotEmpty(txtStatusDisplayName.Text.Trim(), rfvStatusDisplayName.ErrorMessage)
.NotEmpty(codename, rfvStatusName.ErrorMessage)
.IsCodeName(codename, GetString("general.invalidcodename")).Result;
// Check the uniqueness of the codename
ProjectStatusInfo psi = ProjectStatusInfoProvider.GetProjectStatusInfo(codename);
if ((psi != null) && (psi.StatusID != StatusID))
{
errorMessage = GetString("general.codenameexists");
}
// Give error if status is both: started and finished
if (chkStatusIsFinished.Checked && chkStatusIsNotStarted.Checked)
{
errorMessage = GetString("pm.projectstatus.startandfinish");
}
// Set the error message
if (!String.IsNullOrEmpty(errorMessage))
{
ShowError(errorMessage);
return false;
}
return true;
}
#endregion
}