Update release notes and deploy workspace
This commit is contained in:
@@ -73,6 +73,7 @@ public static partial class AdminSeasonManagementEndpoints
|
||||
}
|
||||
}
|
||||
|
||||
var season = await db.Seasons.FirstOrDefaultAsync(item => item.Id == seasonId);
|
||||
var existingResult = await db.Results.FirstOrDefaultAsync(item =>
|
||||
item.SeasonId == seasonId
|
||||
&& item.CategoryId == request.CategoryId);
|
||||
@@ -94,6 +95,13 @@ public static partial class AdminSeasonManagementEndpoints
|
||||
existingResult.CategoryName = category.Name;
|
||||
}
|
||||
|
||||
var wasPublished = season?.WinnersPublishedAt is not null;
|
||||
if (wasPublished && season is not null)
|
||||
{
|
||||
season.WinnersPublishedAt = null;
|
||||
season.WinnersPublishedByTwitchId = null;
|
||||
}
|
||||
|
||||
adminAuditService.AddEntry(
|
||||
session.TwitchUserId,
|
||||
"result.set",
|
||||
@@ -106,6 +114,7 @@ public static partial class AdminSeasonManagementEndpoints
|
||||
categoryId = request.CategoryId,
|
||||
candidateId = request.CandidateId,
|
||||
candidateName = candidate.DisplayName,
|
||||
unpublishedWinners = wasPublished,
|
||||
},
|
||||
RequestMetadataReader.Read(context));
|
||||
|
||||
@@ -130,12 +139,20 @@ public static partial class AdminSeasonManagementEndpoints
|
||||
var result = await db.Results
|
||||
.Include(item => item.Category)
|
||||
.Include(item => item.Candidate)
|
||||
.Include(item => item.Season)
|
||||
.FirstOrDefaultAsync(item => item.Id == resultId);
|
||||
if (result is null)
|
||||
{
|
||||
return Results.NotFound();
|
||||
}
|
||||
|
||||
var wasPublished = result.Season.WinnersPublishedAt is not null;
|
||||
if (wasPublished)
|
||||
{
|
||||
result.Season.WinnersPublishedAt = null;
|
||||
result.Season.WinnersPublishedByTwitchId = null;
|
||||
}
|
||||
|
||||
db.Results.Remove(result);
|
||||
adminAuditService.AddEntry(
|
||||
session.TwitchUserId,
|
||||
@@ -149,10 +166,98 @@ public static partial class AdminSeasonManagementEndpoints
|
||||
result.CategoryId,
|
||||
result.CandidateId,
|
||||
candidateName = result.Candidate.DisplayName,
|
||||
unpublishedWinners = wasPublished,
|
||||
},
|
||||
RequestMetadataReader.Read(context));
|
||||
|
||||
await db.SaveChangesAsync(context.RequestAborted);
|
||||
return Results.Ok(new { deleted = true, resultId });
|
||||
}
|
||||
|
||||
private static async Task<IResult> PublishWinners(
|
||||
HttpContext context,
|
||||
int seasonId,
|
||||
AwardsDbContext db,
|
||||
IAdminAuditService adminAuditService)
|
||||
{
|
||||
var session = AdminEndpointConventions.CurrentSession(context);
|
||||
var season = await db.Seasons.FirstOrDefaultAsync(item => item.Id == seasonId, context.RequestAborted);
|
||||
if (season is null)
|
||||
{
|
||||
return Results.NotFound();
|
||||
}
|
||||
|
||||
var issues = await BuildWinnerPublicationIssuesAsync(db, seasonId, context.RequestAborted);
|
||||
if (issues.Length > 0)
|
||||
{
|
||||
return CreateWinnerPublicationError(issues);
|
||||
}
|
||||
|
||||
season.WinnersPublishedAt = DateTimeOffset.UtcNow;
|
||||
season.WinnersPublishedByTwitchId = session.TwitchUserId;
|
||||
|
||||
adminAuditService.AddEntry(
|
||||
session.TwitchUserId,
|
||||
"winners.publish",
|
||||
"season",
|
||||
season.Id.ToString(),
|
||||
$"Gewinner für {season.Year} wurden veröffentlicht.",
|
||||
new
|
||||
{
|
||||
seasonId,
|
||||
season.Year,
|
||||
season.WinnersPublishedAt,
|
||||
},
|
||||
RequestMetadataReader.Read(context));
|
||||
|
||||
await db.SaveChangesAsync(context.RequestAborted);
|
||||
return Results.Ok(new
|
||||
{
|
||||
saved = true,
|
||||
seasonId,
|
||||
winnersPublishedAt = season.WinnersPublishedAt,
|
||||
winnersPublishedByTwitchId = season.WinnersPublishedByTwitchId,
|
||||
});
|
||||
}
|
||||
|
||||
private static async Task<IResult> UnpublishWinners(
|
||||
HttpContext context,
|
||||
int seasonId,
|
||||
AwardsDbContext db,
|
||||
IAdminAuditService adminAuditService)
|
||||
{
|
||||
var session = AdminEndpointConventions.CurrentSession(context);
|
||||
var season = await db.Seasons.FirstOrDefaultAsync(item => item.Id == seasonId, context.RequestAborted);
|
||||
if (season is null)
|
||||
{
|
||||
return Results.NotFound();
|
||||
}
|
||||
|
||||
var previousPublishedAt = season.WinnersPublishedAt;
|
||||
season.WinnersPublishedAt = null;
|
||||
season.WinnersPublishedByTwitchId = null;
|
||||
|
||||
adminAuditService.AddEntry(
|
||||
session.TwitchUserId,
|
||||
"winners.unpublish",
|
||||
"season",
|
||||
season.Id.ToString(),
|
||||
$"Gewinner für {season.Year} wurden von der Landingpage zurückgenommen.",
|
||||
new
|
||||
{
|
||||
seasonId,
|
||||
season.Year,
|
||||
previousPublishedAt,
|
||||
},
|
||||
RequestMetadataReader.Read(context));
|
||||
|
||||
await db.SaveChangesAsync(context.RequestAborted);
|
||||
return Results.Ok(new
|
||||
{
|
||||
saved = true,
|
||||
seasonId,
|
||||
winnersPublishedAt = season.WinnersPublishedAt,
|
||||
winnersPublishedByTwitchId = season.WinnersPublishedByTwitchId,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user