public HttpResponseMessage Lookup(LookupRequestDTO req) { int moduleid = req.moduleid > 0 ? req.moduleid : ActiveModule.ModuleID; int tabid = req.tabid > 0 ? req.tabid : ActiveModule.TabID; var module = OpenContentModuleConfig.Create(moduleid, tabid, PortalSettings); if (module == null) { throw new Exception($"Can not find ModuleInfo (tabid:{req.tabid}, moduleid:{req.moduleid})"); } List <LookupResultDTO> res = new List <LookupResultDTO>(); try { IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); if (module.IsListMode()) { var items = ds.GetAll(dsContext, null).Items; if (items != null) { foreach (var item in items) { var json = item.Data; if (!string.IsNullOrEmpty(req.dataMember) && json[req.dataMember] != null) { json = json[req.dataMember]; } json = json.DeepClone(); JsonUtils.SimplifyJson(json, DnnLanguageUtils.GetCurrentCultureCode()); var array = json as JArray; if (array != null) { res.AddRange(array.Select(childItem => new LookupResultDTO { value = string.IsNullOrEmpty(req.valueField) || childItem[req.valueField] == null ? "" : childItem[req.valueField].ToString(), text = string.IsNullOrEmpty(req.textField) || childItem[req.textField] == null ? "" : childItem[req.textField].ToString() } ) ); } else { res.Add(new LookupResultDTO { value = string.IsNullOrEmpty(req.valueField) || json[req.valueField] == null ? item.Id : json[req.valueField].ToString(), text = string.IsNullOrEmpty(req.textField) || json[req.textField] == null ? item.Title : json[req.textField].ToString() }); } } } } else { dsContext.Single = true; var struc = ds.Get(dsContext, null); if (struc != null) { JToken json = struc.Data; if (!string.IsNullOrEmpty(req.dataMember)) { json = json[req.dataMember]; json = json.DeepClone(); JsonUtils.SimplifyJson(json, DnnLanguageUtils.GetCurrentCultureCode()); if (json is JArray) { foreach (JToken item in (JArray)json) { res.Add(new LookupResultDTO() { value = item[req.valueField] == null ? "" : item[req.valueField].ToString(), text = item[req.textField] == null ? "" : item[req.textField].ToString() }); } } } } } return(Request.CreateResponse(HttpStatusCode.OK, res)); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public HttpResponseMessage Lookup(LookupRequestDTO req) { ModuleController mc = new ModuleController(); var module = mc.GetModule(req.moduleid, req.tabid, false); var settings = module.OpenContentSettings(); Manifest.Manifest manifest = settings.Manifest; TemplateManifest templateManifest = settings.Template; bool listMode = templateManifest != null && templateManifest.IsListTemplate; //JToken json = new JObject(); List <LookupResultDTO> res = new List <LookupResultDTO>(); try { var ds = DataSourceManager.GetDataSource(manifest.DataSource); var dsContext = new DataSourceContext() { ModuleId = module.ModuleID, ActiveModuleId = ActiveModule.ModuleID, TemplateFolder = settings.TemplateDir.FolderPath, Config = manifest.DataSourceConfig }; //var dsItem = ds.GetEdit(dsContext, id); if (listMode) { var items = ds.GetAll(dsContext, null).Items; if (items != null) { foreach (var item in items) { res.Add(new LookupResultDTO() { value = item.Id, text = item.Title }); } } } else { dsContext.Single = true; var struc = ds.Get(dsContext, null); if (struc != null) { JToken json = struc.Data; if (!string.IsNullOrEmpty(req.dataMember)) { json = json[req.dataMember]; if (json is JArray) { foreach (JToken item in (JArray)json) { res.Add(new LookupResultDTO() { value = item[req.valueField] == null ? "" : item[req.valueField].ToString(), text = item[req.textField] == null ? "" : item[req.textField].ToString() }); } } } } } return(Request.CreateResponse(HttpStatusCode.OK, res)); } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }