Example #1
0
        public JsonResult Edit(SceneEditModel model)
        {
            var objectId = ObjectId.GenerateNewId();

            if (!string.IsNullOrEmpty(model.ID) && !ObjectId.TryParse(model.ID, out objectId))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "ID is not allowed."
                }));
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "Name is not allowed to be empty."
                }));
            }

            if (model.Name.StartsWith("_"))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "Name is not allowed to start with _."
                }));
            }

            var mongo = new MongoHelper();

            // 开启权限时,判断是否是自己的场景
            if (ConfigHelper.EnableAuthority)
            {
                var user = UserHelper.GetCurrentUser();

                var filter11 = Builders <BsonDocument> .Filter.Eq("ID", objectId);

                var doc = mongo.FindOne(Constant.SceneCollectionName, filter11);

                if (doc == null)
                {
                    return(Json(new
                    {
                        Code = 300,
                        Msg = "The scene is not existed."
                    }));
                }

                // 保存其他人的场景
                if (doc.Contains("UserID") && doc["UserID"].ToString() != user.ID)
                {
                    return(Json(new
                    {
                        Code = 300,
                        Msg = "Permission denied."
                    }));
                }

                // 非管理员组保存不带UserID的场景
                if (!doc.Contains("UserID") && user.RoleName != "Administrator")
                {
                    return(Json(new
                    {
                        Code = 300,
                        Msg = "Permission denied."
                    }));
                }
            }

            var pinyin = PinYinHelper.GetTotalPinYin(model.Name);

            var filter = Builders <BsonDocument> .Filter.Eq("ID", objectId);

            var update1 = Builders <BsonDocument> .Update.Set("Name", model.Name);

            var update2 = Builders <BsonDocument> .Update.Set("TotalPinYin", pinyin.TotalPinYin);

            var update3 = Builders <BsonDocument> .Update.Set("FirstPinYin", pinyin.FirstPinYin);

            var update4 = Builders <BsonDocument> .Update.Set("Thumbnail", model.Image);

            UpdateDefinition <BsonDocument> update5;

            if (string.IsNullOrEmpty(model.Category))
            {
                update5 = Builders <BsonDocument> .Update.Unset("Category");
            }
            else
            {
                update5 = Builders <BsonDocument> .Update.Set("Category", model.Category);
            }

            var update6 = Builders <BsonDocument> .Update.Set("IsPublic", model.IsPublic);

            var update = Builders <BsonDocument> .Update.Combine(update1, update2, update3, update4, update5, update6);

            mongo.UpdateOne(Constant.SceneCollectionName, filter, update);

            return(Json(new
            {
                Code = 200,
                Msg = "Saved successfully!"
            }));
        }
Example #2
0
        public JsonResult Edit(SceneEditModel model)
        {
            var objectId = ObjectId.GenerateNewId();

            if (!string.IsNullOrEmpty(model.ID) && !ObjectId.TryParse(model.ID, out objectId))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "ID不合法。"
                }));
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "名称不允许为空。"
                }));
            }

            if (model.Name.StartsWith("_"))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "名称不允许以下划线开头。"
                }));
            }

            var mongo = new MongoHelper();

            var pinyin = PinYinHelper.GetTotalPinYin(model.Name);

            var filter = Builders <BsonDocument> .Filter.Eq("ID", objectId);

            var update1 = Builders <BsonDocument> .Update.Set("Name", model.Name);

            var update2 = Builders <BsonDocument> .Update.Set("TotalPinYin", pinyin.TotalPinYin);

            var update3 = Builders <BsonDocument> .Update.Set("FirstPinYin", pinyin.FirstPinYin);

            var update4 = Builders <BsonDocument> .Update.Set("Thumbnail", model.Image);

            UpdateDefinition <BsonDocument> update5;

            if (string.IsNullOrEmpty(model.Category))
            {
                update5 = Builders <BsonDocument> .Update.Unset("Category");
            }
            else
            {
                update5 = Builders <BsonDocument> .Update.Set("Category", model.Category);
            }

            var update = Builders <BsonDocument> .Update.Combine(update1, update2, update3, update4, update5);

            mongo.UpdateOne(Constant.SceneCollectionName, filter, update);

            return(Json(new
            {
                Code = 200,
                Msg = "保存成功!"
            }));
        }