public async Task <Standard> GetStandardVersionById(string id, string version = null) { Standard standard = null; try { var standardId = new StandardId(id); switch (standardId.IdType) { case StandardId.StandardIdType.LarsCode: standard = await _standardRepository.GetStandardVersionByLarsCode(standardId.LarsCode, version); break; case StandardId.StandardIdType.IFateReferenceNumber: standard = await _standardRepository.GetStandardVersionByIFateReferenceNumber(standardId.IFateReferenceNumber, version); break; case StandardId.StandardIdType.StandardUId: standard = await _standardRepository.GetStandardVersionByStandardUId(standardId.StandardUId); break; default: throw new ArgumentOutOfRangeException("id", "StandardId was not of type StandardUId, LarsCode or IfateReferenceNumber"); } } catch (Exception ex) { _logger.LogError(ex, $"STANDARD VERSION: Failed to get for standard id: {id}"); } return(standard); }