Skip to content

feat(duely): group duels invitations#194

Merged
DIvanCode merged 8 commits intomasterfrom
duely/feat/group-duels
Mar 3, 2026
Merged

feat(duely): group duels invitations#194
DIvanCode merged 8 commits intomasterfrom
duely/feat/group-duels

Conversation

@DIvanCode
Copy link
Copy Markdown
Owner

No description provided.

@DIvanCode DIvanCode self-assigned this Feb 26, 2026
@DIvanCode DIvanCode linked an issue Feb 26, 2026 that may be closed by this pull request
@github-actions
Copy link
Copy Markdown

Summary

Summary
Generated on: 02/26/2026 - 23:19:00
Coverage date: 02/26/2026 - 23:18:38 - 02/26/2026 - 23:18:57
Parser: MultiReport (2x Cobertura)
Assemblies: 4
Classes: 172
Files: 112
Line coverage: 96% (2702 of 2812)
Covered lines: 2702
Uncovered lines: 110
Coverable lines: 2812
Total lines: 5727
Branch coverage: 86.6% (558 of 644)
Covered branches: 558
Total branches: 644
Method coverage: Feature is only available for sponsors
Tag: 107_22465419922

Coverage

Duely.Application.Services - 89.6%
Name Line Branch
Duely.Application.Services 89.6% 100%
Duely.Application.Services.Errors.AuthenticationError 100%
Duely.Application.Services.Errors.EntityAlreadyExistsError 33.3%
Duely.Application.Services.Errors.EntityNotFoundError 33.3%
Duely.Application.Services.Errors.ForbiddenError 33.3%
Duely.Application.Services.Errors.RateLimitExceededError 100%
Duely.Application.Services.ExeshStepsBuilder 100% 100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageCommand 100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageHandler 100%
Duely.Application.Services.Outbox.Handlers.RunCodeOutboxHandler 100% 100%
Duely.Application.Services.Outbox.Handlers.SendMessageOutboxHandler 100%
Duely.Application.Services.Outbox.Handlers.TestSolutionHandler 100%
Duely.Application.Services.Outbox.Relay.OutboxDispatcher 100% 100%
Duely.Application.Services.RateLimiting.RateLimitingOptions 100%
Duely.Application.Services.RateLimiting.RunUserCodeLimiter 100%
Duely.Application.Services.RateLimiting.SubmissionRateLimiter 100%
Duely.Application.UseCases - 97.2%
Name Line Branch
Duely.Application.UseCases 97.2% 86.8%
Duely.Application.UseCases.Dtos.CodeRunDto 100%
Duely.Application.UseCases.Dtos.DuelConfigurationDto 100%
Duely.Application.UseCases.Dtos.DuelDto 100%
Duely.Application.UseCases.Dtos.DuelInvitationDto 100%
Duely.Application.UseCases.Dtos.DuelTaskConfigurationDto 100%
Duely.Application.UseCases.Dtos.DuelTaskDto 100%
Duely.Application.UseCases.Dtos.DuelTaskSolutionDto 100%
Duely.Application.UseCases.Dtos.GroupDto 100%
Duely.Application.UseCases.Dtos.GroupInvitationDto 100%
Duely.Application.UseCases.Dtos.GroupUserDto 100%
Duely.Application.UseCases.Dtos.SubmissionDto 100%
Duely.Application.UseCases.Dtos.SubmissionListItemDto 100%
Duely.Application.UseCases.Dtos.TicketDto 100%
Duely.Application.UseCases.Dtos.TokenDto 100%
Duely.Application.UseCases.Dtos.UserDto 100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommand 100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommandValidator 0%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunHandler 100% 100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunHandler 100% 100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunQuery 100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunCommand 100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunHandler 100% 96.4%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommandValidator
96.7% 66.6%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Handler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Query
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsHandler
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsQuery
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommandValidator
96.7% 50%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.CheckDuelsForFinishHandler 98.8% 77.7%
Duely.Application.UseCases.Features.Duels.GetActiveDuelHandler 96.2% 68.7%
Duely.Application.UseCases.Features.Duels.GetActiveDuelQuery 100%
Duely.Application.UseCases.Features.Duels.GetDuelHandler 96.2% 85%
Duely.Application.UseCases.Features.Duels.GetDuelQuery 100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryHandler 96.7% 68.7%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryQuery 100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationH
andler
100% 92.8%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionHandler
100% 92.8%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationH
andler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationH
andler
100% 91.6%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationCom
mand
100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationHan
dler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsQuery
100%
Duely.Application.UseCases.Features.Duels.Search.CancelDuelSearchCommand 100%
Duely.Application.UseCases.Features.Duels.Search.CancelDuelSearchHandler 100% 100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchCommand 100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchHandler 100% 83.3%
Duely.Application.UseCases.Features.Duels.TryCreateDuelHandler 99.1% 91.6%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommand 100%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommandVali
dator
0%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionHandler 83.6% 85.7%
Duely.Application.UseCases.Features.Groups.AcceptInviteCommand 100%
Duely.Application.UseCases.Features.Groups.AcceptInviteHandler 100% 100%
Duely.Application.UseCases.Features.Groups.CancelInviteCommand 100%
Duely.Application.UseCases.Features.Groups.CancelInviteHandler 96.6% 75%
Duely.Application.UseCases.Features.Groups.ChangeRoleCommand 100%
Duely.Application.UseCases.Features.Groups.ChangeRoleHandler 90.4% 78.5%
Duely.Application.UseCases.Features.Groups.CreateGroupCommand 100%
Duely.Application.UseCases.Features.Groups.CreateGroupCommandValidator 0%
Duely.Application.UseCases.Features.Groups.CreateGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.DenyInviteCommand 100%
Duely.Application.UseCases.Features.Groups.DenyInviteHandler 100% 100%
Duely.Application.UseCases.Features.Groups.ExcludeUserCommand 100%
Duely.Application.UseCases.Features.Groups.ExcludeUserHandler 88.8% 75%
Duely.Application.UseCases.Features.Groups.GetGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsHandler 100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsQuery 100%
Duely.Application.UseCases.Features.Groups.GetGroupQuery 100%
Duely.Application.UseCases.Features.Groups.GetGroupUsersHandler 97.6% 90%
Duely.Application.UseCases.Features.Groups.GetGroupUsersQuery 100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsHandler 100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsQuery 100%
Duely.Application.UseCases.Features.Groups.InviteUserCommand 100%
Duely.Application.UseCases.Features.Groups.InviteUserHandler 95.9% 83.3%
Duely.Application.UseCases.Features.Groups.LeaveGroupCommand 100%
Duely.Application.UseCases.Features.Groups.LeaveGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommand 100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommandValidator 0%
Duely.Application.UseCases.Features.Groups.UpdateGroupHandler 100% 100%
Duely.Application.UseCases.Features.Submissions.GetSubmissionHandler 95.2% 83.3%
Duely.Application.UseCases.Features.Submissions.GetSubmissionQuery 100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsHandler 100% 100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsQuery 100%
Duely.Application.UseCases.Features.Submissions.SendSubmissionCommand 83.3%
Duely.Application.UseCases.Features.Submissions.SendSubmissionHandler 92.7% 56.2%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusComma
nd
100%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusHandl
er
95.8% 77.7%
Duely.Application.UseCases.Features.Users.CreateTicketCommand 100%
Duely.Application.UseCases.Features.Users.CreateTicketHandler 94.7% 66.6%
Duely.Application.UseCases.Features.Users.GetByNicknameHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetUserByNicknameQuery 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommand 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommandValidator 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetUserQuery 100%
Duely.Application.UseCases.Features.Users.LoginCommand 100%
Duely.Application.UseCases.Features.Users.LoginHandler 100% 100%
Duely.Application.UseCases.Features.Users.RefreshTokenCommand 100%
Duely.Application.UseCases.Features.Users.RefreshTokenHandler 100% 100%
Duely.Application.UseCases.Features.Users.RegisterCommand 100%
Duely.Application.UseCases.Features.Users.RegisterCommandValidator 100%
Duely.Application.UseCases.Features.Users.RegisterHandler 100% 100%
Duely.Domain.Models - 98.5%
Name Line Branch
Duely.Domain.Models 98.5% ****
Duely.Domain.Models.CodeRun 100%
Duely.Domain.Models.Duels.Duel 100%
Duely.Domain.Models.Duels.DuelConfiguration 100%
Duely.Domain.Models.Duels.DuelTask 100%
Duely.Domain.Models.Duels.DuelTaskConfiguration 100%
Duely.Domain.Models.Duels.DuelTaskSolution 100%
Duely.Domain.Models.Duels.Pending.FriendlyPendingDuel 100%
Duely.Domain.Models.Duels.Pending.GroupPendingDuel 100%
Duely.Domain.Models.Duels.Pending.PendingDuel 100%
Duely.Domain.Models.Duels.Pending.RankedPendingDuel 100%
Duely.Domain.Models.Groups.Group 100%
Duely.Domain.Models.Groups.GroupMembership 100%
Duely.Domain.Models.Messages.CodeRunStatusUpdatedMessage 100%
Duely.Domain.Models.Messages.DuelChangedMessage 100%
Duely.Domain.Models.Messages.DuelFinishedMessage 100%
Duely.Domain.Models.Messages.DuelInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.DuelInvitationDeniedMessage 100%
Duely.Domain.Models.Messages.DuelInvitationMessage 100%
Duely.Domain.Models.Messages.DuelStartedMessage 100%
Duely.Domain.Models.Messages.GroupDuelInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.GroupDuelInvitationMessage 100%
Duely.Domain.Models.Messages.GroupInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.GroupInvitationMessage 100%
Duely.Domain.Models.Messages.OpponentSolutionUpdatedMessage 100%
Duely.Domain.Models.Messages.SubmissionStatusUpdatedMessage 100%
Duely.Domain.Models.Outbox.OutboxMessage 71.4%
Duely.Domain.Models.Outbox.Payloads.RunCodePayload 100%
Duely.Domain.Models.Outbox.Payloads.SendMessagePayload 100%
Duely.Domain.Models.Outbox.Payloads.TestSolutionPayload 100%
Duely.Domain.Models.Submission 100%
Duely.Domain.Models.User 100%
Duely.Domain.Services - 89.9%
Name Line Branch
Duely.Domain.Services 89.9% 85.4%
Duely.Domain.Services.Duels.DuelManager 88.2% 85.9%
Duely.Domain.Services.Duels.DuelOptions 100%
Duely.Domain.Services.Duels.DuelPair 100%
Duely.Domain.Services.Duels.RatingManager 96.2% 86.3%
Duely.Domain.Services.Duels.RatingToTaskLevelMappingItem 100%
Duely.Domain.Services.Duels.TaskService 84% 86.7%
Duely.Domain.Services.Groups.GroupPermissionsService 96.7% 82.6%
Duely.Domain.Services.Users.JwtTokenOptions 100%
Duely.Domain.Services.Users.TokenService 100%

