using AutoMapper;
using Kean.Application.Query.Interfaces;
using Kean.Application.Query.ViewModels;
using Kean.Infrastructure.Database;
using Kean.Infrastructure.Database.Repository.Default;
using Kean.Infrastructure.Database.Repository.Default.Entities;
using Kean.Infrastructure.Utilities;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Kean.Application.Query.Implements
{
///
/// 基础信息查询服务实现
///
public sealed class BasicService : IBasicService
{
private readonly IMapper _mapper; // 模型映射
private readonly IDefaultDb _database; // 默认数据库
///
/// 依赖注入
///
public BasicService(
IMapper mapper,
IDefaultDb database)
{
_mapper = mapper;
_database = database;
}
/*
* 实现 Kean.Application.Query.Interfaces.IBasicService.GetRoleCount(string name) 方法
*/
public async Task GetRoleCount(string name)
{
return (await GetRoleSchema(name)
.Single(r => new { Count = Function.Count(r.ROLE_ID) }))
.Count;
}
/*
* 实现 Kean.Application.Query.Interfaces.IBasicService.GetRoleList(string name, string sort, int? offset, int? limit) 方法
*/
public async Task> GetRoleList(string name, string sort, int? offset, int? limit)
{
return _mapper.Map>(await GetRoleSchema(name)
.Sort(sort, _mapper)
.OrderBy(r => r.ROLE_ID, Infrastructure.Database.Order.Ascending)
.Page(offset, limit)
.Select());
}
/*
* 组织 GetRole 相关方法的条件
*/
private ISchema GetRoleSchema(string name)
{
var schema = _database.From();
if (name != null)
{
schema = schema.Where(r => r.ROLE_NAME.Contains(name));
}
return schema;
}
/*
* 实现 Kean.Application.Query.Interfaces.IBasicService.GetRoleMenuPermission(int id) 方法
*/
public async Task<(Tree