using Manganese.Array; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Security.Claims; namespace asg_form.Controllers { [ApiController] public class Champion : ControllerBase { private readonly RoleManager roleManager; private readonly UserManager userManager; public Champion( RoleManager roleManager, UserManager userManager) { this.roleManager = roleManager; this.userManager = userManager; } /// /// 修改冠军 /// /// /// [Route("api/v1/admin/Champion/")] [HttpPut] public async Task> Putchampion([FromBody] req_Champion req) { if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { TestDbContext testDb = new TestDbContext(); var form = testDb.Forms.First(x => x.Id == req.formId); var events = testDb.events.First(x => x.name == req.eventname); var chap = testDb.Champions.First(x => x.form == form); chap.events = events; chap.msg = req.msg; await testDb.SaveChangesAsync(); return Ok(); } return BadRequest(new error_mb { code = 400, message = "你没有管理员呢~" }); } [Route("api/v1/admin/Champion/")] [HttpPost] [Authorize] public async Task> Postchampion([FromBody]req_Champion req) { if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { int err = 0; try { TestDbContext testDb = new TestDbContext(); var form = testDb.Forms.First(x => x.Id == req.formId); err = 1; var events = testDb.events.First(x => x.name == req.eventname); err = 2; testDb.Champions.Add(new T_Champion { events = events, form = form ,msg=req.msg}); err = 3; await testDb.SaveChangesAsync(); return Ok(); } catch (Exception ex) { return Ok(new { code = 500, message = "服务器错误",detailcode=err, details = ex.Message }); } } return Ok(new error_mb { code = 400, message = "你没有管理员呢~" }); } /// /// 删除冠军 /// /// [Route("api/v1/admin/Champion/")] [HttpDelete] public async Task>> delchampion(int id ) { if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { TestDbContext testDb = new TestDbContext(); var chaps = testDb.Champions.First(a=>a.Id==id); testDb.Champions.Remove(chaps); await testDb.SaveChangesAsync(); return Ok(); } return BadRequest(new error_mb { code = 400, message = "你没有管理员呢~" }); } [Route("api/v1/Champion/")] [HttpGet] public async Task>> getchampion() { TestDbContext testDbContext = new TestDbContext(); var chaps = testDbContext.Champions.Include(a => a.form.role).Include(a => a.events).ToList(); foreach (var chap in chaps) { foreach (var item in chap.form.role) { item.form = null; } chap.events.forms = null; } return chaps; } public class T_Champion { public long Id { get; set; } public form form { get; set; } public T_events events { get; set; } public string msg { get; set; } } public class req_Champion { public long formId { get; set; } public string eventname { get; set; } public string msg { get; set; } } } }