using System;
using System.Collections.Generic;
using System.Linq;
using OpenAuth.App;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
using OpenAuth.Repository.Domain;
namespace LwSolution.App
{
///
/// 分类管理
///
public class CategoryApp :BaseApp
{
public IEnumerable Get(string type)
{
return UnitWork.Find(u => u.TypeId == type);
}
public void Add(Category category)
{
if (string.IsNullOrEmpty(category.Id))
{
category.Id = Guid.NewGuid().ToString();
}
UnitWork.Add(category);
UnitWork.Save();
}
public void Update(Category category)
{
UnitWork.Update(u =>u.Id,category);
UnitWork.Save();
}
public void Delete(string[] ids)
{
UnitWork.Delete(u => ids.Contains(u.Id));
}
public TableData All(QueryCategoriesReq request)
{
var result = new TableData();
var categories = UnitWork.Find(null) ;
if (!string.IsNullOrEmpty(request.key))
{
categories = categories.Where(u => u.Name.Contains(request.key) || u.Id.Contains(request.key));
}
if (!string.IsNullOrEmpty(request.TypeId))
{
categories = categories.Where(u => u.TypeId == request.TypeId);
}
var query = from category in categories
join ct in UnitWork.Find(null) on category.TypeId equals ct.Id
into tmp
from ct in tmp.DefaultIfEmpty()
select new
{
category.Name,
category.Id,
category.TypeId,
TypeName = ct.Name,
category.Description
};
result.data = query.OrderBy(u => u.TypeId)
.Skip((request.page - 1) * request.limit)
.Take(request.limit).ToList();
result.count = categories.Count();
return result;
}
public List AllTypes()
{
return UnitWork.Find(null).ToList();
}
}
}