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 /// /// Messages from master page /// 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); } }