using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.SYS; namespace AMESCoreStudio.WebApi.Controllers.SYS { /// <summary> /// 用户角色资料维护 /// </summary> [Route("api/[controller]")] [ApiController] public class UserRolesController : ControllerBase { private readonly AMESContext _context; /// <summary> /// /// </summary> /// <param name="context"></param> public UserRolesController(AMESContext context) { _context = context; } /// <summary> /// 获取全部用户角色资料 /// </summary> /// <returns></returns> // GET: api/UserRoles [HttpGet] public async Task<ActionResult<IEnumerable<UserRole>>> GetUserRole() { IQueryable<UserRole> q = _context.UserRoles; q.OrderBy(p => p.RoleID); var userRole = await q.ToListAsync(); foreach (var data in userRole) { data.Role = _context.RoleInfoes.Find(data.RoleID); } if (userRole == null) { return NotFound(); } return userRole; //return await _context.UserRoles.ToListAsync(); } /// <summary> /// 根据用户ID获取该用户角色资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/UserRoles/User/5 [HttpGet("User/{id}")] public async Task<ActionResult<IEnumerable<UserRole>>> GetUserRoleByUser(int id, int page = 1, int limit = 10) { IQueryable<UserRole> q = _context.UserRoles; if (id > 0) { q = q.Where(p => p.UserID.Equals(id)); } if (page > 0) { q = q.OrderBy(p => p.RoleID).Skip((page - 1) * limit).Take(limit); } else { q = q.OrderBy(p => p.RoleID); } var userRole = await q.ToListAsync(); foreach (var data in userRole) { data.Role = _context.RoleInfoes.Where(p1 => p1.RoleID.Equals(data.RoleID)).FirstOrDefault(); } if (userRole == null) { return NotFound(); } return userRole; } /// <summary> /// 根据用户角色ID获取指定单一资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/UserRoles/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<UserRole>>> GetUserRole(int id) { IQueryable<UserRole> q = _context.UserRoles; q = q.Where(p => p.UserRoleID.Equals(id)); var userRole = await q.ToListAsync(); if (userRole == null) { return NotFound(); } return userRole; } /// <summary> /// 更新用户角色资料 /// </summary> /// <param name="id"></param> /// <param name="userRole"></param> /// <returns></returns> // PUT: api/UserRoles/5 // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. [HttpPut("{id}")] public async Task<ActionResult<UserRole>> PutUserRole(int id, [FromBody] UserRole userRole) { if (id != userRole.UserRoleID) { return BadRequest(); } _context.Entry(userRole).State = EntityState.Modified; if (userRole.EnableFlag == "N") { userRole.DisableUserId = 0; userRole.DisableDateTime = DateTime.Now; } if (userRole.EnableFlag == "Y") { userRole.EnableUserId = 0; userRole.EnableDateTime = DateTime.Now; userRole.DisableUserId = -1; userRole.DisableDateTime = DateTime.MinValue; } try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserRoleExists(id)) { return NotFound(); } else { throw; } } return userRole; } /// <summary> /// 新增用户角色资料 /// </summary> /// <param name="userRole"></param> /// <returns></returns> // POST: api/UserRoles // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. [HttpPost] public async Task<ActionResult<UserRole>> PostUserRole([FromBody] UserRole userRole) { Helper helper = new Helper(_context); userRole.UserRoleID = helper.GetIDKey("USER_ROLEID").Result; if (userRole.EnableFlag == "Y") { userRole.EnableUserId = 0; userRole.EnableDateTime = DateTime.Now; } _context.UserRoles.Add(userRole); await _context.SaveChangesAsync(); return CreatedAtAction("GetUserRole", new { id = userRole.UserRoleID }, userRole); } /// <summary> /// 删除用户角色资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // DELETE: api/UserRoles/5 [HttpDelete("{id}")] public async Task<ActionResult<UserRole>> DeleteUserRole(int id) { var userRole = await _context.UserRoles.Where(m => m.UserRoleID == id).FirstOrDefaultAsync(); if (userRole == null) { return NotFound(); } _context.UserRoles.Remove(userRole); await _context.SaveChangesAsync(); return userRole; } private bool UserRoleExists(int id) { return _context.UserRoles.Any(e => e.UserRoleID == id); } } }