using System;
using System.Collections.Generic;
using System.Text;
namespace RoadFlow.Platform
{
public class UsersApp
{
private RoadFlow.Data.Interface.IUsersApp dataUsersApp;
public UsersApp()
{
this.dataUsersApp = Data.Factory.Factory.GetUsersApp();
}
///
/// 新增
///
public int Add(RoadFlow.Data.Model.UsersApp model)
{
return dataUsersApp.Add(model);
}
///
/// 更新
///
public int Update(RoadFlow.Data.Model.UsersApp model)
{
return dataUsersApp.Update(model);
}
///
/// 查询所有记录
///
public List GetAll()
{
return dataUsersApp.GetAll();
}
///
/// 查询单条记录
///
public RoadFlow.Data.Model.UsersApp Get(Guid id)
{
return dataUsersApp.Get(id);
}
///
/// 删除
///
public int Delete(string id)
{
return dataUsersApp.Delete(id);
}
///
/// 查询记录条数
///
public long GetCount()
{
return dataUsersApp.GetCount();
}
///
/// 查询所有记录
///
/// 是否使用缓存
///
public System.Data.DataTable GetAllDataTable(bool fromCache = true)
{
string cacheKey = RoadFlow.Utility.Keys.CacheKeys.UsersApp.ToString();
if (fromCache)
{
object obj = RoadFlow.Cache.IO.Opation.Get(cacheKey);
if (obj == null || !(obj is System.Data.DataTable))
{
var dt = dataUsersApp.GetAllDataTable();
RoadFlow.Cache.IO.Opation.Insert(cacheKey, dt);
return dt;
}
else
{
return (obj as System.Data.DataTable);
}
}
else
{
return dataUsersApp.GetAllDataTable();
}
}
///
/// 清除缓存
///
public void ClearCache()
{
string cacheKey = RoadFlow.Utility.Keys.CacheKeys.UsersApp.ToString();
RoadFlow.Cache.IO.Opation.Remove(cacheKey);
}
///
/// 查询个人应用
///
///
///
public System.Data.DataRow[] GetUserDataRows(string userID)
{
return GetAllDataTable().Select("UserID='" + userID.ToString() + "'");
}
///
/// 更新排序
///
public int UpdateSort(Guid id, int sort)
{
return dataUsersApp.UpdateSort(id, sort);
}
///
/// 将个人应用加入列表
///
///
/// 上级ID
///
public void AppendUserApps(string userID, Guid parentID, List appList)
{
var userApps = GetUserDataRows(userID);
foreach (var userApp in userApps)
{
if (userApp["ParentID"].ToString().ToGuid() == parentID)
{
RoadFlow.Data.Model.RoleApp app = new RoadFlow.Data.Model.RoleApp();
app.ID = userApp["ID"].ToString().ToGuid();
app.AppID = userApp["AppID"].ToString().ToGuid();
app.Ico = userApp["Ico"].ToString();
app.Params = userApp["Params"].ToString();
app.ParentID = userApp["ParentID"].ToString().ToGuid();
app.RoleID = userApp["RoleID"].ToString().ToGuid();
app.Sort = userApp["Sort"].ToString().ToInt();
app.Title = userApp["Title"].ToString();
app.Type = 1;
appList.Add(app);
}
}
}
///
/// 将个人应用加入表(Table)
///
///
///
public void AppendUserApps(string userID, System.Data.DataTable appDt)
{
var userApps = GetUserDataRows(userID);
foreach (var userApp in userApps)
{
if (appDt.Select("ID='" + userApp["ID"].ToString() + "'").Length == 0)
{
System.Data.DataRow dr = appDt.NewRow();
dr["ID"] = userApp["ID"];
dr["ParentID"] = userApp["ParentID"];
dr["RoleID"] = userApp["RoleID"];
dr["AppID"] = userApp["AppID"];
dr["Title"] = userApp["Title"];
dr["Params"] = userApp["Params"];
dr["Sort"] = userApp["Sort"];
dr["Ico"] = userApp["Ico"];
dr["Type"] = 1;
dr["Address"] = userApp["Address"];
dr["OpenMode"] = userApp["OpenMode"];
dr["Width"] = userApp["Width"];
dr["Height"] = userApp["Height"];
dr["Params1"] = userApp["Params1"];
dr["Manager"] = userApp["Manager"];
appDt.Rows.Add(dr);
}
}
}
///
/// 是否有下级
///
///
///
public bool HasChild(Guid id)
{
return GetAllDataTable().Select("ParentID='" + id.ToString() + "'").Length > 0;
}
///
/// 查询下级记录
///
public List GetChilds(string id)
{
return dataUsersApp.GetChild(id);
}
///
/// 查询所有下级记录
///
///
///
public List GetAllChilds(string id)
{
List list = new List();
addChilds(id, list);
return list;
}
private void addChilds(string id, List list)
{
var childs = GetChilds(id);
foreach (var child in childs)
{
list.Add(child);
addChilds(child.ID, list);
}
}
///
/// 删除一个记录和所有下级记录
///
///
///
public int DeleteAndAllChilds(string id)
{
int i = 0;
var childs = GetAllChilds(id);
using (System.Transactions.TransactionScope scope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Suppress))
{
foreach (var child in childs)
{
i += Delete(child.ID);
}
i += Delete(id);
scope.Complete();
}
return i;
}
///
/// 删除一个用户记录
///
public int DeleteByUserID(Guid userID)
{
return dataUsersApp.DeleteByUserID(userID);
}
}
}