Skip to content

Instantly share code, notes, and snippets.

@trikitrok
Created December 7, 2025 22:05
Show Gist options
  • Select an option

  • Save trikitrok/08aa74dded7df4fa9c80a0da57fad57f to your computer and use it in GitHub Desktop.

Select an option

Save trikitrok/08aa74dded7df4fa9c80a0da57fad57f to your computer and use it in GitHub Desktop.
class AcmeCompanyApi implements CompanyApi {
constructor(
private readonly forGettingCauses: ForGettingCauses,
private readonly forOpeningClaim: ForOpeningClaim,
private readonly authTokenRetriever: AuthTokenRetriever) {
}
async open(claim: Claim): Promise<OpeningResult> {
const token = await this.authTokenRetriever.retrieveToken();
const causes = await this.forGettingCauses.getAllFor(claim, token);
const cause = this.findCauseInClaim(causes, claim);
const referenceInCompany = await this.forOpeningClaim.open(claim, cause, token);
return OpeningResult.successful(referenceInCompany, claim);
}
private findCauseInClaim(causes: Cause[], claim: Claim): Cause {
let foundCause = causes.find((c) => c.causeCode === claim.causeCode());
if (!foundCause) {
throw new CannotFindMatchingCauseError();
}
return foundCause;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment