no tusable SignUp Buttons are now disabled
This commit is contained in:
parent
1d033499f9
commit
212e1a393d
2 changed files with 71 additions and 60 deletions
|
@ -185,7 +185,7 @@ namespace Lieb.Data
|
||||||
|
|
||||||
public async Task SignUp(int raidId, int liebUserId, int guildWars2AccountId, int plannedRoleId, SignUpType signUpType)
|
public async Task SignUp(int raidId, int liebUserId, int guildWars2AccountId, int plannedRoleId, SignUpType signUpType)
|
||||||
{
|
{
|
||||||
if (!await IsRoleSignUpAllowed(raidId, liebUserId, plannedRoleId, signUpType, true, new List<int>()))
|
if (!IsRoleSignUpAllowed(raidId, liebUserId, plannedRoleId, signUpType, true))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ namespace Lieb.Data
|
||||||
|
|
||||||
public async Task ChangeSignUpType(int raidId, int liebUserId, int plannedRoleId, SignUpType signUpType)
|
public async Task ChangeSignUpType(int raidId, int liebUserId, int plannedRoleId, SignUpType signUpType)
|
||||||
{
|
{
|
||||||
if (!await IsRoleSignUpAllowed(raidId, liebUserId, plannedRoleId, signUpType, true, new List<int>()))
|
if (!IsRoleSignUpAllowed(raidId, liebUserId, plannedRoleId, signUpType, true))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -301,10 +301,43 @@ namespace Lieb.Data
|
||||||
|
|
||||||
public bool IsRoleSignUpAllowed(int raidId, int liebUserId, int plannedRoleId, SignUpType signUpType, bool moveFlexUser)
|
public bool IsRoleSignUpAllowed(int raidId, int liebUserId, int plannedRoleId, SignUpType signUpType, bool moveFlexUser)
|
||||||
{
|
{
|
||||||
return IsRoleSignUpAllowed(raidId, liebUserId, plannedRoleId, signUpType, moveFlexUser, new List<int>()).Result;
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
Raid? raid = context.Raids
|
||||||
|
.Include(r => r.Roles)
|
||||||
|
.Include(r => r.SignUps)
|
||||||
|
.FirstOrDefault(r => r.RaidId == raidId);
|
||||||
|
|
||||||
|
if (raid == null) return false;
|
||||||
|
|
||||||
|
if (raid.RaidType == RaidType.Planned)
|
||||||
|
{
|
||||||
|
//if (raid.MoveFlexAllowed)
|
||||||
|
{
|
||||||
|
return IsRoleSignUpAllowed(raid, liebUserId, plannedRoleId, signUpType, moveFlexUser, new List<int>()).Result;
|
||||||
|
}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// return IsRoleSignUpAllowed(liebUserId, plannedRoleId, signUpType);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PlannedRaidRole? role = context.PlannedRaidRoles
|
||||||
|
.AsNoTracking()
|
||||||
|
.FirstOrDefault(r => r.PlannedRaidRoleId == plannedRoleId);
|
||||||
|
if(role == null) return false;
|
||||||
|
if (role.IsRandomSignUpRole)
|
||||||
|
{
|
||||||
|
// new sign up is available if there are free spots and the user is not signed up or still in the random role
|
||||||
|
RaidSignUp? signUp = raid.SignUps.FirstOrDefault(s => s.LiebUserId == liebUserId);
|
||||||
|
return raid.SignUps.Where(s => s.SignUpType == SignUpType.SignedUp).Count() < role.Spots
|
||||||
|
&& (signUp == null || signUp.PlannedRaidRoleId == plannedRoleId || signUp.SignUpType == SignUpType.SignedOff);
|
||||||
|
}
|
||||||
|
return raid.SignUps.Where(s => s.LiebUserId == liebUserId && s.PlannedRaidRoleId == plannedRoleId).Any();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> IsRoleSignUpAllowed(int raidId, int liebUserId, int plannedRoleId, SignUpType signUpType, bool moveFlexUser, List<int> checkedRoleIds)
|
private async Task<bool> IsRoleSignUpAllowed(Raid raid, int liebUserId, int plannedRoleId, SignUpType signUpType, bool moveFlexUser, List<int> checkedRoleIds)
|
||||||
{
|
{
|
||||||
if (IsRoleSignUpAllowed(liebUserId, plannedRoleId, signUpType))
|
if (IsRoleSignUpAllowed(liebUserId, plannedRoleId, signUpType))
|
||||||
return true;
|
return true;
|
||||||
|
@ -313,12 +346,6 @@ namespace Lieb.Data
|
||||||
checkedRoleIds = new List<int>();
|
checkedRoleIds = new List<int>();
|
||||||
checkedRoleIds.Add(plannedRoleId);
|
checkedRoleIds.Add(plannedRoleId);
|
||||||
|
|
||||||
using var context = _contextFactory.CreateDbContext();
|
|
||||||
Raid? raid = context.Raids
|
|
||||||
.Include(r => r.Roles)
|
|
||||||
.Include(r => r.SignUps)
|
|
||||||
.FirstOrDefault(r => r.RaidId == raidId);
|
|
||||||
|
|
||||||
if (raid == null)
|
if (raid == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -329,11 +356,11 @@ namespace Lieb.Data
|
||||||
foreach (RaidSignUp signUp in raid.SignUps.Where(s => s.LiebUserId == userId && s.SignUpType == SignUpType.Flex))
|
foreach (RaidSignUp signUp in raid.SignUps.Where(s => s.LiebUserId == userId && s.SignUpType == SignUpType.Flex))
|
||||||
{
|
{
|
||||||
if (!checkedRoleIds.Contains(signUp.PlannedRaidRoleId)
|
if (!checkedRoleIds.Contains(signUp.PlannedRaidRoleId)
|
||||||
&& await IsRoleSignUpAllowed(raidId, userId, signUp.PlannedRaidRoleId, SignUpType.SignedUp, moveFlexUser, checkedRoleIds))
|
&& await IsRoleSignUpAllowed(raid, userId, signUp.PlannedRaidRoleId, SignUpType.SignedUp, moveFlexUser, checkedRoleIds))
|
||||||
{
|
{
|
||||||
if (moveFlexUser)
|
if (moveFlexUser)
|
||||||
{
|
{
|
||||||
await ChangeSignUpType(raidId, userId, signUp.PlannedRaidRoleId, SignUpType.SignedUp);
|
await ChangeSignUpType(raid.RaidId, userId, signUp.PlannedRaidRoleId, SignUpType.SignedUp);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>@role.Name</b> (@usedSpots /@role.Spots) <br> @role.Description </td>
|
<td><b>@role.Name</b> (@usedSpots /@role.Spots) <br> @role.Description </td>
|
||||||
<td>
|
<td>
|
||||||
|
<table>
|
||||||
@foreach (var signUp in signUps)
|
@foreach (var signUp in signUps)
|
||||||
{
|
{
|
||||||
@if(signUp.SignUpType != SignUpType.SignedOff)
|
@if(signUp.SignUpType != SignUpType.SignedOff)
|
||||||
|
@ -44,37 +45,20 @@
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
</table>
|
||||||
</td>
|
</td>
|
||||||
@if(_liebUserId > 0)
|
@if(_liebUserId > 0)
|
||||||
{
|
{
|
||||||
@if(_raid.RaidType == RaidType.Planned)
|
bool notIsRoleSignUpAllowed = !RaidService.IsRoleSignUpAllowed(_raid.RaidId, _user.LiebUserId, role.PlannedRaidRoleId, SignUpType.SignedUp, false);
|
||||||
{
|
bool notIsBackupAllowed = _raid.RaidType != RaidType.Planned && notIsRoleSignUpAllowed;
|
||||||
@if (RaidService.IsRoleSignUpAllowed(_raid.RaidId, _user.LiebUserId, role.PlannedRaidRoleId, SignUpType.SignedUp, false))
|
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.SignedUp)" disabled="@notIsRoleSignUpAllowed">Sign Up</button></td>
|
||||||
{
|
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Maybe)" disabled="@notIsRoleSignUpAllowed">Maybe</button></td>
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.SignedUp)">Sign Up</button></td>
|
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Backup)" disabled="@notIsBackupAllowed">Backup</button></td>
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Maybe)">Maybe</button></td>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
}
|
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Backup)">Backup</button></td>
|
|
||||||
@if (isSignedUp && userRole.SignUpType != SignUpType.SignedOff && _raid.RaidType == RaidType.Planned)
|
@if (isSignedUp && userRole.SignUpType != SignUpType.SignedOff && _raid.RaidType == RaidType.Planned)
|
||||||
{
|
{
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Flex)">Flex</button></td>
|
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Flex)">Flex</button></td>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
@if (role.IsRandomSignUpRole && _raid.SignUps.Where(s => s.SignUpType == SignUpType.SignedUp).Count() < role.Spots)
|
|
||||||
{
|
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.SignedUp)">Sign Up</button></td>
|
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Maybe)">Maybe</button></td>
|
|
||||||
<td><button @onclick="() => SignUpClicked(role, _user, isSignedUp, SignUpType.Backup)">Backup</button></td>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue