Files
ayanova7/source/WBI/ScheduleMarkerEdit.aspx.cs
2018-06-29 19:47:36 +00:00

410 lines
13 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GZTW.AyaNova.BLL;
using Telerik.Web.UI;
public partial class ScheduleMarkerEdit : BaseEditPage
{
#region BizObject
public ScheduleMarker mScheduleMarker;
protected ScheduleMarker CurrentScheduleMarker
{
get
{
if (mScheduleMarker != null) return mScheduleMarker;
string idstring = Request.QueryString["id"];
Guid oID = Guid.Empty;
if (!string.IsNullOrEmpty(idstring))
oID = new Guid(idstring);
mScheduleMarker = (ScheduleMarker)Session["schedulemarker"];
//ensure if object in session is the same as the one requested
if (mScheduleMarker != null && (oID != Guid.Empty && mScheduleMarker.ID != oID))//Case 912
mScheduleMarker = null;
if (mScheduleMarker == null)
{
//Might be in the Cache if created from followupselector form
mScheduleMarker = (ScheduleMarker)Cache["schedulemarker" + idstring];
if (mScheduleMarker != null)
{
//ok, found it in the Cache so xfer it to session
Session["schedulemarker"] = mScheduleMarker;
Cache.Remove("schedulemarker" + idstring);
}
}
if (mScheduleMarker == null)
{
try
{
if (oID != Guid.Empty)
mScheduleMarker = ScheduleMarker.GetItem(oID);
else
mScheduleMarker = ScheduleMarker.NewItem();
Session["schedulemarker"] = mScheduleMarker;
}
catch (System.Security.SecurityException)
{
CloseMe();
}
}
return mScheduleMarker;
}
}
#endregion
#region Page events
protected void Page_Load(object sender, EventArgs e)
{
if (Util.CurrentUser.IsClientOrHeadOfficeAccount ||
AyaBizUtils.Right("Object.ScheduleMarker") < (int)SecurityLevelTypes.ReadOnly)
{
Util.Denied(Context);
}
////Test case 3569 arabic hijiri exception issue rad calendar
//var culture = new System.Globalization.CultureInfo("ar-SA");
//culture.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
////this.dtStart.Culture = culture;
//this.dtStop.Calendar.CultureInfo = culture;
//this.dtStart.Calendar.CultureInfo = culture;
//this.rc1.CultureInfo = culture;
//Initialize controls on first page load
if (!this.IsPostBack)
{
//Item zero is always the print menu
//Master.Menu.Items[0].Hidden=true;
//Localize the page
Util.Localize(this.Page);
//case 1972
Util.SetDeletable(this.Page, RootObjectTypes.ScheduleMarker);
SetData();
//case 3169
if (AyaBizUtils.Right("Object.ScheduleMarker") < (int)SecurityLevelTypes.ReadWrite)
Util.SetReadOnly(this);
}
}
protected void Page_LoadComplete(object sender, EventArgs e)
{
//Get data logic
if (this.IsPostBack)//Only on a postback
{
//Only if user isn't closing form outright without saving
if (Master.AyMessage == null || Master.AyMessage.Message != "LT:UI.Command.Close")
{
GetData();
}
if (Master.AyMessage != null)
HandleAyMessage();
//Localize the page
Util.Localize(this.Page);
SetData();
}
}
#endregion page events
#region Set / get data
private void SetData()
{
ScheduleMarker o = CurrentScheduleMarker;
if (o.FollowID != Guid.Empty)
{
this.Title = Util.LocaleText("ScheduleMarker.Label.FollowUp");
btnOpenFollowObject.Visible = true;//FIND WAY TO DETERMINE WHERE CAME FROM HERE AND SHOW OR NOT
btnOpenFollowObject.Text = NameFetcher.GetItem(new TypeAndID(mScheduleMarker.FollowType, mScheduleMarker.FollowID)).RecordName;
}
else
this.Title = Util.LocaleText("O.ScheduleMarker");
FillSourceList();
SetSelectedValue();
edName.Text = o.Name;
dtStart.DbSelectedDate = o.StartDate;
dtStop.DbSelectedDate = o.StopDate;
edNotes.Text = o.Notes;
cp.SetPreselectedColor("________", o.ARGB);
//case 1968
ckCompleted.Checked = o.Completed;
}
private void GetData()
{
ScheduleMarker o = CurrentScheduleMarker;
GetSelectedValue(o);
o.Name = edName.Text;
o.Notes = edNotes.Text;
o.StartDate = dtStart.DbSelectedDate;
o.StopDate = dtStop.DbSelectedDate;
o.ARGB = Util.ParseInt(cp.SelectedValue);
o.Completed = ckCompleted.Checked;//case 1968
}
#endregion
#region Populate combo
private void FillSourceList()
{
DataTable dt = null;
if (CurrentScheduleMarker.FollowID == Guid.Empty)
{
AddItem(Util.LocaleText("O.Global"), "GLOBAL," + ScheduleMarker.ScheduleMarkerGlobalSourceID.ToString());
#region Regional
if (CurrentScheduleMarker.ScheduleMarkerSourceType == ScheduleMarkerSourceTypes.Regional)
dt = Util.GetDataBiz("Region", CurrentScheduleMarker.SourceID, true, Guid.Empty, null, false);
else
dt = Util.GetDataBiz("Region", Guid.Empty, true, Guid.Empty, null, false);
foreach (DataRow dr in dt.Rows)
{
AddItem(Util.LocaleText("O.Region") + " - " + dr["Display"].ToString(), "REGION," + dr["Value"].ToString());
}
#endregion regional
}
#region Scheduleable users
if (CurrentScheduleMarker.ScheduleMarkerSourceType == ScheduleMarkerSourceTypes.User)
dt = Util.GetDataBiz("UserPickListScheduleable", CurrentScheduleMarker.SourceID, true, Guid.Empty, null, true);
else
dt = Util.GetDataBiz("UserPickListScheduleable", Guid.Empty, true, Guid.Empty, null, true);
foreach (DataRow dr in dt.Rows)
{
AddItem(Util.LocaleText("O.User") + " - " + dr["Display"].ToString(), "USER," + dr["Value"].ToString());
}
#endregion Scheduleable users
if (CurrentScheduleMarker.FollowID == Guid.Empty)
{
#region DispatchZone
if (CurrentScheduleMarker.ScheduleMarkerSourceType == ScheduleMarkerSourceTypes.DispatchZone)
dt = Util.GetDataBiz("DispatchZone", CurrentScheduleMarker.SourceID, true, Guid.Empty, null, true);
else
dt = Util.GetDataBiz("DispatchZone", Guid.Empty, true, Guid.Empty, null, true);
foreach (DataRow dr in dt.Rows)
{
AddItem(Util.LocaleText("O.DispatchZone") + " - " + dr["Display"].ToString(), "ZONE," + dr["Value"].ToString());
}
#endregion DispatchZone
#region ScheduleableUserGroup
if (CurrentScheduleMarker.ScheduleMarkerSourceType == ScheduleMarkerSourceTypes.ScheduleableUserGroup)
dt = Util.GetDataBiz("ScheduleableUserGroupPickList", CurrentScheduleMarker.SourceID, true, Guid.Empty, null, false);
else
dt = Util.GetDataBiz("ScheduleableUserGroupPickList", Guid.Empty, true, Guid.Empty, null, false);
foreach (DataRow dr in dt.Rows)
{
AddItem(Util.LocaleText("O.ScheduleableUserGroup") + " - " + dr["Display"].ToString(), "GROUP," + dr["Value"].ToString());
}
#endregion ScheduleableUserGroup
}
}
private void SetSelectedValue()
{
string type = "";
switch (CurrentScheduleMarker.ScheduleMarkerSourceType)
{
case ScheduleMarkerSourceTypes.Global:
type = "GLOBAL,";
break;
case ScheduleMarkerSourceTypes.DispatchZone:
type = "ZONE,";
break;
case ScheduleMarkerSourceTypes.Regional:
type = "REGION,";
break;
case ScheduleMarkerSourceTypes.ScheduleableUserGroup:
type = "GROUP,";
break;
case ScheduleMarkerSourceTypes.User:
type = "USER,";
break;
}
//case 1596
RadComboBoxItem i = new RadComboBoxItem(" ", type + CurrentScheduleMarker.SourceID.ToString());
foreach (RadComboBoxItem rcbi in cbSource.Items)
{
if (rcbi.Value == i.Value)
{
cbSource.SelectedIndex = rcbi.Index;
break;
}
}
}
private void GetSelectedValue(ScheduleMarker sm)
{
string[] sval = cbSource.SelectedValue.Split(',');
sm.SourceID = new Guid(sval[1]);
switch (sval[0])
{
case "GLOBAL":
sm.ScheduleMarkerSourceType = ScheduleMarkerSourceTypes.Global;
break;
case "ZONE":
sm.ScheduleMarkerSourceType = ScheduleMarkerSourceTypes.DispatchZone;
break;
case "REGION":
sm.ScheduleMarkerSourceType = ScheduleMarkerSourceTypes.Regional;
break;
case "GROUP":
sm.ScheduleMarkerSourceType = ScheduleMarkerSourceTypes.ScheduleableUserGroup;
break;
case "USER":
sm.ScheduleMarkerSourceType = ScheduleMarkerSourceTypes.User;
break;
}
}
private void AddItem(string Text, string Value)
{
if (Value.IndexOf(Guid.Empty.ToString()) == -1)
cbSource.Items.Add(new Telerik.Web.UI.RadComboBoxItem(Text, Value));
}
#endregion
#region Toolbar and other master page messages
/// <summary>
/// Messages from master page
/// </summary>
void HandleAyMessage()
{
switch (Master.AyMessage.MessageType)
{
case AYMessageType.ToolBarClick:
{
switch (Master.AyMessage.Message)
{
case "LT:UI.Command.Close":
CloseForm();
break;
case "LT:UI.Command.Save":
SaveRecord();
break;
case "LT:UI.Command.SaveClose":
if (SaveRecord())
CloseForm();
break;
case "LT:UI.Command.Delete":
ScheduleMarker.DeleteItem(CurrentScheduleMarker.ID);
CloseForm();
break;
case "LT:UI.Command.SaveNew":
if (SaveRecord())
{
Session.Remove("schedulemarker");
mScheduleMarker = null;
Response.Redirect("ScheduleMarkerEdit.aspx");
}
break;
case "LT:UI.Command.RecordHistory":
Util.PopupAlert(this.Page, Util.RecordHistoryText(
CurrentScheduleMarker.Creator,
CurrentScheduleMarker.Modifier,
CurrentScheduleMarker.Created,
CurrentScheduleMarker.Modified
));
break;
}
}
break;
}
}
private bool SaveRecord()
{
if (!CurrentScheduleMarker.IsDirty) return true;
if (CurrentScheduleMarker.IsSavable)
{
Session["schedulemarker"] = mScheduleMarker = (ScheduleMarker)mScheduleMarker.Save();
this.Master.SetErrors("");
return true;
}
else
{
//display broken rules, or whatever, see book
this.Master.SetErrors(mScheduleMarker.BrokenRulesText);
return false;
}
}
private void CloseForm()
{
Session.Remove("schedulemarker");
CloseMe();
}
#endregion
protected void btnOpenFollowObject_Click(object sender, EventArgs e)
{
Util.OpenEditWindow(this, CurrentScheduleMarker.FollowType, CurrentScheduleMarker.FollowID);
}
}