using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json.Linq;
using ShadowEditor.Model.Category;
using ShadowEditor.Server.Base;
using ShadowEditor.Server.Helpers;
using ShadowEditor.Server.CustomAttribute;
namespace ShadowEditor.Server.Controllers
{
///
/// 类别控制器
///
public class CategoryController : ApiBase
{
///
/// 获取列表
///
/// 类型
///
[HttpGet]
[Authority(OperatingAuthority.LIST_CATEGORY)]
public JsonResult List(CategoryType? type = null)
{
var mongo = new MongoHelper();
List docs = null;
if (type == null)
{
docs = mongo.FindAll(Constant.CategoryCollectionName).ToList();
}
else
{
var filter = Builders.Filter.Eq("Type", type.Value.ToString());
docs = mongo.FindMany(Constant.CategoryCollectionName, filter).ToList();
}
var list = new JArray();
foreach (var i in docs)
{
var obj = new JObject();
obj["ID"] = i["_id"].ToString();
obj["Name"] = i["Name"].ToString();
list.Add(obj);
}
return Json(new
{
Code = 200,
Msg = "Get Successfully!",
Data = list
});
}
///
/// 保存
///
///
///
[HttpPost]
[Authority(OperatingAuthority.SAVE_CATEGORY)]
public JsonResult Save(CategorySaveModel model)
{
if (string.IsNullOrEmpty(model.Name))
{
return Json(new
{
Code = 300,
Msg = "Name is not allowed to be empty."
});
}
if (model.Type == null)
{
return Json(new
{
Code = 300,
Msg = "Type is not allowed to be empty!"
});
}
var mongo = new MongoHelper();
if (string.IsNullOrEmpty(model.ID))
{
var doc = new BsonDocument();
doc["Name"] = model.Name;
doc["Type"] = model.Type.Value.ToString();
mongo.InsertOne(Constant.CategoryCollectionName, doc);
}
else
{
var filter = Builders.Filter.Eq("_id", ObjectId.Parse(model.ID));
var update1 = Builders.Update.Set("Name", BsonString.Create(model.Name));
var update2 = Builders.Update.Set("Type", BsonString.Create(model.Type.Value.ToString()));
var update = Builders.Update.Combine(update1, update2);
mongo.UpdateOne(Constant.CategoryCollectionName, filter, update);
}
return Json(new
{
Code = 200,
Msg = "Saved successfully!"
});
}
///
/// 删除
///
///
///
[HttpPost]
[Authority(OperatingAuthority.DELETE_CATEGORY)]
public JsonResult Delete(string ID)
{
var mongo = new MongoHelper();
var filter = Builders.Filter.Eq("_id", ObjectId.Parse(ID));
mongo.DeleteOne(Constant.CategoryCollectionName, filter);
return Json(new
{
Code = 200,
Msg = "Delete successfully!"
});
}
}
}