get teams according eventId

This commit is contained in:
王炜翔 2024-10-26 10:23:37 +08:00
parent 9b885f319e
commit cbfdbd3882

View File

@ -8,6 +8,7 @@ using Microsoft.EntityFrameworkCore;
using NPOI.OpenXmlFormats.Dml;
using System.Security.Claims;
using static allteam1;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace asg_form.Controllers.Team
{
@ -206,24 +207,70 @@ namespace asg_form.Controllers.Team
}
}
public class TeamFind
{
public string teamName { get; set; }
public List<string> roleNames { get; set; }
}
[Route("api/v3/form/all")]
[HttpGet]
[Authorize]
public async Task<ActionResult<object>> GetformbyId(short page, short limit, int eventId)
public async Task<ActionResult<object>> GetFormById(short page, short limit, int sort, int eventId)
{
using (var db = new TestDbContext())
{
try
{
var query = await db.Forms.FindAsync(eventId);
return Ok(new { code = 200, message = "没有完成的接口" });
var query = from m in db.Forms
where m.events.Id == eventId
join r in db.Roles on m.Id equals r.form.Id
select new
{
m.team_name,
r.role_name,
m.piaoshu,
m.time
};
switch (sort)
{
case 0:
query = query.OrderByDescending(m => m.piaoshu).ThenByDescending(m => m.time);
break;
case 1:
query = query.OrderBy(m => m.piaoshu);
break;
case 2:
query = query.OrderByDescending(m => m.piaoshu);
break;
case 3:
query = query.OrderBy(m => m.time);
break;
case 4:
query = query.OrderByDescending(m => m.time);
break;
default:
break;
}
var results = await query
.GroupBy(m => new { m.team_name, m.piaoshu, m.time })
.Select(g => new TeamFind
{
teamName = g.Key.team_name,
roleNames = g.Select(x => x.role_name).ToList()
})
.Skip((page - 1) * limit)
.Take(limit)
.ToListAsync();
int total = results.Count();
return Ok(new { code = 200, message = "成功", data = results,total });
}
catch (Exception ex)
{
return Ok(new { code = 500, message = "服务器错误", ex });
return Ok(new { code = 500, message = "服务器错误", ex = ex.Message });
}
}
}
}
}