public async Task <ServiceRequest> Get(string id) { var identity = (ClaimsIdentity)User.Identity; IEnumerable <Claim> claims = identity.Claims; var role = claims.Where(claim => claim.Type == "role").First(); if (role.Value == "Admin") { return(await campingTripRepository.GetServiceRequestByIdAsync(id)); } else { var userIdClaim = claims.Where(claim => claim.Type == "user_id").First(); if (userIdClaim == null) { throw new Exception("user_id claim not found"); } if (!int.TryParse(userIdClaim.Value, out int userId)) { throw new Exception("Invalid value for user_id in users claims"); } return(await campingTripRepository.GetServiceRequestByIdAndProviderIdAsync(id, userId)); } }