public IHttpActionResult GetDonationYears([FromUri(Name = "impersonateDonorId")] int?impersonateDonorId = null) { return(Authorized(token => { var impersonateUserId = impersonateDonorId == null ? string.Empty : _mpDonorService.GetEmailViaDonorId(impersonateDonorId.Value).Email; try { var donationYears = (impersonateDonorId != null) ? _impersonationService.WithImpersonation(token, impersonateUserId, () => _gatewayDonationService.GetDonationYearsForAuthenticatedUser(token)) : _gatewayDonationService.GetDonationYearsForAuthenticatedUser(token); if (donationYears == null || !donationYears.HasYears) { return (RestHttpActionResult <ApiErrorDto> .WithStatus(HttpStatusCode.NotFound, new ApiErrorDto("No donation years found"))); } return (Ok(donationYears)); } catch (UserImpersonationException e) { return (e.GetRestHttpActionResult()); } catch (Exception e) { var msg = "DonationController: GetDonationYears " + impersonateDonorId; _logger.Error(msg, e); return (RestHttpActionResult <ApiErrorDto> .WithStatus(HttpStatusCode.InternalServerError, new ApiErrorDto("Unexpected exception happens at server side"))); } })); }