private Expression <Func <Claim, bool> > GetClaimStatusPredicate(ClaimStatusSpec status) { switch (status) { case ClaimStatusSpec.Any: return(claim => true); case ClaimStatusSpec.Active: return(c => c.ClaimStatus != Claim.Status.DeclinedByMaster && c.ClaimStatus != Claim.Status.DeclinedByUser && c.ClaimStatus != Claim.Status.OnHold); case ClaimStatusSpec.InActive: return(c => !(c.ClaimStatus != Claim.Status.DeclinedByMaster && c.ClaimStatus != Claim.Status.DeclinedByUser && c.ClaimStatus != Claim.Status.OnHold)); case ClaimStatusSpec.Discussion: return(c => c.ClaimStatus == Claim.Status.AddedByMaster || c.ClaimStatus == Claim.Status.AddedByUser || c.ClaimStatus == Claim.Status.Discussed); case ClaimStatusSpec.OnHold: return(c => c.ClaimStatus == Claim.Status.OnHold); case ClaimStatusSpec.Approved: return(c => c.ClaimStatus == Claim.Status.Approved); default: throw new ArgumentOutOfRangeException(nameof(status), status, null); } }
public Task <IReadOnlyCollection <Claim> > GetClaimsForGroups(int projectId, ClaimStatusSpec active, int[] characterGroupsIds) { return(GetClaimsImpl(projectId, active, claim => (claim.CharacterGroupId != null && characterGroupsIds.Contains(claim.CharacterGroupId.Value)) || (claim.CharacterId != null && characterGroupsIds.Any(id => SqlFunctions.CharIndex(id.ToString(), claim.Character.ParentGroupsImpl.ListIds) > 0 )))); }
public Task <IReadOnlyCollection <Claim> > GetActiveClaimsForMaster(int projectId, int userId, ClaimStatusSpec status) { return(GetClaimsImpl(projectId, status, claim => claim.ResponsibleMasterUserId == userId)); }
private async Task <IReadOnlyCollection <Claim> > GetClaimsImpl(int projectId, ClaimStatusSpec status, Expression <Func <Claim, bool> > predicate) { await LoadProjectCharactersAndGroups(projectId); await LoadMasters(projectId); await LoadProjectFields(projectId); Debug.WriteLine($"{nameof(LoadProjectClaimsAndComments)} started"); return(await Ctx .ClaimSet .Include(c => c.Comments.Select(cm => cm.Finance)) .Include(c => c.Watermarks) .Include(c => c.Player) .Include(c => c.FinanceOperations) .Where(GetClaimStatusPredicate(status)) .Where(predicate) .Where( c => c.ProjectId == projectId ).ToListAsync()); }
public Task <IReadOnlyCollection <Claim> > GetClaims(int projectId, ClaimStatusSpec status) { return(GetClaimsImpl(projectId, status, claim => true)); }
public Task <IReadOnlyCollection <Claim> > GetClaimsForPlayer(int projectId, ClaimStatusSpec claimStatusSpec, int userId) { return(GetClaimsImpl(projectId, claimStatusSpec, claim => claim.PlayerUserId == userId)); }
public async Task <IReadOnlyCollection <ClaimWithPlayer> > GetClaimHeadersWithPlayer(int projectId, ClaimStatusSpec claimStatusSpec) { return(await Ctx.Set <Claim>().Where(claim => claim.ProjectId == projectId) .Where(ClaimPredicates.GetClaimStatusPredicate(claimStatusSpec)) .Include(c => c.Player.Extra) .Select( claim => new ClaimWithPlayer() { Player = claim.Player, ClaimId = claim.ClaimId, CharacterName = claim.Character.CharacterName, Extra = claim.Player.Extra, }) .ToListAsync()); }
public async Task <IReadOnlyCollection <ClaimCountByMaster> > GetClaimsCountByMasters(int projectId, ClaimStatusSpec claimStatusSpec) { return(await Ctx.Set <Claim>().Where(claim => claim.ProjectId == projectId) .Where(ClaimPredicates.GetClaimStatusPredicate(claimStatusSpec)).GroupBy(claim => claim.ResponsibleMasterUserId) .Select(grouping => new ClaimCountByMaster() { ClaimCount = grouping.Count(), MasterId = grouping.Key }) .ToListAsync()); }
public async Task <IReadOnlyCollection <Claim> > GetClaimsForMoneyTransfersListAsync(int projectId, ClaimStatusSpec claimStatusSpec) { return(await Ctx .ClaimSet .AsNoTracking() .Include(c => c.Player) .Where(ClaimPredicates.GetClaimStatusPredicate(claimStatusSpec)) .Where(c => c.ProjectId == projectId) .ToArrayAsync()); }
public Task <IReadOnlyCollection <Claim> > GetClaimsForGroupDirect(int projectId, ClaimStatusSpec active, int characterGroupsId) { return(GetClaimsImpl(projectId, active, claim => claim.CharacterGroupId == characterGroupsId)); }
public Task <IReadOnlyCollection <Claim> > GetClaimsForRoomType(int projectId, ClaimStatusSpec claimStatusSpec, int?roomTypeId) { if (roomTypeId != null) { return(GetClaimsImpl(projectId, claimStatusSpec, claim => claim.AccommodationRequest.AccommodationTypeId == roomTypeId)); } else { return(GetClaimsImpl(projectId, claimStatusSpec, claim => claim.AccommodationRequest == null)); } }