public async Task <IActionResult> EditAvatar(Guid id) { var presenter = new MvcGetEditAvatarPresenter(); var useCaseResult = await mediator.Send(new GetEditAvatar(id, presenter)); if (useCaseResult.IsSuccessful) { return(View(presenter.GetViewModel())); } var map = new Dictionary <ResultCategory, Func <IActionResult> > { { ResultCategory.NotFound, NotFound }, { ResultCategory.AccessDenied, Forbid }, { ResultCategory.GeneralFailure, () => StatusCode(500) }, }; return(map[useCaseResult.ResultCategory]()); }