@DIvanCode DIvanCode force-pushed the duely/feat/group-duels branch from 55d9553 to be9bf19 Compare March 3, 2026 00:11
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 3, 2026

Summary

Summary
Generated on: 03/03/2026 - 00:13:16
Coverage date: 03/03/2026 - 00:12:52 - 03/03/2026 - 00:13:14
Parser: MultiReport (2x Cobertura)
Assemblies: 4
Classes: 180
Files: 118
Line coverage: 96% (2726 of 2837)
Covered lines: 2726
Uncovered lines: 111
Coverable lines: 2837
Total lines: 5829
Branch coverage: 87.6% (554 of 632)
Covered branches: 554
Total branches: 632
Method coverage: Feature is only available for sponsors
Tag: 109_22601851747

Coverage

Duely.Application.Services - 89.6%
Name Line Branch
Duely.Application.Services 89.6% 100%
Duely.Application.Services.Errors.AuthenticationError 100%
Duely.Application.Services.Errors.EntityAlreadyExistsError 33.3%
Duely.Application.Services.Errors.EntityNotFoundError 33.3%
Duely.Application.Services.Errors.ForbiddenError 33.3%
Duely.Application.Services.Errors.RateLimitExceededError 100%
Duely.Application.Services.ExeshStepsBuilder 100% 100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageCommand 100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageHandler 100%
Duely.Application.Services.Outbox.Handlers.RunCodeOutboxHandler 100% 100%
Duely.Application.Services.Outbox.Handlers.SendMessageOutboxHandler 100%
Duely.Application.Services.Outbox.Handlers.TestSolutionHandler 100%
Duely.Application.Services.Outbox.Relay.OutboxDispatcher 100% 100%
Duely.Application.Services.RateLimiting.RateLimitingOptions 100%
Duely.Application.Services.RateLimiting.RunUserCodeLimiter 100%
Duely.Application.Services.RateLimiting.SubmissionRateLimiter 100%
Duely.Application.UseCases - 97.1%
Name Line Branch
Duely.Application.UseCases 97.1% 88.4%
Duely.Application.UseCases.Dtos.CodeRunDto 100%
Duely.Application.UseCases.Dtos.DuelConfigurationDto 100%
Duely.Application.UseCases.Dtos.DuelDto 100%
Duely.Application.UseCases.Dtos.DuelInvitationDto 100%
Duely.Application.UseCases.Dtos.DuelTaskConfigurationDto 100%
Duely.Application.UseCases.Dtos.DuelTaskDto 100%
Duely.Application.UseCases.Dtos.DuelTaskSolutionDto 100%
Duely.Application.UseCases.Dtos.GroupDto 100%
Duely.Application.UseCases.Dtos.GroupDuelDto 100%
Duely.Application.UseCases.Dtos.GroupDuelInvitationDto 100%
Duely.Application.UseCases.Dtos.GroupInvitationDto 100%
Duely.Application.UseCases.Dtos.GroupUserDto 100%
Duely.Application.UseCases.Dtos.SubmissionDto 100%
Duely.Application.UseCases.Dtos.SubmissionListItemDto 100%
Duely.Application.UseCases.Dtos.TicketDto 100%
Duely.Application.UseCases.Dtos.TokenDto 100%
Duely.Application.UseCases.Dtos.UserDto 100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommand 100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommandValidator 0%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunHandler 100% 100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunHandler 100% 100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunQuery 100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunCommand 100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunHandler 100% 96.4%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommandValidator
96.7% 66.6%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Handler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Query
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsHandler
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsQuery
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommandValidator
96.7% 50%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.CheckDuelsForFinishHandler 100% 83.3%
Duely.Application.UseCases.Features.Duels.GetActiveDuelHandler 100% 100%
Duely.Application.UseCases.Features.Duels.GetActiveDuelQuery 100%
Duely.Application.UseCases.Features.Duels.GetDuelHandler 100% 100%
Duely.Application.UseCases.Features.Duels.GetDuelQuery 100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryHandler 100% 100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryQuery 100%
Duely.Application.UseCases.Features.Duels.GetGroupDuelsHandler 98.3% 75%
Duely.Application.UseCases.Features.Duels.GetGroupDuelsQuery 100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationH
andler
100% 92.8%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionHandler
100% 92.8%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationH
andler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationH
andler
100% 91.6%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationCom
mand
100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationHan
dler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsQuery
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingGroupDuelI
nvitationsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingGroupDuelI
nvitationsQuery
100%
Duely.Application.UseCases.Features.Duels.Search.CancelDuelSearchCommand 100%
Duely.Application.UseCases.Features.Duels.Search.CancelDuelSearchHandler 100% 100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchCommand 100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchHandler 100% 83.3%
Duely.Application.UseCases.Features.Duels.TryCreateDuelHandler 94% 85.7%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommand 100%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommandVali
dator
0%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionHandler 83.6% 85.7%
Duely.Application.UseCases.Features.Groups.AcceptInviteCommand 100%
Duely.Application.UseCases.Features.Groups.AcceptInviteHandler 100% 100%
Duely.Application.UseCases.Features.Groups.CancelInviteCommand 100%
Duely.Application.UseCases.Features.Groups.CancelInviteHandler 96.6% 75%
Duely.Application.UseCases.Features.Groups.ChangeRoleCommand 100%
Duely.Application.UseCases.Features.Groups.ChangeRoleHandler 90.4% 78.5%
Duely.Application.UseCases.Features.Groups.CreateGroupCommand 100%
Duely.Application.UseCases.Features.Groups.CreateGroupCommandValidator 0%
Duely.Application.UseCases.Features.Groups.CreateGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.DenyInviteCommand 100%
Duely.Application.UseCases.Features.Groups.DenyInviteHandler 100% 100%
Duely.Application.UseCases.Features.Groups.ExcludeUserCommand 100%
Duely.Application.UseCases.Features.Groups.ExcludeUserHandler 88.8% 75%
Duely.Application.UseCases.Features.Groups.GetGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsHandler 100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsQuery 100%
Duely.Application.UseCases.Features.Groups.GetGroupQuery 100%
Duely.Application.UseCases.Features.Groups.GetGroupUsersHandler 97.6% 90%
Duely.Application.UseCases.Features.Groups.GetGroupUsersQuery 100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsHandler 100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsQuery 100%
Duely.Application.UseCases.Features.Groups.InviteUserCommand 100%
Duely.Application.UseCases.Features.Groups.InviteUserHandler 95.9% 83.3%
Duely.Application.UseCases.Features.Groups.LeaveGroupCommand 100%
Duely.Application.UseCases.Features.Groups.LeaveGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommand 100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommandValidator 0%
Duely.Application.UseCases.Features.Groups.UpdateGroupHandler 100% 100%
Duely.Application.UseCases.Features.Submissions.GetSubmissionHandler 95.2% 83.3%
Duely.Application.UseCases.Features.Submissions.GetSubmissionQuery 100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsHandler 100% 100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsQuery 100%
Duely.Application.UseCases.Features.Submissions.SendSubmissionCommand 83.3%
Duely.Application.UseCases.Features.Submissions.SendSubmissionHandler 92.7% 56.2%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusComma
nd
100%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusHandl
er
95.8% 77.7%
Duely.Application.UseCases.Features.Users.CreateTicketCommand 100%
Duely.Application.UseCases.Features.Users.CreateTicketHandler 94.7% 66.6%
Duely.Application.UseCases.Features.Users.GetByNicknameHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetUserByNicknameQuery 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommand 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommandValidator 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetUserQuery 100%
Duely.Application.UseCases.Features.Users.LoginCommand 100%
Duely.Application.UseCases.Features.Users.LoginHandler 100% 100%
Duely.Application.UseCases.Features.Users.RefreshTokenCommand 100%
Duely.Application.UseCases.Features.Users.RefreshTokenHandler 100% 100%
Duely.Application.UseCases.Features.Users.RegisterCommand 100%
Duely.Application.UseCases.Features.Users.RegisterCommandValidator 100%
Duely.Application.UseCases.Features.Users.RegisterHandler 100% 100%
Duely.Application.UseCases.Helpers.DuelDtoMapper 95.6% 85%
Duely.Domain.Models - 98.6%
Name Line Branch
Duely.Domain.Models 98.6% ****
Duely.Domain.Models.CodeRun 100%
Duely.Domain.Models.Duels.Duel 100%
Duely.Domain.Models.Duels.DuelConfiguration 100%
Duely.Domain.Models.Duels.DuelTask 100%
Duely.Domain.Models.Duels.DuelTaskConfiguration 100%
Duely.Domain.Models.Duels.DuelTaskSolution 100%
Duely.Domain.Models.Duels.Pending.FriendlyPendingDuel 100%
Duely.Domain.Models.Duels.Pending.GroupPendingDuel 100%
Duely.Domain.Models.Duels.Pending.PendingDuel 100%
Duely.Domain.Models.Duels.Pending.RankedPendingDuel 100%
Duely.Domain.Models.Groups.Group 100%
Duely.Domain.Models.Groups.GroupDuel 100%
Duely.Domain.Models.Groups.GroupMembership 100%
Duely.Domain.Models.Messages.CodeRunStatusUpdatedMessage 100%
Duely.Domain.Models.Messages.DuelChangedMessage 100%
Duely.Domain.Models.Messages.DuelFinishedMessage 100%
Duely.Domain.Models.Messages.DuelInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.DuelInvitationDeniedMessage 100%
Duely.Domain.Models.Messages.DuelInvitationMessage 100%
Duely.Domain.Models.Messages.DuelStartedMessage 100%
Duely.Domain.Models.Messages.GroupDuelInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.GroupDuelInvitationMessage 100%
Duely.Domain.Models.Messages.GroupInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.GroupInvitationMessage 100%
Duely.Domain.Models.Messages.OpponentSolutionUpdatedMessage 100%
Duely.Domain.Models.Messages.SubmissionStatusUpdatedMessage 100%
Duely.Domain.Models.Outbox.OutboxMessage 71.4%
Duely.Domain.Models.Outbox.Payloads.RunCodePayload 100%
Duely.Domain.Models.Outbox.Payloads.SendMessagePayload 100%
Duely.Domain.Models.Outbox.Payloads.TestSolutionPayload 100%
Duely.Domain.Models.Submission 100%
Duely.Domain.Models.User 100%
Duely.Domain.Services - 89.9%
Name Line Branch
Duely.Domain.Services 89.9% 85.4%
Duely.Domain.Services.Duels.DuelManager 88.2% 85.9%
Duely.Domain.Services.Duels.DuelOptions 100%
Duely.Domain.Services.Duels.DuelPair 100%
Duely.Domain.Services.Duels.RatingManager 96.2% 86.3%
Duely.Domain.Services.Duels.RatingToTaskLevelMappingItem 100%
Duely.Domain.Services.Duels.TaskService 84% 86.7%
Duely.Domain.Services.Groups.GroupPermissionsService 96.7% 82.6%
Duely.Domain.Services.Users.JwtTokenOptions 100%
Duely.Domain.Services.Users.TokenService 100%

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 3, 2026

