Exemplo n.º 1
0
        public HttpResponseMessage Get(string entity, string id)
        {
            try
            {
                //if (entity == "items")
                var collection = App.Config.DefaultCollection;
                OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings);

                JObject reqOptions = null;

                if (module.IsListMode())
                {
                    var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.TemplateDir, collection);
                    //bool isEditable = ActiveModule.CheckIfEditable(PortalSettings);
                    IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                    var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions);
                    dsContext.Collection = collection;
                    var dsItem = ds.Get(dsContext, id);
                    var res    = new JObject();
                    res["meta"] = new JObject();
                    var items = new JArray();
                    if (dsItem != null)
                    {
                        var mf = new ModelFactorySingle(dsItem, module, collection);

                        string raison = "";
                        if (!OpenContentUtils.HaveViewPermissions(dsItem, module.UserRoles.FromDnnRoles(), indexConfig, out raison))
                        {
                            Exceptions.ProcessHttpException(new HttpException(404, "No detail view permissions for id=" + id + " (" + raison + ")"));
                            //throw new UnauthorizedAccessException("No detail view permissions for id " + info.DetailItemId);
                        }

                        mf.Options = reqOptions;
                        var model = mf.GetModelAsJson(false);
                        items.Add(model);
                        model["id"]          = dsItem.Id;
                        res["meta"]["total"] = dsItem == null ? 0 : 1;
                        JsonUtils.IdJson(model);
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Query";
                            LogContext.Log(module.ViewModule.ModuleId, logKey, "model", model);
                            res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(module.ViewModule.ModuleId));
                        }
                    }
                    res[entity] = items;
                    return(Request.CreateResponse(HttpStatusCode.OK, res));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template "));
                }
            }
            catch (Exception exc)
            {
                App.Services.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Exemplo n.º 2
0
        public HttpResponseMessage Post(string entity, [FromBody] JObject value)
        {
            // Add
            try
            {
                OpenContentModuleInfo module = new OpenContentModuleInfo(ActiveModule);

                var    manifest = module.Settings.Template.Manifest;
                string editRole = manifest.GetEditRole();

                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                if (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, editRole, -1))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }
                ds.Add(dsContext, value.Properties().First().Value as JObject);


                var dsItem = ds.Get(dsContext, dsContext.Id);
                var res    = new JObject();
                res["meta"] = new JObject();
                var items = new JArray();
                if (dsItem != null)
                {
                    var collection = AppConfig.DEFAULT_COLLECTION;
                    var mf         = new ModelFactorySingle(dsItem, module, PortalSettings, collection);
                    var model      = mf.GetModelAsJson(false);
                    items.Add(model);
                    model["id"]          = dsContext.Id;
                    res["meta"]["total"] = dsItem == null ? 0 : 1;
                    JsonUtils.IdJson(model);
                    if (LogContext.IsLogActive)
                    {
                        var logKey = "Query";
                        LogContext.Log(module.ViewModule.ModuleID, logKey, "model", model);
                        res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(module.ViewModule.ModuleID));
                    }
                }
                res[entity] = items;
                return(Request.CreateResponse(HttpStatusCode.OK, res));

                //return Request.CreateResponse(HttpStatusCode.OK, "");
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }