/// <summary> /// Initialize /// </summary> /// <param name="securityHelper"></param> /// <param name="modelName"></param> public void Init(EntitySettingsHelper settingsHelper = null, string modelName = "") { _settings = settingsHelper; if (string.IsNullOrEmpty(modelName)) { modelName = typeof(T).Name; } _modelName = modelName; }
/// <summary> /// Intialize /// </summary> public EntityController() { _settings = _entitySettingsHandler(); var modelSettings = _settings.ModelFor <T>(); _viewSettings = modelSettings == null ? new ModelSettings().View : modelSettings.View; _helper = new EntityHelper <T>(_settings, typeof(T).Name); _modelname = this.GetType().Name.Replace("Controller", ""); EntityViewHelper.CheckAndDefaultSettings(modelSettings); Init(); }
/// <summary> /// Build the form view model. /// </summary> /// <param name="result"></param> /// <param name="modelname"></param> /// <returns></returns> public static EntityListViewModel BuildViewModelForIndex <T>(EntityActionResult result, string modelname, string action, EntitySettingsHelper settings) { PagedList <T> items = result.ItemAs <PagedList <T> >(); var viewmodel = new EntityListViewModel <T>(items, null, true); PopulateViewModel(viewmodel, modelname, "ModelList", settings); return(viewmodel); }
/// <summary> /// Build the form view model. /// </summary> /// <param name="result"></param> /// <param name="modelname"></param> /// <returns></returns> public static EntityFormViewModel BuildViewModelForForm(EntityActionResult result, string modelname, string action, EntitySettingsHelper settings) { var viewmodel = new EntityFormViewModel(); PopulateViewModel(viewmodel, modelname, "ModelForm", settings); viewmodel.Entity = result.ItemAs <IEntity>(); viewmodel.FormActionName = action; return(viewmodel); }
/// <summary> /// Build the details view model. /// </summary> /// <param name="result"></param> /// <param name="modelname"></param> /// <returns></returns> public static EntityDetailsViewModel BuildViewModelForDetails(EntityActionResult result, string modelname, string action, EntitySettingsHelper settings) { var viewmodel = new EntityDetailsViewModel(); PopulateViewModel(viewmodel, modelname, "ModelDetails", settings); viewmodel.Entity = result.ItemAs <IEntity>(); return(viewmodel); }
/// <summary> /// Build one of the view models either for Details, Form, List. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="result"></param> /// <param name="modelname"></param> /// <param name="action"></param> /// <returns></returns> public static EntityBaseViewModel BuildViewModel <T>(EntityActionResult result, string modelname, string action, EntitySettingsHelper settings) { action = action.ToLower(); EntityBaseViewModel viewModel = null; if (action == "details") { viewModel = BuildViewModelForDetails(result, modelname, action, settings); } else if (action == "edit" || action == "create") { viewModel = BuildViewModelForForm(result, modelname, action, settings); } else if (action == "deleted") { viewModel = BuildViewModelForDeleted(result, modelname, settings); } else // List/Index pages. { viewModel = BuildViewModelForIndex <T>(result, modelname, action, settings); } return(viewModel); }
/// <summary> /// Build general view model values. /// </summary> /// <param name="viewmodel"></param> /// <param name="modelname"></param> /// <param name="controlpath"></param> /// <returns></returns> public static void PopulateViewModel(EntityBaseViewModel viewmodel, string modelname, string controlpath, EntitySettingsHelper settings) { viewmodel.UrlCancel = ""; // This is "modellist", "modelform", "modeldetails" or whater is passed in. viewmodel.ControlPath = controlpath; // These two should be the same most of the time. viewmodel.Name = modelname; viewmodel.ControllerName = modelname; viewmodel.UrlCreate = settings.GetOrDefault(modelname, "View.UrlForCreate", "/" + modelname + "/create"); viewmodel.UrlManage = settings.GetOrDefault(modelname, "View.UrlForManage", "/" + modelname + "/manage"); viewmodel.UrlIndex = settings.GetOrDefault(modelname, "View.UrlForIndex", "/" + modelname + "/index"); if (HttpContext.Current != null && HttpContext.Current.Request != null) { // Check the source url for supporting the back/cancel features. if (HttpContext.Current.Request.UrlReferrer != null && !string.IsNullOrEmpty(HttpContext.Current.Request.UrlReferrer.PathAndQuery)) { viewmodel.UrlCancel = HttpContext.Current.Request.UrlReferrer.PathAndQuery; viewmodel.UrlBack = HttpContext.Current.Request.UrlReferrer.PathAndQuery; } } }
/// <summary> /// Build the form view model. /// </summary> /// <param name="result"></param> /// <param name="modelname"></param> /// <returns></returns> public static EntityDeletionViewModel BuildViewModelForDeleted(EntityActionResult result, string modelname, EntitySettingsHelper settings) { var viewmodel = new EntityDeletionViewModel(modelname, "Item has been deleted."); PopulateViewModel(viewmodel, modelname, "ModelDetails", settings); return(viewmodel); }
/// <summary> /// Initialize with optional security helper. /// </summary> /// <param name="securityHelper"></param> public EntityHelper(EntitySettingsHelper settingsHelper = null, string modelName = "") { Init(settingsHelper, modelName); }