243 lines
9.5 KiB
C#
243 lines
9.5 KiB
C#
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 BgCountController : ControllerBase
|
|
{
|
|
private readonly RoleManager<Role> roleManager;
|
|
private readonly UserManager<User> userManager;
|
|
public BgCountController(
|
|
RoleManager<Role> roleManager, UserManager<User> 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<ActionResult<object>> 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,
|
|
change_time = dateString,
|
|
used_event_name = msg.usedEventName,
|
|
used_event_id = msg.usedEventId,
|
|
use_status = "0",
|
|
update_person = msg.updatePerson,
|
|
update_time = null,
|
|
};
|
|
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<ActionResult<object>> 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<ActionResult<object>> GetBgBySourceEventId([FromQuery] int sourceEventId)
|
|
{
|
|
if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
|
|
{
|
|
return Ok(new { code = 401, message = "您没有权限", data = new List<object>() });
|
|
}
|
|
|
|
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<ActionResult<object>> 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 NotFound(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<ActionResult<object>> 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 });
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|