Last active
August 19, 2021 03:23
-
-
Save kevguy/7f22f6037bf0c768b8a8d672b16f42c3 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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