Automated Task

限制谱面更新

Type Before updating entry

Created 7/23/2024, 4:51:55 PM

Updated 7/23/2024, 4:51:55 PM

Description 限制已通过的谱面的谱面文件更新。

Code
1
using Microsoft.Extensions.Logging;
2
using Microsoft.Extensions.DependencyInjection;
3
using PhiZoneApi.Models;
4
using PhiZoneApi.Interfaces;
5
using PhiZoneApi.Constants;
6
using PhiZoneApi.Dtos.Deliverers;
7
using PhiZoneApi.Enums;
8

9
var target = (ChartSubmission)Target;
10
var currentUser = CurrentUser!;
11
await using (var scope = ServiceProvider.CreateAsyncScope())
12
{
13
    if (target.RepresentationId == null) return null;
14
    var chartRepository = scope.ServiceProvider.GetRequiredService<IChartRepository>();
15
    var resourceService = scope.ServiceProvider.GetRequiredService<IResourceService>();
16
    var chart = await chartRepository.GetChartAsync(target.RepresentationId.Value);
17
    if (chart.FileChecksum != target.FileChecksum && !resourceService.HasPermission(currentUser, UserRole.Moderator))
18
        return new EventTaskResponseDto
19
        {
20
            Status = ResponseStatus.ErrorBrief,
21
            Code = ResponseCodes.InvalidOperation,
22
            Message = "[7th PecJam] 无法为已通过的谱面更新谱面文件。Cannot update file when the chart has already been approved."
23
        };
24
}