using asg_form.Controllers.Teamregistration; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; using Microsoft.EntityFrameworkCore; using RestSharp.Extensions; namespace asg_form.Controllers.Budget { public class BgDB { public int id { get; set; } public string budget_year { get; set; } public int budget_money { get; set; } = 0; public string budget_type { get; set; } public string budget_name { get; set; } public string budget_used { get; set; } public string source_event_name { get; set; } public int source_event_id { get; set; } public string used_event_name { get; set; } public int used_event_id { get; set; } public string? use_person { get; set; } public int? use_person_id { get; set; } public string? change_time { get; set; } public string use_status { get; set; } public string? update_person { get; set; }//设置默认 public string? update_time { get; set; } } public class budget_details { public string Id { get; set; } public int budgetId { get; set; } public string budgetDetail { get; set; } public int useMoney { get; set; } public string reqPerson { get; set; } public int reqId { get; set; } public string reqDate { get; set; } } public class BgCountController : ControllerBase { private readonly RoleManager roleManager; private readonly UserManager userManager; public BgCountController( RoleManager roleManager, UserManager userManager) { this.roleManager = roleManager; this.userManager = userManager; } public class bgMsg { public string budgetYear { get; set; } public int budgetMoney { get; set; } public string budgetType { get; set; } public string budgetName { get; set; } public string sourceEventName { get; set; } public int sourceEventId { get; set; } public string budgetUsed { get; set; } public string usedEventName { get; set; } public int usedEventId { get; set; } public string updatePerson { get; set; } public string updateTime { get; set; }//自动生成时间 } [Route("api/v1/admin/insertBg")] [HttpPost] [Authorize] public async Task> InBg([FromBody] bgMsg msg) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new error_mb { code = 401, message = "无权访问" }); } if (msg == null) { return Ok(new error_mb { code = 500, message = "请插入必要字段" }); } var dateString = DateTime.Now.ToString(); ; using (TestDbContext sub = new TestDbContext()) { var budget = new BgDB { budget_year = msg.budgetYear, budget_money = msg.budgetMoney, budget_type = msg.budgetType, budget_name = msg.budgetName, budget_used = msg.budgetUsed, source_event_name = msg.sourceEventName, source_event_id = msg.sourceEventId, used_event_name = msg.usedEventName, used_event_id = msg.usedEventId, use_status = "0", update_person = msg.updatePerson, update_time = dateString, }; sub.budgetDetails.Add(budget); await sub.SaveChangesAsync(); return Ok(new error_mb { code = 200, message = "新增预算成功" }); } } [Route("api/v1/admin/updateBg")] [HttpPost] [Authorize] public async Task> UpdBg(int id, [FromBody] bgMsg msg) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new error_mb { code = 401, message = "您没有权限" }); } if (msg == null) { return Ok(new error_mb { code = 500, message = "请插入必要字段" }); } var currentTime = DateTime.Now; using (TestDbContext sub = new TestDbContext()) { var budget = await sub.budgetDetails.FindAsync(id); if (budget == null) { return Ok(new error_mb { code = 404, message = "预算记录未找到" }); } budget.budget_year = msg.budgetYear; budget.budget_money = msg.budgetMoney; budget.budget_type = msg.budgetType; budget.budget_name = msg.budgetName; budget.source_event_name = msg.sourceEventName; budget.source_event_id = msg.sourceEventId; budget.budget_used = msg.budgetUsed; budget.used_event_name = msg.usedEventName; budget.used_event_id = msg.usedEventId; budget.update_person = msg.updatePerson; budget.update_time = currentTime.ToString(); await sub.SaveChangesAsync(); return Ok(new error_mb { code = 200, message = "更新预算成功" }); } } [Route("api/v1/admin/getBg")] [HttpGet] [Authorize] public async Task> GetBgBySourceEventId([FromQuery] int sourceEventId) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new { code = 401, message = "您没有权限", data = new List() }); } try { using (TestDbContext dbContext = new TestDbContext()) { var budgets = await dbContext.budgetDetails .Where(b => b.source_event_id == sourceEventId) .ToListAsync(); if(budgets == null) return Ok(new { code = 404, message="没有找到这个数据" }); return Ok(new { code = 200, data = budgets }); } } catch (Exception ex) { return Ok(new { code = 500, message = "服务器错误", details = ex.Message }); } } [Route("api/v1/admin/updateBudgetUsage")] [HttpPost] [Authorize] public async Task> UpdBgUsage([FromBody] UpdateBg request) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new { code = 401, message = "您没有权限" }); } try { using (var db = new TestDbContext()) { var budget = await db.budgetDetails.FindAsync(request.BudgetId); if (budget == null) { return Ok(new { code = 404, message = "预算记录未找到" }); } budget.use_status = "1"; budget.use_person = request.UsePerson; budget.use_person_id = request.UsePersonId; budget.change_time = DateTime.Now.ToString(); await db.SaveChangesAsync(); return Ok(new { code = 200, message = "更新使用情况成功" }); } } catch (Exception ex) { return Ok(new { code = 500, message = "服务器错误", details = ex.Message }); } } public class UpdateBg { public int BudgetId { get; set; } public string UsePerson { get; set; } public int UsePersonId { get; set; } } [Route("api/v1/admin/countBudgetTotal")] [HttpGet] [Authorize] public async Task> cntBg() { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new { code = 401, message = "您没有权限" }); } try { using (var db = new TestDbContext()) { var budgetTotals = await (from e in db.events join b in db.budgetDetails on e.Id equals b.source_event_id into budgetGroup from bg in budgetGroup.DefaultIfEmpty() group bg by new { e.Id, e.name } into g select new { sourceEventId = g.Key.Id, sourceEventName = g.Key.name, budgetTotalMoney = g.Sum(b => b == null ? 0 : b.budget_money) }).ToListAsync(); return Ok(new { code = 200, data = budgetTotals }); } } catch (Exception ex) { return Ok(new { code = 500, message = "服务器错误", details = ex.Message }); } } [Route("api/v1/admin/DelBg")] [HttpDelete] [Authorize] public async Task> DelBg([FromQuery] int id) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new error_mb { code = 401, message = "无权访问" }); } try { using (TestDbContext sub = new TestDbContext()) { //var f = sub.budgetDetails.FindAsync(id); //if (f == null ) return Ok(new error_mb { code = 404, message = "没有目标元素" }); sub.budgetDetails.Remove(sub.budgetDetails.Find(id)); await sub.SaveChangesAsync(); return Ok(new error_mb { code = 200, message = "成功删除" }); } }catch (Exception ex) { return Ok(new { code = 500, message="服务器错误", error = ex.Message }); } } } }