Skip to content

Instantly share code, notes, and snippets.

@kevguy
Last active August 19, 2021 03:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kevguy/7f22f6037bf0c768b8a8d672b16f42c3 to your computer and use it in GitHub Desktop.
Save kevguy/7f22f6037bf0c768b8a8d672b16f42c3 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const STATE_APPLYING = 'apply';
const STATE_REJECTED = 'rejected';
const STATE_WITHDRAWN = 'application_withdrawn';
const STATE_USER_RECEIVED_PRELIMINARY_OFFER = 'received_preliminary_offer';
const STATE_REQUESTED_FUNDING = 'funding_amount_requested';
const STATE_PENDING_INVESTMENT_REVIEW = 'pending_investment_review';
const STATE_PENDING_INVESTMENT_MANAGER_REVIEW = 'pending_manager_review';
const STATE_PENDING_USER_REVIEW_TERM_SHEET = 'offered_term_sheet';
const STATE_PENDING_CREDIT_TEAM_REVIEW = 'pending_credit_review';
const STATE_PENDING_CREDIT_TEAM_DD_REVIEW = 'dd_required';
const STATE_PENDING_USER_ACCEPT_OFFER = 'pending_accept';
const STATE_PENDING_USER_SIGN_AGREEMENT = 'pending_sign_agreement';
const STATE_PENDING_FUND_DISBURSEMENT = 'pending_fund_disbursement';
const STATE_FUND_DISBURSED = 'fund_disbursed';
const STATE_REMITTANCE_STARTED = 'remittance_started';
const STATE_FUND_CLOSED = 'fund_closed';
const TRANSITION_USER_APPLY_APPLICATION = 'user_apply_application';
const TRANSITION_USER_SUBMIT_APPLICATION = 'user_request_funding_amount';
const TRANSITION_USER_EDIT_INFO = 'user_edit_info';
const TRANSITION_USER_DISCARD_APPLICATION = 'user_discard_application';
const TRANSITION_USER_REJECT_PROPOSAL = 'user_reject_proposal';
const TRANSITION_USER_ACCEPT_OFFER = 'user_accept_offer';
const TRANSITION_USER_REJECT_OFFER = 'user_reject_offer';
const TRANSITION_USER_SIGN_AGREEMENT = 'user_sign_agreement';
const TRANSITION_USER_ACCEPT_TERM_SHEET = 'user_accept_term_sheet';
const TRANSITION_CAL_PRELIM_OFFER = 'choco_cal_prelim_offer';
const TRANSITION_CHOCO_DEPOSIT_FUND = 'choco_deposit_fund';
const TRANSITION_CHOCO_DETERMINE_REPAYMENT_SCHEDULED_START_DATE =
'choco_determine_repayment_scheduled_start_date';
const TRANSITION_CHOCO_RETRACT_OFFER = 'choco_retrace_offer';
const TRANSITION_CHOCO_FINISH_REPAYMENT_SCHEDULE = 'choco_finish_repayment_schedule';
const TRANSITION_SALES_ANALYST_REJECT = 'sales_analyst_reject';
const TRANSITION_SALES_ANALYST_CREATE_TERM_SHEET_AND_SUBMIT = 'sales_analyst_create_term_sheet_and_submit';
const TRANSITION_SALES_ANALYST_SUBMIT_PROPOSAL = 'sales_analyst_submit_proposal';
const TRANSITION_SALES_MANAGER_OR_ABOVE_ASSIGN_COMPANY = 'sales_manager_or_above_assign_company';
const TRANSITION_ADMIN_START_REVIEW = 'sales_manager_or_above_review_application';
const TRANSITION_INVESTMENT_MANAGER_OR_ABOVE_EDIT_OFFER = 'investment_manager_or_above_edit_offer';
const TRANSITION_INVESTMENT_MANAGER_DISAPPROVE_PROPOSAL = 'investment_manager_disapprove_proposal';
const TRANSITION_INVESTMENT_MANAGER_REJECT_APPLICATION = 'investment_manager_reject_application';
const TRANSITION_INVESTMENT_MANAGER_APPROVE_TERM_SHEET = 'investment_manager_approve_term_sheet';
const TRANSITION_CREDIT_TEAM_APPROVE_PROPOSAL = 'credit_team_approve_proposal';
const TRANSITION_CREDIT_TEAM_DISAPPROVE_PROPOSAL = 'credit_team_disapprove_proposal';
const TRANSITION_CREDIT_TEAM_CREATE_Q_AND_A_FORM = 'credit_team_create_q_and_a_form';
const TRANSITION_CREDIT_TEAM_REJECT_APPLICATION = 'credit_team_reject_application';
const TRANSITION_CREDIT_TEAM_OR_ABOVE_EDIT_OFFER = 'credit_team_or_above_edit_offer';
const fundMachine = Machine({
id: 'fund',
initial: STATE_APPLYING,
context: {
},
states: {
[STATE_REJECTED]: {
type: 'final'
},
[STATE_WITHDRAWN]: {
type: 'final'
},
[STATE_FUND_CLOSED]: {
type: 'final'
},
[STATE_APPLYING]: {
on: {
[TRANSITION_USER_APPLY_APPLICATION]: {
target: STATE_USER_RECEIVED_PRELIMINARY_OFFER,
},
[TRANSITION_CAL_PRELIM_OFFER]: {
target: STATE_USER_RECEIVED_PRELIMINARY_OFFER,
}
}
},
[STATE_USER_RECEIVED_PRELIMINARY_OFFER]: {
on: {
[TRANSITION_USER_SUBMIT_APPLICATION]: {
target: STATE_REQUESTED_FUNDING,
},
[TRANSITION_ADMIN_START_REVIEW]: {
target: STATE_PENDING_INVESTMENT_REVIEW,
}
}
},
[STATE_REQUESTED_FUNDING]: {
on: {
[TRANSITION_USER_EDIT_INFO]: {
},
[TRANSITION_ADMIN_START_REVIEW]: {
target: STATE_PENDING_INVESTMENT_REVIEW,
}
}
},
[STATE_PENDING_INVESTMENT_REVIEW]: {
on: {
[TRANSITION_USER_EDIT_INFO]: {
},
[TRANSITION_SALES_MANAGER_OR_ABOVE_ASSIGN_COMPANY]: {
},
[TRANSITION_SALES_ANALYST_CREATE_TERM_SHEET_AND_SUBMIT]: {
target: STATE_PENDING_INVESTMENT_MANAGER_REVIEW,
},
[TRANSITION_SALES_ANALYST_REJECT]: {
target: STATE_REJECTED,
},
[TRANSITION_USER_DISCARD_APPLICATION]: {
target: STATE_WITHDRAWN,
}
}
},
[STATE_PENDING_INVESTMENT_MANAGER_REVIEW]: {
on: {
[TRANSITION_INVESTMENT_MANAGER_OR_ABOVE_EDIT_OFFER]: {
},
[TRANSITION_SALES_MANAGER_OR_ABOVE_ASSIGN_COMPANY]: {
},
[TRANSITION_INVESTMENT_MANAGER_APPROVE_TERM_SHEET]: {
target: STATE_PENDING_USER_REVIEW_TERM_SHEET,
},
[TRANSITION_INVESTMENT_MANAGER_DISAPPROVE_PROPOSAL]: {
target: STATE_PENDING_INVESTMENT_REVIEW,
},
[TRANSITION_USER_DISCARD_APPLICATION]: {
target: STATE_WITHDRAWN,
}
}
},
[STATE_PENDING_USER_REVIEW_TERM_SHEET]: {
on: {
[TRANSITION_USER_REJECT_PROPOSAL]: {
target: STATE_PENDING_INVESTMENT_REVIEW,
},
[TRANSITION_USER_ACCEPT_TERM_SHEET]: {
target: STATE_PENDING_CREDIT_TEAM_REVIEW,
},
[TRANSITION_USER_DISCARD_APPLICATION]: {
target: STATE_WITHDRAWN,
}
}
},
[STATE_PENDING_CREDIT_TEAM_REVIEW]: {
on: {
[TRANSITION_CREDIT_TEAM_OR_ABOVE_EDIT_OFFER]: {
},
[TRANSITION_CREDIT_TEAM_DISAPPROVE_PROPOSAL]: {
target: STATE_PENDING_INVESTMENT_REVIEW,
},
[TRANSITION_CREDIT_TEAM_CREATE_Q_AND_A_FORM]: {
target: STATE_PENDING_CREDIT_TEAM_DD_REVIEW,
},
[TRANSITION_CREDIT_TEAM_REJECT_APPLICATION]: {
target: STATE_REJECTED,
},
[TRANSITION_CREDIT_TEAM_APPROVE_PROPOSAL]: {
target: STATE_PENDING_USER_ACCEPT_OFFER,
}
}
},
[STATE_PENDING_CREDIT_TEAM_DD_REVIEW]: {
on: {
[TRANSITION_USER_EDIT_INFO]: {
},
[TRANSITION_SALES_ANALYST_SUBMIT_PROPOSAL]: {
target: STATE_PENDING_CREDIT_TEAM_REVIEW,
}
}
},
[STATE_PENDING_USER_ACCEPT_OFFER]: {
on: {
[TRANSITION_USER_REJECT_OFFER]: {
target: STATE_WITHDRAWN,
},
[TRANSITION_USER_ACCEPT_OFFER]: {
target: STATE_PENDING_USER_SIGN_AGREEMENT,
},
[TRANSITION_CHOCO_RETRACT_OFFER]: {
target: STATE_REJECTED,
}
}
},
[STATE_PENDING_USER_SIGN_AGREEMENT]: {
on: {
[TRANSITION_USER_SIGN_AGREEMENT]: {
target: STATE_PENDING_FUND_DISBURSEMENT,
}
}
},
[STATE_PENDING_FUND_DISBURSEMENT]: {
on: {
[TRANSITION_CHOCO_DEPOSIT_FUND]: {
target: STATE_FUND_DISBURSED,
}
}
},
[STATE_FUND_DISBURSED]: {
on: {
[TRANSITION_CHOCO_DETERMINE_REPAYMENT_SCHEDULED_START_DATE]: {
target: STATE_REMITTANCE_STARTED,
}
}
},
[STATE_REMITTANCE_STARTED]: {
on: {
[TRANSITION_CHOCO_FINISH_REPAYMENT_SCHEDULE]: {
target: STATE_FUND_CLOSED,
}
}
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment