410 lines
13 KiB
C#
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|