private Task <Either <ActionResult, MethodologyVersion> > CheckCanUpdateStatus( MethodologyVersion methodologyVersion, MethodologyStatus requestedStatus) { return(requestedStatus switch { Draft => _userService.CheckCanMarkMethodologyAsDraft(methodologyVersion), Approved => _userService.CheckCanApproveMethodology(methodologyVersion), _ => throw new ArgumentOutOfRangeException(nameof(requestedStatus), "Unexpected status") });
private Task <Either <ActionResult, Methodology> > CheckCanUpdateMethodologyStatus(Methodology methodology, MethodologyStatus status) { if (methodology.Status == status) { // Status unchanged return(Task.FromResult(new Either <ActionResult, Methodology>(methodology))); } return(status switch { MethodologyStatus.Draft => _userService.CheckCanMarkMethodologyAsDraft(methodology), MethodologyStatus.Approved => _userService.CheckCanApproveMethodology(methodology), _ => throw new ArgumentOutOfRangeException(nameof(status), "Unexpected status") });