/// {"primaryKeyId":6, "column":1, "value":"11:21"} public void UpdateGrid(string ContextKey, object[] ChangesArray) { //List<string> fieldName = new List<string>(); MetaGridContextKey gridContextKey = UtilHelper.JsonDeserialize <MetaGridContextKey>(ContextKey); List <MetaObject> changed = new List <MetaObject>(); CHelper.AddToContext("GridUpdated", 1); LoadMetaViewPreference(gridContextKey.ViewName); MetaView CurrentView = GetViewByName(gridContextKey.ViewName); MetaObject[] list = CurrentView.List(mvPref); if (CurrentView.PrimaryGroupBy != null || CurrentView.SecondaryGroupBy == null) { if (CurrentView.SecondaryGroupBy != null) { list = MetaViewGroupUtil.ExcludeCollapsed(MetaViewGroupByType.Secondary, CurrentView.SecondaryGroupBy, CurrentView.PrimaryGroupBy, mvPref, list); } list = MetaViewGroupUtil.ExcludeCollapsed(MetaViewGroupByType.Primary, CurrentView.PrimaryGroupBy, null, mvPref, list); } foreach (Dictionary <string, object> obj in ChangesArray) { int primaryKeyId = Convert.ToInt32(obj["primaryKeyId"]); int columnId = Convert.ToInt32(obj["column"]); string value = Convert.ToString(obj["value"]); MetaObject tmp = GetMetaObjectById(list, primaryKeyId); MetaObject curObject = null; if (tmp != null) { curObject = MetaObjectActivator.CreateInstance(tmp.GetMetaType(), primaryKeyId); } else { continue; } curObject.Properties[GetFieldNameByIndex(columnId)].Value = GetMinutesFromString(value); changed.Add(curObject); } using (TransactionScope tran = DataContext.Current.BeginTransaction()) { foreach (MetaObject changeObj in changed) { changeObj.Save(); } tran.Commit(); } }
public MetaView GetViewByName(string ViewName) { MetaView retVal = null; retVal = Mediachase.Ibn.Data.DataContext.Current.MetaModel.MetaViews[ViewName]; if (retVal == null) { throw new ArgumentException(String.Format("Cant find view with name: {0}", ViewName)); } return(retVal); }
private MetaView GetMetaView() { MetaView currentView = new MetaView(TimeTrackingEntry.GetAssignedMetaClass(), "FinanceProjectReport", string.Empty); foreach (MetaField mf in currentView.MetaClass.Fields) { currentView.AvailableFields.Add(mf); } // Total currentView.TotalGroupBy = new GroupByElement(); currentView.TotalGroupBy.IsPreGroupObjectVisible = false; currentView.TotalGroupBy.IsPostGroupObjectVisible = true; currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Custom, CHelper.GetResFileString("{IbnFramework.Global:_mc_Total}"))); currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("DayT", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("TotalApproved", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("Cost", ValueSourceType.Function, GroupByObjectField.SumFunction)); // PrimaryGroupBy, SecondaryGroupBy if (GroupingList.SelectedValue == GroupingWeekUser) { currentView.PrimaryGroupBy = new GroupByElement("StartDate"); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "StartDate", false)); currentView.SecondaryGroupBy = new GroupByElement("Owner"); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "Owner", false)); } else { currentView.PrimaryGroupBy = new GroupByElement("Owner"); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "Owner", false)); currentView.SecondaryGroupBy = new GroupByElement("StartDate"); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "StartDate", false)); } currentView.PrimaryGroupBy.IsPreGroupObjectVisible = true; currentView.PrimaryGroupBy.IsPostGroupObjectVisible = false; currentView.SecondaryGroupBy.IsPreGroupObjectVisible = true; currentView.SecondaryGroupBy.IsPostGroupObjectVisible = false; currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("DayT", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("TotalApproved", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Cost", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("ParentBlockId", ValueSourceType.Field, "ParentBlockId")); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("DayT", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("TotalApproved", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Cost", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("ParentBlockId", ValueSourceType.Field, "ParentBlockId")); return(currentView); }
/// <summary> /// Creates the default preference. /// </summary> /// <param name="View">The view.</param> public static void CreateDefaultPreference(MetaView View) { McMetaViewPreference pref = new McMetaViewPreference(); pref.MetaView = View; foreach (MetaField field in View.MetaClass.Fields) { pref.SetAttribute(field.Name, McMetaViewPreference.AttrWidth, 150); } pref.Attributes.Set("MarginTop", 10); pref.Attributes.Set("MarginLeft", 10); pref.Attributes.Set("MarginRight", 10); pref.Attributes.Set("MarginBottom", 10); Mediachase.Ibn.Core.UserMetaViewPreference.SaveDefault(pref); }
private McMetaViewPreference CreateDefaultReportPreferenceTimeTracking(MetaView View) { McMetaViewPreference pref = new McMetaViewPreference(); pref.MetaView = View; pref.ShowAllMetaField(); foreach (MetaField field in pref.GetVisibleMetaField()) { if (field.Name != "Title" && field.Name != "TotalApproved" && field.Name != "Rate" && field.Name != "Cost" && field.Name != "DayT") { pref.HideMetaField(field.Name); } else { if (field.Name == "Title") { pref.SetAttribute <int>(field.Name, McMetaViewPreference.AttrIndex, 0); } else if (field.Name == "DayT") { pref.SetAttribute <int>(field.Name, McMetaViewPreference.AttrIndex, 1); } else if (field.Name == "TotalApproved") { pref.SetAttribute <int>(field.Name, McMetaViewPreference.AttrIndex, 2); } else if (field.Name == "Rate") { pref.SetAttribute <int>(field.Name, McMetaViewPreference.AttrIndex, 3); } else { pref.SetAttribute <int>(field.Name, McMetaViewPreference.AttrIndex, 4); } } } pref.Attributes.Set("PageSize", -1); MetaViewGroupUtil.CollapseAll(MetaViewGroupByType.Secondary, pref); return(pref); }
public void Invoke(object Sender, object Element) { if (Element is CommandParameters) { CommandParameters cp = (CommandParameters)Element; if (cp.CommandArguments == null) { return; } DateTime dtStart = DateTime.Parse(cp.CommandArguments["primaryKeyId"], CultureInfo.InvariantCulture); MetaView currentView = DataContext.Current.MetaModel.MetaViews["TT_MyGroupByWeekProject"]; McMetaViewPreference pref = CHelper.GetMetaViewPreference(currentView); pref.SetAttribute <DateTime>("TTFilter_DTCWeek", "TTFilter_DTCWeek", dtStart); Mediachase.Ibn.Core.UserMetaViewPreference.Save(Mediachase.IBN.Business.Security.CurrentUser.UserID, pref); ((System.Web.UI.Control)(Sender)).Page.Response.Redirect("~/Apps/TimeTracking/Pages/Public/ListTimeTrackingNew.aspx?ViewName=TT_MyGroupByWeekProject", true); } }
public ActionResult Edit(Guid?id) { if (id.HasValue) { MetaView obj = MetaViewHelper.Get(id.Value); if (obj == null) { return(MessageHelper.FormedContentObjectNotFound()); } MetaViewModel.CreateMap(); MetaViewModel model = Mapper.Map <MetaView, MetaViewModel>(obj); return(View(model)); } else { return(View(new MetaViewModel())); } }
internal void Load(MetaView metaView) { _metaClassName = metaView.MetaClassName; _availableFieldNames = metaView.AvailableFieldNames; List<string> fieldNames = new List<string>(_availableFieldNames); mcweb_MetaViewPreferenceRow[] preferenceRows = mcweb_MetaViewPreferenceRow.List(FilterElement.EqualElement("MetaViewName", metaView.Name), FilterElement.IsNullElement("PrincipalId")); if(preferenceRows.Length == 0) { preferenceRows = new mcweb_MetaViewPreferenceRow[] { null }; } foreach (mcweb_MetaViewPreferenceRow preferenceRow in preferenceRows) { MetaViewPreferenceInfo preferenceInfo = new MetaViewPreferenceInfo(); preferenceInfo.Load(preferenceRow, fieldNames); _preferences.Add(preferenceInfo); } }
internal void Load(MetaView metaView) { _metaClassName = metaView.MetaClassName; _availableFieldNames = metaView.AvailableFieldNames; List <string> fieldNames = new List <string>(_availableFieldNames); mcweb_MetaViewPreferenceRow[] preferenceRows = mcweb_MetaViewPreferenceRow.List(FilterElement.EqualElement("MetaViewName", metaView.Name), FilterElement.IsNullElement("PrincipalId")); if (preferenceRows.Length == 0) { preferenceRows = new mcweb_MetaViewPreferenceRow[] { null }; } foreach (mcweb_MetaViewPreferenceRow preferenceRow in preferenceRows) { MetaViewPreferenceInfo preferenceInfo = new MetaViewPreferenceInfo(); preferenceInfo.Load(preferenceRow, fieldNames); _preferences.Add(preferenceInfo); } }
/// <summary> /// Gets all meta fields. /// </summary> /// <param name="View">The view.</param> /// <returns></returns> public static List <MetaField> GetAllMetaFields(MetaView View) { List <MetaField> retVal = new List <MetaField>(); foreach (MetaField field in View.MetaClass.Fields) { retVal.Add(field); } if (View.Card != null) { MetaClass mcCard = MetaDataWrapper.GetMetaClassByName(View.Card.Name); foreach (MetaField field in mcCard.Fields) { if (CHelper.CheckCardField(View.MetaClass, field)) { retVal.Add(field); } } } return(retVal); }
public void Invoke(object Sender, object Element) { if (Element is CommandParameters) { CommandParameters cp = (CommandParameters)Element; if (cp.CommandArguments["groupType"] == null || cp.CommandArguments["primaryKeyId"] == null) { throw new ArgumentException("Some expected parameters are null for CollapseExpandBlockTimesheetHandler"); } string ViewName = CHelper.GetFromContext("MetaViewName").ToString(); if (ViewName != null && ViewName != string.Empty) { MetaView CurrentView = Mediachase.Ibn.Data.DataContext.Current.MetaModel.MetaViews[ViewName]; if (CurrentView == null) { throw new ArgumentException(String.Format("Cant find MetaView: {0}", ViewName)); } McMetaViewPreference mvPref = Mediachase.Ibn.Core.UserMetaViewPreference.Load(CurrentView, Mediachase.IBN.Business.Security.CurrentUser.UserID); if (cp.CommandArguments["groupType"] == MetaViewGroupByType.Primary.ToString()) { MetaViewGroupUtil.CollapseOrExpand(MetaViewGroupByType.Primary, mvPref, cp.CommandArguments["primaryKeyId"]); } else { MetaViewGroupUtil.CollapseOrExpand(MetaViewGroupByType.Secondary, mvPref, cp.CommandArguments["primaryKeyId"]); } CHelper.RequireBindGrid(); CHelper.AddToContext("DontShowEditPopup", 1); UserMetaViewPreference.Save(Mediachase.IBN.Business.Security.CurrentUser.UserID, mvPref); } } }
public ActionResult EditExternalMethod(Guid?id, Guid?ViewId) { MetaViewExternalMethodModel model = null; if (id.HasValue) { var att = MetaViewHelper.GetExternalMethod(id.Value); if (att == null) { return(MessageHelper.FormedContentObjectNotFound()); } MetaViewExternalMethodModel.CreateMap(); model = Mapper.Map <MetaViewExternalMethod, MetaViewExternalMethodModel>(att); return(View(model)); } else if (ViewId.HasValue) { MetaView item = MetaViewHelper.Get(ViewId.Value); if (item != null) { return(View(new MetaViewExternalMethodModel { MetaViewId = item.Id, MetaViewCaption = item.Caption, })); } else { return(MessageHelper.FormedContentObjectNotFound()); } } else { return(MessageHelper.FormedContentObjectNotFound()); } }
private void LoadMetaViewPreference(string ContextKey) { MetaView view = GetViewByName(ContextKey); mvPref = Mediachase.Ibn.Core.UserMetaViewPreference.Load(view, Mediachase.Ibn.Data.Services.Security.CurrentUserId); }
private void BindGrid() { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("Total", typeof(string))); dt.Columns.Add(new DataColumn("TotalApproved", typeof(string))); dt.Columns.Add(new DataColumn("Rate", typeof(string))); dt.Columns.Add(new DataColumn("Cost", typeof(string))); MetaView currentView = GetMetaView(); currentView.Filters = GetFilters(); McMetaViewPreference currentPreferences = CreateDefaultReportPreferenceTimeTracking(currentView); MetaObject[] list = currentView.List(currentPreferences); foreach (MetaObject mo in list) { DataRow row = dt.NewRow(); string additionalTitle = string.Empty; string prefix = ""; string postfix = ""; if (cbShowWeekNumber.Checked && mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() != MetaViewGroupByType.Total.ToString()) { DateTime dtNew = DateTime.MinValue; try { dtNew = (DateTime)mo.Properties["Title"].Value; } catch { } if (dtNew != DateTime.MinValue) { additionalTitle = string.Format("(#{0})", Iso8601WeekNumber.GetWeekNumber((DateTime)mo.Properties["Title"].Value)); } } // Primary Grouping if (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Primary.ToString()) { prefix = "<b>"; postfix = "</b>"; if (GroupingList.SelectedValue == GroupingWeekUser) { row["Title"] = String.Format("{0}{1} - {2}{3} {4}", prefix, ((DateTime)mo.Properties["Title"].Value).ToString("d MMM yyyy"), ((DateTime)mo.Properties["Title"].Value).AddDays(6).ToString("d MMM yyyy"), prefix, additionalTitle); } else { row["Title"] = String.Format("{0}{1}{2} {3}", prefix, mo.Properties["Title"].Value.ToString(), postfix, additionalTitle); } } // Secondary Grouping else if (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Secondary.ToString()) { prefix = "<b>"; postfix = "</b>"; if (GroupingList.SelectedValue == GroupingUserWeek) { row["Title"] = String.Format("<div style='padding-left: 25px;'>{0}{1} - {2}{3} {4}</div>", prefix, ((DateTime)mo.Properties["Title"].Value).ToString("d MMM yyyy"), ((DateTime)mo.Properties["Title"].Value).AddDays(6).ToString("d MMM yyyy"), prefix, additionalTitle); } else { row["Title"] = String.Format("<div style='padding-left: 25px;'>{0}{1}{2} {3}</div>", prefix, mo.Properties["Title"].Value.ToString(), postfix, additionalTitle); } } // Total else if (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Total.ToString()) { prefix = "<b>"; postfix = "</b>"; row["Title"] = String.Format("{0}{1}{2} {3}", prefix, mo.Properties["Title"].Value.ToString(), postfix, additionalTitle); } // Other else { row["Title"] = String.Format("<div style='padding-left: 50px;'>{0} {1}</div>", mo.Properties["Title"].Value.ToString(), additionalTitle); row["Rate"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToDecimal(mo.Properties["Rate"].Value), postfix); } row["Total"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["DayT"].Value) / 60, Convert.ToInt32(mo.Properties["DayT"].Value) % 60, postfix); row["TotalApproved"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["TotalApproved"].Value) / 60, Convert.ToInt32(mo.Properties["TotalApproved"].Value) % 60, postfix); row["Cost"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToDecimal(mo.Properties["Cost"].Value), postfix); dt.Rows.Add(row); } // Header Text for (int i = 0; i < MainGrid.Columns.Count; i++) { MetaField field = currentPreferences.GetVisibleMetaField()[i]; MainGrid.Columns[i].HeaderText = CHelper.GetResFileString(field.FriendlyName); } MainGrid.DataSource = dt; MainGrid.DataBind(); }
public static Mediachase.Ibn.Core.McMetaViewPreference GetMetaViewPreference(MetaView currentView) { Mediachase.Ibn.Core.McMetaViewPreference preference = Mediachase.Ibn.Core.UserMetaViewPreference.Load(currentView, Mediachase.IBN.Business.Security.CurrentUser.UserID); if (preference == null || preference.Attributes.Count == 0) { //CreateDefaultUserPreference(CurrentView); McMetaViewPreference.CreateDefaultUserPreference(currentView); preference = Mediachase.Ibn.Core.UserMetaViewPreference.Load(currentView, Mediachase.IBN.Business.Security.CurrentUser.UserID); } return preference; }
public static List<MetaField> GetAllMetaFields(MetaView View) { List<MetaField> retVal = new List<MetaField>(); foreach (MetaField field in View.MetaClass.Fields) { retVal.Add(field); } if (View.Card != null) { MetaClass mcCard = MetaDataWrapper.GetMetaClassByName(View.Card.Name); foreach (MetaField field in mcCard.Fields) { if (CHelper.CheckCardField(View.MetaClass, field)) retVal.Add(field); } } return retVal; }
public ActionResult Edit(Guid id, MetaViewModel model, List <MetaViewColumnModel> columns, string button) { using (DBEntities context = Settings.CreateDataContext()) { Validate(context, model); if (!ModelState.IsValid) { return(View(model)); } MetaView target = null; if (model.Id != Guid.Empty) { target = MetaViewHelper.Get(model.Id, context); if (target == null) { ModelState.AddModelError("", Resources.Resource.RowNotFound); return(View(model)); } } else { target = new MetaView { Id = Guid.NewGuid() }; context.AddToMetaView(target); } MetaViewModel.CreateMap(); Mapper.Map(model, target); if (columns != null) { SyncViewColumns(target, columns, context); } try { context.SaveChanges(); } catch (Exception ex) { var sb = new StringBuilder(Resources.Resource.SaveError + ": " + ex.Message); if (ex.InnerException != null) { sb.AppendLine(ex.InnerException.Message); } ModelState.AddModelError("", sb.ToString()); return(View(model)); } if (button == "SaveAndExit") { return(RedirectToAction("Index")); } else { return(RedirectToAction("Edit", new { target.Id })); } } }
/// <summary> /// The add metas to tree view. /// </summary> /// <param name="map">The map.</param> /// <param name="tv">The tv.</param> /// <param name="mv">The mv.</param> /// <param name="checkbox">The checkbox.</param> /// <remarks></remarks> public void AddMetasToTreeView(Map map, TreeView tv, MetaView mv, bool checkbox) { switch (mv) { case MetaView.TagTypeView: AddMetaByTagTypeToTreeView(ref map, ref tv, false); break; case MetaView.FolderView: AddMetaByFolderToTreeView(ref map, ref tv, checkbox); break; case MetaView.InfoView: AddMetaByInfoToTreeView(ref map, ref tv, checkbox); break; } }
private void SyncViewColumns(MetaView target, List <MetaViewColumnModel> columnModel, DBEntities context) { MetaViewColumnModel.CreateMap(); var viewColumns = context.MetaViewColumn.Include("Attribute").Where(c => c.MetaViewId == target.Id).ToList(); foreach (var item in columnModel) { item.NeedSave = NeedSave(item, columnModel); } foreach (var item in columnModel) { item.NeedSave = NeedSaveSpecial(item, columnModel); } foreach (var item in columnModel) { MetaViewColumnModel item1 = item; var viewColumn = viewColumns.FirstOrDefault(c => c.Id == item1.Id); if (viewColumn == null) { if (!item.NeedSave) { continue; } viewColumn = new MetaViewColumn() { Id = item.Id }; Mapper.Map(item, viewColumn); viewColumn.MetaViewId = target.Id; context.MetaViewColumn.AddObject(viewColumn); } else { if (item.NeedSave) { Mapper.Map(item, viewColumn); viewColumn.MetaViewId = target.Id; } else { context.MetaViewColumn.DeleteObject(viewColumn); } } } for (int i = 0; i < viewColumns.Count; i++) { var viewColumn = viewColumns[i]; var item = columnModel.FirstOrDefault(c => c.Id == viewColumn.Id); if (item == null) { context.MetaViewColumn.DeleteObject(viewColumns[i]); viewColumns.RemoveAt(i); i--; } else if (viewColumn.ParentId == null && viewColumn.Attribute.EntityId != target.MasterEntityId) { DeleteViewColoumnAndChilds(context, viewColumns, viewColumn); i = -1; } else if (viewColumn.ParentId != null && viewColumn.Attribute != null) { var parent = viewColumns.FirstOrDefault(c => c.Id == viewColumn.ParentId); if (parent != null && parent.Attribute.TypeId == (byte)AttributeType.Reference) { if (parent.Attribute.ReferencedEntityId != viewColumn.Attribute.EntityId) { DeleteViewColoumnAndChilds(context, viewColumns, viewColumn); i = -1; } } } } }
private void SyncViewColumns(MetaView target, List<MetaViewColumnModel> columnModel, DBEntities context) { MetaViewColumnModel.CreateMap(); var viewColumns = context.MetaViewColumn.Include("Attribute").Where(c => c.MetaViewId == target.Id).ToList(); foreach (var item in columnModel) { item.NeedSave = NeedSave(item, columnModel); } foreach (var item in columnModel) { item.NeedSave = NeedSaveSpecial(item, columnModel); } foreach (var item in columnModel) { MetaViewColumnModel item1 = item; var viewColumn = viewColumns.FirstOrDefault(c => c.Id == item1.Id); if (viewColumn == null) { if (!item.NeedSave) continue; viewColumn = new MetaViewColumn() { Id = item.Id }; Mapper.Map(item, viewColumn); viewColumn.MetaViewId = target.Id; context.MetaViewColumn.AddObject(viewColumn); } else { if (item.NeedSave) { Mapper.Map(item, viewColumn); viewColumn.MetaViewId = target.Id; } else { context.MetaViewColumn.DeleteObject(viewColumn); } } } for (int i = 0; i < viewColumns.Count; i++) { var viewColumn = viewColumns[i]; var item = columnModel.FirstOrDefault(c => c.Id == viewColumn.Id); if (item == null) { context.MetaViewColumn.DeleteObject(viewColumns[i]); viewColumns.RemoveAt(i); i--; } else if (viewColumn.ParentId == null && viewColumn.Attribute.EntityId != target.MasterEntityId) { DeleteViewColoumnAndChilds(context, viewColumns, viewColumn); i = -1; } else if (viewColumn.ParentId != null && viewColumn.Attribute != null) { var parent = viewColumns.FirstOrDefault(c => c.Id == viewColumn.ParentId); if (parent != null && parent.Attribute.TypeId == (byte)AttributeType.Reference) { if (parent.Attribute.ReferencedEntityId != viewColumn.Attribute.EntityId) { DeleteViewColoumnAndChilds(context, viewColumns, viewColumn); i = -1; } } } } }
private MetaView GetMetaView() { MetaView currentView = new MetaView(TimeTrackingEntry.GetAssignedMetaClass(), "FinanceProjectReport", string.Empty); foreach (MetaField mf in currentView.MetaClass.Fields) { currentView.AvailableFields.Add(mf); } // Total currentView.TotalGroupBy = new GroupByElement(); currentView.TotalGroupBy.IsPreGroupObjectVisible = false; currentView.TotalGroupBy.IsPostGroupObjectVisible = true; currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Custom, CHelper.GetResFileString("{IbnFramework.Global:_mc_Total}"))); currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("DayT", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("TotalApproved", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.TotalGroupBy.PostGroupObjectFields.Add(new GroupByObjectField("Cost", ValueSourceType.Function, GroupByObjectField.SumFunction)); // PrimaryGroupBy, SecondaryGroupBy if (GroupingList.SelectedValue == GroupingWeekUser) { currentView.PrimaryGroupBy = new GroupByElement("StartDate"); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "StartDate", false)); currentView.SecondaryGroupBy = new GroupByElement("Owner"); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "Owner", false)); } else { currentView.PrimaryGroupBy = new GroupByElement("Owner"); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "Owner", false)); currentView.SecondaryGroupBy = new GroupByElement("StartDate"); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Title", ValueSourceType.Field, "StartDate", false)); } currentView.PrimaryGroupBy.IsPreGroupObjectVisible = true; currentView.PrimaryGroupBy.IsPostGroupObjectVisible = false; currentView.SecondaryGroupBy.IsPreGroupObjectVisible = true; currentView.SecondaryGroupBy.IsPostGroupObjectVisible = false; currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("DayT", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("TotalApproved", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Cost", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.PrimaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("ParentBlockId", ValueSourceType.Field, "ParentBlockId")); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("DayT", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("TotalApproved", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("Cost", ValueSourceType.Function, GroupByObjectField.SumFunction)); currentView.SecondaryGroupBy.PreGroupObjectFields.Add(new GroupByObjectField("ParentBlockId", ValueSourceType.Field, "ParentBlockId")); return currentView; }
private McMetaViewPreference CreateDefaultReportPreferenceTimeTracking(MetaView View) { McMetaViewPreference pref = new McMetaViewPreference(); pref.MetaView = View; pref.ShowAllMetaField(); foreach (MetaField field in pref.GetVisibleMetaField()) { if (field.Name != "Title" && field.Name != "TotalApproved" && field.Name != "Rate" && field.Name != "Cost" && field.Name != "DayT") { pref.HideMetaField(field.Name); } else { if (field.Name == "Title") { pref.SetAttribute<int>(field.Name, McMetaViewPreference.AttrIndex, 0); } else if (field.Name == "DayT") { pref.SetAttribute<int>(field.Name, McMetaViewPreference.AttrIndex, 1); } else if (field.Name == "TotalApproved") { pref.SetAttribute<int>(field.Name, McMetaViewPreference.AttrIndex, 2); } else if (field.Name == "Rate") { pref.SetAttribute<int>(field.Name, McMetaViewPreference.AttrIndex, 3); } else { pref.SetAttribute<int>(field.Name, McMetaViewPreference.AttrIndex, 4); } } } pref.Attributes.Set("PageSize", -1); MetaViewGroupUtil.CollapseAll(MetaViewGroupByType.Secondary, pref); return pref; }
private void BindGrid() { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("Day1", typeof(string))); dt.Columns.Add(new DataColumn("Day2", typeof(string))); dt.Columns.Add(new DataColumn("Day3", typeof(string))); dt.Columns.Add(new DataColumn("Day4", typeof(string))); dt.Columns.Add(new DataColumn("Day5", typeof(string))); dt.Columns.Add(new DataColumn("Day6", typeof(string))); dt.Columns.Add(new DataColumn("Day7", typeof(string))); dt.Columns.Add(new DataColumn("DayT", typeof(string))); dt.Columns.Add(new DataColumn("StateFriendlyName", typeof(string))); MetaView currentView = GetMetaView(); currentView.Filters = GetFilters(); McMetaViewPreference currentPreferences = Mediachase.UI.Web.Util.CommonHelper.CreateDefaultReportPreferenceTimeTracking(currentView); MetaObject[] list = null; if (String.Compare(Mediachase.IBN.Business.Configuration.Domain, "ibn47.mediachase.net", true) == 0) { list = currentView.List(currentPreferences, McRoundValues); // For Excel for (int i = 1; i <= 8; i++) { MainGrid.Columns[i].ItemStyle.CssClass = "TdTextClass"; } } else { list = currentView.List(currentPreferences); } foreach (MetaObject mo in list) { DataRow row = dt.NewRow(); string additionalTitle = string.Empty; string prefix = ""; string postfix = ""; if (cbShowWeekNumber.Checked && mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() != MetaViewGroupByType.Total.ToString()) { DateTime dtNew = DateTime.MinValue; try { dtNew = (DateTime)mo.Properties["Title"].Value; } catch { } if (dtNew != DateTime.MinValue) { additionalTitle = string.Format("(#{0})", Iso8601WeekNumber.GetWeekNumber((DateTime)mo.Properties["Title"].Value)); } } if (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Primary.ToString()) { prefix = "<b>"; postfix = "</b>"; if (GroupingList.SelectedValue == GroupingWeekUser) { row["Title"] = String.Format("{0}{1} - {2}{3} {4}", prefix, ((DateTime)mo.Properties["Title"].Value).ToString("d MMM yyyy"), ((DateTime)mo.Properties["Title"].Value).AddDays(6).ToString("d MMM yyyy"), prefix, additionalTitle); } else { row["Title"] = String.Format("{0}{1}{2} {3}", prefix, mo.Properties["Title"].Value.ToString(), postfix, additionalTitle); } } else if (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Secondary.ToString()) { prefix = "<b>"; postfix = "</b>"; if (GroupingList.SelectedValue == GroupingUserWeek) { row["Title"] = String.Format("<div style='padding-left: 25px;'>{0}{1} - {2}{3} {4}</div>", prefix, ((DateTime)mo.Properties["Title"].Value).ToString("d MMM yyyy"), ((DateTime)mo.Properties["Title"].Value).AddDays(6).ToString("d MMM yyyy"), prefix, additionalTitle); } else { row["Title"] = String.Format("<div style='padding-left: 25px;'>{0}{1}{2} {3}</div>", prefix, mo.Properties["Title"].Value.ToString(), postfix, additionalTitle); } } else if (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Total.ToString()) { prefix = "<b>"; postfix = "</b>"; row["Title"] = String.Format("{0}{1}{2} {3}", prefix, mo.Properties["Title"].Value.ToString(), postfix, additionalTitle); } else { row["Title"] = String.Format("<div style='padding-left: 50px;'>{0} {1}</div>", mo.Properties["Title"].Value.ToString(), additionalTitle); } if (String.Compare(Mediachase.IBN.Business.Configuration.Domain, "ibn47.mediachase.net", true) == 0) { if (mo.Properties["MetaViewGroupByType"] == null || (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Total.ToString()) || (mo.Properties["MetaViewGroupByType"] != null && mo.Properties["MetaViewGroupByType"].OriginalValue.ToString() == MetaViewGroupByType.Secondary.ToString())) { row["Day1"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day1"].Value) / 60.0, postfix); row["Day2"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day2"].Value) / 60.0, postfix); row["Day3"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day3"].Value) / 60.0, postfix); row["Day4"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day4"].Value) / 60.0, postfix); row["Day5"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day5"].Value) / 60.0, postfix); row["Day6"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day6"].Value) / 60.0, postfix); row["Day7"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["Day7"].Value) / 60.0, postfix); row["DayT"] = String.Format("{0}{1:F2}{2}", prefix, Convert.ToInt32(mo.Properties["DayT"].Value) / 60.0, postfix); } } else { row["Day1"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day1"].Value) / 60, Convert.ToInt32(mo.Properties["Day1"].Value) % 60, postfix); row["Day2"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day2"].Value) / 60, Convert.ToInt32(mo.Properties["Day2"].Value) % 60, postfix); row["Day3"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day3"].Value) / 60, Convert.ToInt32(mo.Properties["Day3"].Value) % 60, postfix); row["Day4"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day4"].Value) / 60, Convert.ToInt32(mo.Properties["Day4"].Value) % 60, postfix); row["Day5"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day5"].Value) / 60, Convert.ToInt32(mo.Properties["Day5"].Value) % 60, postfix); row["Day6"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day6"].Value) / 60, Convert.ToInt32(mo.Properties["Day6"].Value) % 60, postfix); row["Day7"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["Day7"].Value) / 60, Convert.ToInt32(mo.Properties["Day7"].Value) % 60, postfix); row["DayT"] = String.Format("{0}{1:D2}:{2:D2}{3}", prefix, Convert.ToInt32(mo.Properties["DayT"].Value) / 60, Convert.ToInt32(mo.Properties["DayT"].Value) % 60, postfix); } if (mo.Properties["StateFriendlyName"].Value != null) { row["StateFriendlyName"] = CHelper.GetResFileString(mo.Properties["StateFriendlyName"].Value.ToString()); } else { row["StateFriendlyName"] = ""; } dt.Rows.Add(row); } // Header Text for (int i = 0; i < MainGrid.Columns.Count; i++) { MetaField field = currentPreferences.GetVisibleMetaField()[i]; string fieldName = field.Name; // First day of week can be different, so we should specify it. if (fieldName == "Day1" || fieldName == "Day2" || fieldName == "Day3" || fieldName == "Day4" || fieldName == "Day5" || fieldName == "Day6" || fieldName == "Day7") { DateTime curDate = CHelper.GetRealWeekStartByDate(DateTime.UtcNow); if (fieldName == "Day2") { curDate = curDate.AddDays(1); } else if (fieldName == "Day3") { curDate = curDate.AddDays(2); } else if (fieldName == "Day4") { curDate = curDate.AddDays(3); } else if (fieldName == "Day5") { curDate = curDate.AddDays(4); } else if (fieldName == "Day6") { curDate = curDate.AddDays(5); } else if (fieldName == "Day7") { curDate = curDate.AddDays(6); } MainGrid.Columns[i].HeaderText = GetGlobalResourceObject("IbnFramework.TimeTracking", curDate.DayOfWeek.ToString()).ToString(); } else { MainGrid.Columns[i].HeaderText = CHelper.GetResFileString(field.FriendlyName); } } MainGrid.DataSource = dt; MainGrid.DataBind(); }
/// <summary> /// Handles the ServerClick event of the SaveButton control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> protected void SaveButton_ServerClick(object sender, EventArgs e) { if (FormatList.Items.Count < 0) { throw new Exception("Format is not specified"); } Page.Validate(); if (!Page.IsValid) { return; } Mediachase.Ibn.Data.Meta.Management.AttributeCollection attr = new Mediachase.Ibn.Data.Meta.Management.AttributeCollection(); string sDefaultValue = String.Empty; IManageControl control = MainPlaceHolder.Controls[0] as IManageControl; if (control != null) { sDefaultValue = control.GetDefaultValue(AllowNullsCheckBox.Checked); attr = control.FieldAttributes; } if (!AllowNullsCheckBox.Checked && sDefaultValue == String.Empty) { ErrorMessage.Text = GetGlobalResourceObject("GlobalMetaInfo", "ErrorMessage_AllowNulls").ToString(); return; } if (sDefaultValue == null) { sDefaultValue = String.Empty; } string sFriendlyName = FriendlyNameTextBox.Text.Trim(); if (mf == null) { string sName; if (!AutogenerateSystemNames) { sName = NameTextBox.Text.Trim(); } else { // Generate the field name as the number of seconds elapsed since 2000-01-01 sName = String.Format(CultureInfo.InvariantCulture, "Field{0}", CHelper.GetDateDiffInSeconds(DateTime.UtcNow, new DateTime(2000, 1, 1))); } try { string typeName = FormatList.SelectedValue; //NewEnum if (attr.ContainsKey("NewEnum")) { string name = attr["EnumName"].ToString(); string friendlyname = attr["EnumFriendlyName"].ToString(); bool isPrivate = (bool)attr["EnumPrivate"]; DataTable dt = (DataTable)attr["EnumDataSource"]; attr.Remove("NewEnum"); attr.Remove("EnumName"); attr.Remove("EnumFriendlyName"); attr.Remove("EnumPrivate"); attr.Remove("EnumDataSource"); MetaFieldType type = MetaEnum.Create(name, friendlyname, false); if (isPrivate) { type.Attributes.Add(McDataTypeAttribute.EnumPrivate, mc.Name); } SortedList sl = new SortedList(); foreach (DataRow dr in dt.Rows) { sl.Add((int)dr["OrderId"], dr["Name"].ToString().Trim()); } foreach (int i in sl.Keys) { MetaEnum.AddItem(type, sl[i].ToString(), i); } typeName = type.Name; } //NewMultiEnum if (attr.ContainsKey("NewMultiEnum")) { string name = attr["EnumName"].ToString(); string friendlyname = attr["EnumFriendlyName"].ToString(); bool isPrivate = (bool)attr["EnumPrivate"]; DataTable dt = (DataTable)attr["EnumDataSource"]; attr.Remove("NewMultiEnum"); attr.Remove("EnumName"); attr.Remove("EnumFriendlyName"); attr.Remove("EnumPrivate"); attr.Remove("EnumDataSource"); MetaFieldType type = MetaEnum.Create(name, friendlyname, true); if (isPrivate) { type.Attributes.Add(McDataTypeAttribute.EnumPrivate, mc.Name); } SortedList sl = new SortedList(); foreach (DataRow dr in dt.Rows) { sl.Add((int)dr["OrderId"], dr["Name"].ToString().Trim()); } foreach (int i in sl.Keys) { MetaEnum.AddItem(type, sl[i].ToString(), i); } typeName = type.Name; } MetaFieldType mft = DataContext.Current.MetaModel.RegisteredTypes[FormatList.SelectedValue]; if (mft != null && mft.McDataType == McDataType.Enum && attr.ContainsKey("EnumFriendlyName")) { mft.FriendlyName = attr["EnumFriendlyName"].ToString(); attr.Remove("EnumFriendlyName"); } MetaField newField = null; if (FieldTypeList.SelectedValue == McDataType.Reference.ToString()) { newField = MetaDataWrapper.CreateReference(mc, attr, sName, sFriendlyName, AllowNullsCheckBox.Checked); if (attr.ContainsKey(McDataTypeAttribute.ReferenceUseSecurity)) { Mediachase.Ibn.Data.Services.Security.AddObjectRolesFromReference(newField); } } else if (FieldTypeList.SelectedValue == McDataType.ReferencedField.ToString()) { newField = MetaDataWrapper.CreateReferencedField(mc, attr, sName, sFriendlyName); } else if (FieldTypeList.SelectedValue == McDataType.BackReference.ToString()) { newField = MetaDataWrapper.CreateBackReference(mc, attr, sName, sFriendlyName); } else { newField = MetaDataWrapper.CreateMetaField(mc, attr, sName, sFriendlyName, typeName, AllowNullsCheckBox.Checked, sDefaultValue); } //add to the forms if (newField != null) { List <FormDocument> metaForms = mfs.MetaForms; foreach (FormDocument fd in metaForms) { if (HistoryManager.MetaClassIsHistory(fd.MetaClassName) && !HistoryManager.IsSupportedField(fd.MetaClassName, newField.Name)) { continue; } FormController.AddMetaPrimitive(fd.MetaClassName, fd.Name, newField.Name); } using (MetaClassManagerEditScope editScope = DataContext.Current.MetaModel.BeginEdit()) { List <string> metaViews = mfs.MetaViews; foreach (string viewName in metaViews) { MetaView metaView = DataContext.Current.MetaModel.MetaViews[viewName]; if (HistoryManager.MetaClassIsHistory(metaView.MetaClassName) && !HistoryManager.IsSupportedField(metaView.MetaClassName, newField.Name)) { continue; } McMetaViewPreference pref = UserMetaViewPreference.Load(metaView, (int)DataContext.Current.CurrentUserId); if (pref == null || pref.Attributes.Count == 0) { McMetaViewPreference.CreateDefaultUserPreference(metaView); pref = UserMetaViewPreference.Load(metaView, (int)DataContext.Current.CurrentUserId); } int counter = metaView.AvailableFields.Count; metaView.AvailableFields.Add(metaView.MetaClass.Fields[newField.Name]); pref.SetAttribute <int>(newField.Name, McMetaViewPreference.AttrIndex, counter); pref.SetAttribute <int>(newField.Name, McMetaViewPreference.AttrWidth, 100); } editScope.SaveChanges(); } } Response.Redirect(String.Format("{0}?class={1}", ReturnUrl, mc.Name), true); } catch (MetaFieldAlreadyExistsException) { ErrorLabel.Text = String.Format(GetGlobalResourceObject("GlobalMetaInfo", "FieldExistsErrorMessage").ToString(), "'" + sName + "'"); ErrorLabel.Visible = true; } /* catch (SqlException sqlException) * { * if (sqlException.Number == 1505) // Duplication key * ErrorLabel.Text = ex.Message; * else * ErrorLabel.Text = ex.Message; * ErrorLabel.Visible = true; * } */ } else // Update { MetaFieldType mft = DataContext.Current.MetaModel.RegisteredTypes[FormatList.SelectedValue]; if (mft.McDataType == McDataType.Enum && attr.ContainsKey("EnumFriendlyName")) { mft.FriendlyName = attr["EnumFriendlyName"].ToString(); attr.Remove("EnumFriendlyName"); } if (FieldTypeList.SelectedValue == McDataType.Reference.ToString() || FieldTypeList.SelectedValue == McDataType.BackReference.ToString() || FieldTypeList.SelectedValue == McDataType.ReferencedField.ToString()) { MetaDataWrapper.UpdateMetaFieldFriendlyName(mf, sFriendlyName); } else { MetaDataWrapper.UpdateMetaField(mf, attr, sFriendlyName, sDefaultValue); } Response.Redirect(String.Format("{0}?class={1}", ReturnUrl, mc.Name), true); } }
protected void Page_Load(object sender, EventArgs e) { if (Request["ViewName"] != null) { MetaView view = GetViewByName(Request["ViewName"]); string ActionName = Request["Action"]; //TODO: PrincipalId McMetaViewPreference pref = Mediachase.Ibn.Core.UserMetaViewPreference.Load(view, 13 /*Security.CurrentUserId*/); switch (ActionName) { case "ColumnResize": { pref.SetMetaFieldWidth(Convert.ToInt32(Request["columnIndex"]), Convert.ToInt32(Request["newSize"])); break; } case "OrderChange": { pref.ChangeMetaFieldOrder(Convert.ToInt32(Request["oldIndex"]), Convert.ToInt32(Request["newIndex"])); break; } case "HiddenChange": { pref.HideMetaField(Request["columnName"]); break; } case "EditColumns": { pref.ShowAllMetaField(); string hiddenColumns = Request["hiddenColumns"]; if (hiddenColumns.Length > 0) { foreach (string fieldName in hiddenColumns.Split(',')) { pref.HideMetaField(fieldName); } } break; } case "ResizeLayout": { int newSize = Convert.ToInt32(Request["newSize"]); string attrName = string.Empty; #region Convert west -> MarginLeft (etc.) switch (Request["RegionId"]) { case "west": { attrName = "MarginLeft"; break; } case "east": { attrName = "MarginRight"; break; } case "north": { attrName = "MarginTop"; break; } case "south": { attrName = "MarginBottom"; break; } } #endregion pref.Attributes.Set(attrName, newSize); break; } } //TODO: PrincipalId Mediachase.Ibn.Core.UserMetaViewPreference.Save(13 /*Security.CurrentUserId*/, pref); } if (Request["CommandId"] != null) { Response.Write("Test toolbar action: " + Request["CommandId"]); } }
//for the bug in catel 4.0 //new public bool HasErrors //{ // get // { // return false; // ((INotifyDataErrorInfo)this).HasErrors;|| this.ChildViewModelsHaveErrors; // } //} // TODO: Register models with the vmpropmodel codesnippet // TODO: Register view model properties with the vmprop or vmpropviewmodeltomodel codesnippets #endregion #region Commands // TODO: Register commands with the vmcommand or vmcommandwithcanexecute codesnippets #endregion #region Methods /// <summary> /// only called when View is derived from MetaView /// </summary> /// <param name="view"></param> internal protected virtual void OnViewLoaded(MetaView view) { }
public ActionResult Edit(Guid id, MetaViewModel model, List<MetaViewColumnModel> columns, string button) { using (DBEntities context = Settings.CreateDataContext()) { Validate(context, model); if (!ModelState.IsValid) { return View(model); } MetaView target = null; if (model.Id != Guid.Empty) { target = MetaViewHelper.Get(model.Id, context); if (target == null) { ModelState.AddModelError("", Resources.Resource.RowNotFound); return View(model); } } else { target = new MetaView {Id = Guid.NewGuid()}; context.AddToMetaView(target); } MetaViewModel.CreateMap(); Mapper.Map(model, target); if(columns != null) SyncViewColumns(target, columns, context); try { context.SaveChanges(); } catch (Exception ex) { var sb = new StringBuilder(Resources.Resource.SaveError + ": " + ex.Message); if (ex.InnerException != null) sb.AppendLine(ex.InnerException.Message); ModelState.AddModelError("", sb.ToString()); return View(model); } if (button == "SaveAndExit") return RedirectToAction("Index"); else return RedirectToAction("Edit", new {target.Id}); } }