| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
- import UserBalance from 'App/Models/UserBalance'
- import PaginationService from 'App/Services/PaginationService'
- import { schema } from '@ioc:Adonis/Core/Validator'
- import UserBalanceService from 'App/Services/UserBalanceService'
- import Decimal from 'decimal.js'
- import { BalanceRecordType } from 'App/Models/BalanceRecord'
- export default class UserBalancesController {
- private paginationService = new PaginationService(UserBalance)
- public async index({ request }: HttpContextContract) {
- return await this.paginationService.paginate(request.all())
- }
- public async store({ request }: HttpContextContract) {
- const data: any = await request.validate({
- schema: schema.create({
- userId: schema.number(),
- balance: schema.string()
- })
- })
- const userBalance = await UserBalance.create(data)
- return userBalance
- }
- public async show({ params, bouncer }: HttpContextContract) {
- const row = await UserBalanceService.getBalance(params.id)
- await bouncer.authorize('owner', row)
- return row
- }
- public async update({ params, request }: HttpContextContract) {
- const userBalance = await UserBalance.findOrFail(params.id)
- const data: any = await request.validate({
- schema: schema.create({
- userId: schema.number.optional(),
- amount: schema.number.optional(),
- type: schema.string.optional(),
- description: schema.string.optional()
- })
- })
- userBalance.merge(data)
- await userBalance.save()
- return userBalance
- }
- public async destroy({ params }: HttpContextContract) {
- const userBalance = await UserBalance.findOrFail(params.id)
- await userBalance.delete()
- }
- public async recharge({ request }: HttpContextContract) {
- console.log(JSON.stringify(request.all(), null, 4))
- UserBalanceService.modifiyBalance({
- userId: parseInt(request.param('userId')),
- amount: new Decimal(request.input('id')),
- type: BalanceRecordType.Recharge
- })
- const data = request.all()
- return {
- ok: true,
- data: {
- id: data.id,
- latest_receipt: true,
- transaction: data.transaction
- }
- }
- }
- }
|