Summary

Summary
Generated on: 03/03/2026 - 17:41:52
Coverage date: 03/03/2026 - 17:41:24 - 03/03/2026 - 17:41:49
Parser: MultiReport (2x Cobertura)
Assemblies: 4
Classes: 180
Files: 118
Line coverage: 96% (2737 of 2849)
Covered lines: 2737
Uncovered lines: 112
Coverable lines: 2849
Total lines: 5851
Branch coverage: 87.4% (563 of 644)
Covered branches: 563
Total branches: 644
Method coverage: Feature is only available for sponsors
Tag: 110_22635432491

Coverage

Duely.Application.Services - 89.6%
Name Line Branch
Duely.Application.Services 89.6% 100%
Duely.Application.Services.Errors.AuthenticationError 100%
Duely.Application.Services.Errors.EntityAlreadyExistsError 33.3%
Duely.Application.Services.Errors.EntityNotFoundError 33.3%
Duely.Application.Services.Errors.ForbiddenError 33.3%
Duely.Application.Services.Errors.RateLimitExceededError 100%
Duely.Application.Services.ExeshStepsBuilder 100% 100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageCommand 100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageHandler 100%
Duely.Application.Services.Outbox.Handlers.RunCodeOutboxHandler 100% 100%
Duely.Application.Services.Outbox.Handlers.SendMessageOutboxHandler 100%
Duely.Application.Services.Outbox.Handlers.TestSolutionHandler 100%
Duely.Application.Services.Outbox.Relay.OutboxDispatcher 100% 100%
Duely.Application.Services.RateLimiting.RateLimitingOptions 100%
Duely.Application.Services.RateLimiting.RunUserCodeLimiter 100%
Duely.Application.Services.RateLimiting.SubmissionRateLimiter 100%
Duely.Application.UseCases - 97.1%
Name Line Branch
Duely.Application.UseCases 97.1% 88%
Duely.Application.UseCases.Dtos.CodeRunDto 100%
Duely.Application.UseCases.Dtos.DuelConfigurationDto 100%
Duely.Application.UseCases.Dtos.DuelDto 100%
Duely.Application.UseCases.Dtos.DuelInvitationDto 100%
Duely.Application.UseCases.Dtos.DuelTaskConfigurationDto 100%
Duely.Application.UseCases.Dtos.DuelTaskDto 100%
Duely.Application.UseCases.Dtos.DuelTaskSolutionDto 100%
Duely.Application.UseCases.Dtos.GroupDto 100%
Duely.Application.UseCases.Dtos.GroupDuelDto 100%
Duely.Application.UseCases.Dtos.GroupDuelInvitationDto 100%
Duely.Application.UseCases.Dtos.GroupInvitationDto 100%
Duely.Application.UseCases.Dtos.GroupUserDto 100%
Duely.Application.UseCases.Dtos.SubmissionDto 100%
Duely.Application.UseCases.Dtos.SubmissionListItemDto 100%
Duely.Application.UseCases.Dtos.TicketDto 100%
Duely.Application.UseCases.Dtos.TokenDto 100%
Duely.Application.UseCases.Dtos.UserDto 100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommand 100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommandValidator 0%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunHandler 100% 100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunHandler 100% 100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunQuery 100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunCommand 100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunHandler 100% 96.4%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommandValidator
96.7% 66.6%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Handler
100% 100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Query
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsHandler
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsQuery
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommandValidator
96.7% 50%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.CancelPendingDuelsCommand 100%
Duely.Application.UseCases.Features.Duels.CancelPendingDuelsHandler 98.4% 81.2%
Duely.Application.UseCases.Features.Duels.CheckDuelsForFinishHandler 100% 83.3%
Duely.Application.UseCases.Features.Duels.GetActiveDuelHandler 100% 100%
Duely.Application.UseCases.Features.Duels.GetActiveDuelQuery 100%
Duely.Application.UseCases.Features.Duels.GetDuelHandler 100% 100%
Duely.Application.UseCases.Features.Duels.GetDuelQuery 100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryHandler 100% 100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryQuery 100%
Duely.Application.UseCases.Features.Duels.GetGroupDuelsHandler 98.3% 75%
Duely.Application.UseCases.Features.Duels.GetGroupDuelsQuery 100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationH
andler
100% 92.8%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionHandler
100% 92.8%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationH
andler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationH
andler
100% 91.6%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionHandler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationCom
mand
100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationHan
dler
100% 100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsQuery
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingGroupDuelI
nvitationsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingGroupDuelI
nvitationsQuery
100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchCommand 100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchHandler 100% 83.3%
Duely.Application.UseCases.Features.Duels.TryCreateDuelHandler 94% 85.7%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommand 100%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommandVali
dator
0%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionHandler 83.6% 85.7%
Duely.Application.UseCases.Features.Groups.AcceptInviteCommand 100%
Duely.Application.UseCases.Features.Groups.AcceptInviteHandler 100% 100%
Duely.Application.UseCases.Features.Groups.CancelInviteCommand 100%
Duely.Application.UseCases.Features.Groups.CancelInviteHandler 96.6% 75%
Duely.Application.UseCases.Features.Groups.ChangeRoleCommand 100%
Duely.Application.UseCases.Features.Groups.ChangeRoleHandler 90.4% 78.5%
Duely.Application.UseCases.Features.Groups.CreateGroupCommand 100%
Duely.Application.UseCases.Features.Groups.CreateGroupCommandValidator 0%
Duely.Application.UseCases.Features.Groups.CreateGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.DenyInviteCommand 100%
Duely.Application.UseCases.Features.Groups.DenyInviteHandler 100% 100%
Duely.Application.UseCases.Features.Groups.ExcludeUserCommand 100%
Duely.Application.UseCases.Features.Groups.ExcludeUserHandler 88.8% 75%
Duely.Application.UseCases.Features.Groups.GetGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsHandler 100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsQuery 100%
Duely.Application.UseCases.Features.Groups.GetGroupQuery 100%
Duely.Application.UseCases.Features.Groups.GetGroupUsersHandler 97.6% 90%
Duely.Application.UseCases.Features.Groups.GetGroupUsersQuery 100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsHandler 100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsQuery 100%
Duely.Application.UseCases.Features.Groups.InviteUserCommand 100%
Duely.Application.UseCases.Features.Groups.InviteUserHandler 95.9% 83.3%
Duely.Application.UseCases.Features.Groups.LeaveGroupCommand 100%
Duely.Application.UseCases.Features.Groups.LeaveGroupHandler 100% 100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommand 100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommandValidator 0%
Duely.Application.UseCases.Features.Groups.UpdateGroupHandler 100% 100%
Duely.Application.UseCases.Features.Submissions.GetSubmissionHandler 95.2% 83.3%
Duely.Application.UseCases.Features.Submissions.GetSubmissionQuery 100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsHandler 100% 100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsQuery 100%
Duely.Application.UseCases.Features.Submissions.SendSubmissionCommand 83.3%
Duely.Application.UseCases.Features.Submissions.SendSubmissionHandler 92.7% 56.2%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusComma
nd
100%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusHandl
er
95.8% 77.7%
Duely.Application.UseCases.Features.Users.CreateTicketCommand 100%
Duely.Application.UseCases.Features.Users.CreateTicketHandler 94.7% 66.6%
Duely.Application.UseCases.Features.Users.GetByNicknameHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetUserByNicknameQuery 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommand 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommandValidator 100%
Duely.Application.UseCases.Features.Users.GetUserByTicketHandler 100% 100%
Duely.Application.UseCases.Features.Users.GetUserQuery 100%
Duely.Application.UseCases.Features.Users.LoginCommand 100%
Duely.Application.UseCases.Features.Users.LoginHandler 100% 100%
Duely.Application.UseCases.Features.Users.RefreshTokenCommand 100%
Duely.Application.UseCases.Features.Users.RefreshTokenHandler 100% 100%
Duely.Application.UseCases.Features.Users.RegisterCommand 100%
Duely.Application.UseCases.Features.Users.RegisterCommandValidator 100%
Duely.Application.UseCases.Features.Users.RegisterHandler 100% 100%
Duely.Application.UseCases.Helpers.DuelDtoMapper 95.6% 85%
Duely.Domain.Models - 98.6%
Name Line Branch
Duely.Domain.Models 98.6% ****
Duely.Domain.Models.CodeRun 100%
Duely.Domain.Models.Duels.Duel 100%
Duely.Domain.Models.Duels.DuelConfiguration 100%
Duely.Domain.Models.Duels.DuelTask 100%
Duely.Domain.Models.Duels.DuelTaskConfiguration 100%
Duely.Domain.Models.Duels.DuelTaskSolution 100%
Duely.Domain.Models.Duels.Pending.FriendlyPendingDuel 100%
Duely.Domain.Models.Duels.Pending.GroupPendingDuel 100%
Duely.Domain.Models.Duels.Pending.PendingDuel 100%
Duely.Domain.Models.Duels.Pending.RankedPendingDuel 100%
Duely.Domain.Models.Groups.Group 100%
Duely.Domain.Models.Groups.GroupDuel 100%
Duely.Domain.Models.Groups.GroupMembership 100%
Duely.Domain.Models.Messages.CodeRunStatusUpdatedMessage 100%
Duely.Domain.Models.Messages.DuelChangedMessage 100%
Duely.Domain.Models.Messages.DuelFinishedMessage 100%
Duely.Domain.Models.Messages.DuelInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.DuelInvitationDeniedMessage 100%
Duely.Domain.Models.Messages.DuelInvitationMessage 100%
Duely.Domain.Models.Messages.DuelStartedMessage 100%
Duely.Domain.Models.Messages.GroupDuelInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.GroupDuelInvitationMessage 100%
Duely.Domain.Models.Messages.GroupInvitationCanceledMessage 100%
Duely.Domain.Models.Messages.GroupInvitationMessage 100%
Duely.Domain.Models.Messages.OpponentSolutionUpdatedMessage 100%
Duely.Domain.Models.Messages.SubmissionStatusUpdatedMessage 100%
Duely.Domain.Models.Outbox.OutboxMessage 71.4%
Duely.Domain.Models.Outbox.Payloads.RunCodePayload 100%
Duely.Domain.Models.Outbox.Payloads.SendMessagePayload 100%
Duely.Domain.Models.Outbox.Payloads.TestSolutionPayload 100%
Duely.Domain.Models.Submission 100%
Duely.Domain.Models.User 100%
Duely.Domain.Services - 89.9%
Name Line Branch
Duely.Domain.Services 89.9% 85.4%
Duely.Domain.Services.Duels.DuelManager 88.2% 85.9%
Duely.Domain.Services.Duels.DuelOptions 100%
Duely.Domain.Services.Duels.DuelPair 100%
Duely.Domain.Services.Duels.RatingManager 96.2% 86.3%
Duely.Domain.Services.Duels.RatingToTaskLevelMappingItem 100%
Duely.Domain.Services.Duels.TaskService 84% 86.7%
Duely.Domain.Services.Groups.GroupPermissionsService 96.7% 82.6%
Duely.Domain.Services.Users.JwtTokenOptions 100%
Duely.Domain.Services.Users.TokenService 100%

@DIvanCode DIvanCode merged commit 78ce3e2 into master Mar 3, 2026
2 checks passed
@DIvanCode DIvanCode deleted the duely/feat/group-duels branch March 3, 2026 17:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Создание дуэли в группе

1 participant