Skip to content

Instantly share code, notes, and snippets.

@allenhark
Last active February 14, 2023 19:20
Show Gist options
  • Save allenhark/ca92288de8c45c1848a5aeb8b3cdb456 to your computer and use it in GitHub Desktop.
Save allenhark/ca92288de8c45c1848a5aeb8b3cdb456 to your computer and use it in GitHub Desktop.
/**
* Create charge
* @returns charges
*/
async create_charge({ request, response, auth, params }) {
// get current customer from auth session
let user = await auth.getUser()
//get charge creation variables
let { charge, customer, chargeOptions } = request.all()
try {
//create charge with loans data controller
let { data } = await Axios.post(`clients/${customer}/charges`, charge)
let save = {
m_id: data.resourceId, //customer ID from middleware
customer_id: params.id, // customer ID from core banking server
amount: charge.amount, // charge amount
m_client_id: customer, // Customer ID from loans queue server
currency: chargeOptions.currency.code, // Charges currency ISO https://www.iso.org/iso-4217-currency-codes.html
created_by: user.id, // user creating the charge
dueDate: Moment(charge.dueDate).format('YYYY-MM-DD') //format date to weird american style
}
//Broadcast event
Event.fire("new::logs", {
user_id: user.id,
category: 'customer_charges',
activity: `User ${user.first_name} has created a new customer charge on customer: ${params.id} with id: ${data.resourceId}`
})
// store data to database
let saved = await Charge.create(save)
// return response object
return response.json({
success: true,
message: "Charge created",
data: saved
})
} catch (e) {
// if server error
let data = e.response.data
if (data.httpStatusCode !== 500)
return response.status(data.httpStatusCode).send({
success: false,
error: {
code: data.httpStatusCode,
message: data.errors[0].defaultUserMessage
}
})
else
throw new Error('Internal server error')
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment