using langguanApi.Model;
using langguanApi.Model.Entity;
using langguanApi.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace langguanApi.Controllers
{
    /// 
    /// 角色 权限
    /// 
    [Route("api/[controller]")]
    [ApiController]
    public class RoleController : ControllerBase
    {
        public readonly RoleService _roleService;
        private readonly RoleMenuServie _roleMenuServie;
        public RoleController(RoleService roleService, RoleMenuServie roleMenuServie)
        {
            _roleService = roleService;
            _roleMenuServie = roleMenuServie;
        }
        /// 
        /// 获取角色详情
        /// 
        /// 
        /// 
        [HttpGet("get")]
        public async Task Get(string id)
        {
            var role = await _roleService.GetRoleAndMenu(id);
            return Ok(role);
        }
        /// 
        /// 添加角色
        /// 
        /// 
        /// 
        [HttpPost("add")]
        public async Task Add([FromBody] AddRoleDto role)
        {
            var result = await _roleService.Add(role);
            return Ok(result);
        }
        /// 
        /// update角色
        /// 
        /// 
        /// 
        [HttpPut("update")]
        public async Task Update([FromBody] UpdateRoleDto role)
        {
            var result = await _roleService.update(role);
            return Ok(result);
        }
        /// 
        /// 删除角色
        /// 
        /// 
        /// 
        [HttpDelete("remove")]
        public async Task Remove(IEnumerable ids)
        {
            var result = await _roleService.Remove(ids);
            return Ok(result);
        }
        /// 
        /// 获取角色列表
        /// 
        /// 
        /// 
        [HttpGet("list")]
        public async Task List([FromQuery] reqpage input)
        {
            var roles = await _roleService.GetPage(input);
            return Ok(roles);
        }
        /// 
        /// 获取所有角色
        /// 
        /// 
        [HttpGet("all")]
        public async Task GetAllrole()
        {
            var roles = await _roleService.GetAsync();
            return Ok(new ApiResult()
            {
                code = 0,
                data = roles.
                Select(s => new { s.Id, s.RoleName })
            });
        }
    }
}