public async Task <List <MarkupPolicyData> > Get(MarkupPolicyScope scope) { return((await GetPoliciesForScope(scope)) .Select(GetPolicyData) .Where(p => p.IsSuccess) .Select(p => p.Value) .ToList()); }
private Task <List <MarkupPolicy> > GetPoliciesForScope(MarkupPolicyScope scope) { var(type, counterpartyId, agencyId, agentId) = scope; return(type switch { MarkupPolicyScopeType.Global => _context.MarkupPolicies.Where(p => p.ScopeType == MarkupPolicyScopeType.Global).ToListAsync(), MarkupPolicyScopeType.Counterparty => _context.MarkupPolicies .Where(p => p.ScopeType == MarkupPolicyScopeType.Counterparty && p.CounterpartyId == counterpartyId) .ToListAsync(), MarkupPolicyScopeType.Agency => _context.MarkupPolicies.Where(p => p.ScopeType == MarkupPolicyScopeType.Counterparty && p.AgencyId == agencyId) .ToListAsync(), MarkupPolicyScopeType.Agent => _context.MarkupPolicies.Where(p => p.ScopeType == MarkupPolicyScopeType.Counterparty && p.AgentId == agentId) .ToListAsync(), _ => Task.FromResult(new List <MarkupPolicy>(0)) });
public async Task <Result> Modify(int policyId, MarkupPolicySettings settings, AgentContext agent) { var policy = await _context.MarkupPolicies.SingleOrDefaultAsync(p => p.Id == policyId); if (policy == null) { return(Result.Failure("Could not find policy")); } return(await Result.Success() .Bind(CheckPermissions) .Bind(UpdatePolicy)); Task <Result> CheckPermissions() { var scopeData = new MarkupPolicyScope(policy.ScopeType, policy.CounterpartyId ?? policy.AgencyId ?? policy.AgentId); return(CheckUserManagePermissions(scopeData, agent)); } async Task <Result> UpdatePolicy() { policy.Description = settings.Description; policy.Order = settings.Order; policy.TemplateId = settings.TemplateId; policy.TemplateSettings = settings.TemplateSettings; policy.Currency = settings.Currency; policy.Modified = _dateTimeProvider.UtcNow(); var validateResult = await ValidatePolicy(GetPolicyData(policy)); if (validateResult.IsFailure) { return(validateResult); } _context.Update(policy); await _context.SaveChangesAsync(); return(Result.Success()); } }
private Task <List <MarkupPolicy> > GetPoliciesForScope(MarkupPolicyScope scope) { var(agentScopeType, agencyId, agentId, agentScopeId) = scope; return(agentScopeType switch { SubjectMarkupScopeTypes.Global => _context.MarkupPolicies .Where(p => p.SubjectScopeType == SubjectMarkupScopeTypes.Global) .ToListAsync(), SubjectMarkupScopeTypes.Country => _context.MarkupPolicies .Where(p => p.SubjectScopeType == SubjectMarkupScopeTypes.Country) .ToListAsync(), SubjectMarkupScopeTypes.Locality => _context.MarkupPolicies .Where(p => p.SubjectScopeType == SubjectMarkupScopeTypes.Locality) .ToListAsync(), SubjectMarkupScopeTypes.Agency => _context.MarkupPolicies .Where(p => p.SubjectScopeType == SubjectMarkupScopeTypes.Agency && p.SubjectScopeId == agentScopeId) .ToListAsync(), SubjectMarkupScopeTypes.Agent => _context.MarkupPolicies .Where(p => p.SubjectScopeType == SubjectMarkupScopeTypes.Agent && p.SubjectScopeId == agentScopeId) .ToListAsync(), _ => Task.FromResult(new List <MarkupPolicy>(0)) });
public Task <Result> Remove(int policyId, AgentContext agent) { return(GetPolicy() .Bind(CheckPermissions) .Bind(DeletePolicy)); async Task <Result <MarkupPolicy> > GetPolicy() { var policy = await _context.MarkupPolicies.SingleOrDefaultAsync(p => p.Id == policyId); return(policy == null ? Result.Failure <MarkupPolicy>("Could not find policy") : Result.Success(policy)); } async Task <Result <MarkupPolicy> > CheckPermissions(MarkupPolicy policy) { var scopeType = policy.ScopeType; var scope = new MarkupPolicyScope(scopeType, policy.CounterpartyId ?? policy.AgencyId ?? policy.AgentId); var(_, isFailure, error) = await CheckUserManagePermissions(scope, agent); return(isFailure ? Result.Failure <MarkupPolicy>(error) : Result.Success(policy)); } async Task <Result> DeletePolicy(MarkupPolicy policy) { _context.Remove(policy); await _context.SaveChangesAsync(); return(Result.Success()); } }
public async Task <IActionResult> GetPolicies(MarkupPolicyScopeType scopeType, int?scopeId) { var scope = new MarkupPolicyScope(scopeType, scopeId); return(Ok(await _policyManager.Get(scope))); }
public async Task <List <MarkupPolicyData> > Get(MarkupPolicyScope scope) { return((await GetPoliciesForScope(scope)) .Select(GetPolicyData) .ToList()); }