feat: add withdraw request functionality and UI components
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class BankCard extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'card_number',
|
||||
'holder_name',
|
||||
'user_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'user_id' => 'integer',
|
||||
];
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,11 @@ class Document extends Model
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function invoice()
|
||||
{
|
||||
return $this->hasOne(Invoice::class);
|
||||
}
|
||||
|
||||
public function assignments()
|
||||
{
|
||||
return $this->hasMany(DocumentAssignment::class);
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\InvoicePaymentMethodEnum;
|
||||
use App\Enums\InvoiceStatusEnum;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Invoice extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'number',
|
||||
'amount',
|
||||
'status',
|
||||
'payment_method',
|
||||
'paid_at',
|
||||
'document_id',
|
||||
'user_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'status' => InvoiceStatusEnum::class,
|
||||
'payment_method' => InvoicePaymentMethodEnum::class,
|
||||
'amount' => 'integer',
|
||||
'paid_at' => 'datetime',
|
||||
'document_id' => 'integer',
|
||||
'user_id' => 'integer',
|
||||
];
|
||||
|
||||
public function document()
|
||||
{
|
||||
return $this->belongsTo(Document::class);
|
||||
}
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function payments()
|
||||
{
|
||||
return $this->hasMany(Payment::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\PaymentPurposeEnum;
|
||||
use App\Enums\PaymentStatusEnum;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Payment extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'track_id',
|
||||
'amount',
|
||||
'status',
|
||||
'purpose',
|
||||
'ref_number',
|
||||
'verified_at',
|
||||
'invoice_id',
|
||||
'payer_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'status' => PaymentStatusEnum::class,
|
||||
'purpose' => PaymentPurposeEnum::class,
|
||||
'amount' => 'integer',
|
||||
'verified_at' => 'datetime',
|
||||
'invoice_id' => 'integer',
|
||||
'payer_id' => 'integer',
|
||||
];
|
||||
|
||||
public function invoice()
|
||||
{
|
||||
return $this->belongsTo(Invoice::class);
|
||||
}
|
||||
|
||||
public function payer()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'payer_id');
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,10 @@ class Report extends Model
|
||||
'medium_id',
|
||||
'status',
|
||||
'body',
|
||||
'technique',
|
||||
'finding',
|
||||
'diagnose',
|
||||
'recommendation',
|
||||
'submitted_at',
|
||||
];
|
||||
|
||||
@@ -43,7 +47,7 @@ class Report extends Model
|
||||
'media_assignments',
|
||||
'mediable_id',
|
||||
'media_id'
|
||||
)->withPivot('collection')->withTimestamps();
|
||||
)->withPivot('collection');
|
||||
}
|
||||
|
||||
public function medium()
|
||||
|
||||
@@ -22,6 +22,7 @@ class User extends Authenticatable
|
||||
protected $fillable = [
|
||||
'username',
|
||||
'fullname',
|
||||
'birthdate',
|
||||
'national_code',
|
||||
'level',
|
||||
'email',
|
||||
@@ -56,6 +57,7 @@ class User extends Authenticatable
|
||||
{
|
||||
return [
|
||||
'email_verified_at' => 'datetime',
|
||||
'birthdate' => 'date:Y-m-d',
|
||||
'password' => 'hashed',
|
||||
];
|
||||
}
|
||||
@@ -76,4 +78,24 @@ class User extends Authenticatable
|
||||
{
|
||||
return $this->hasMany(Shift::class);
|
||||
}
|
||||
|
||||
public function wallet()
|
||||
{
|
||||
return $this->hasOne(Wallet::class);
|
||||
}
|
||||
|
||||
public function invoices()
|
||||
{
|
||||
return $this->hasMany(Invoice::class);
|
||||
}
|
||||
|
||||
public function bankCards()
|
||||
{
|
||||
return $this->hasMany(BankCard::class);
|
||||
}
|
||||
|
||||
public function withdrawRequests()
|
||||
{
|
||||
return $this->hasMany(WithdrawRequest::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Wallet extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'balance',
|
||||
'user_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'balance' => 'integer',
|
||||
'user_id' => 'integer',
|
||||
];
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function transactions()
|
||||
{
|
||||
return $this->hasMany(WalletTransaction::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\WalletTransactionReasonEnum;
|
||||
use App\Enums\WalletTransactionTypeEnum;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class WalletTransaction extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'type',
|
||||
'reason',
|
||||
'amount',
|
||||
'balance_after',
|
||||
'description',
|
||||
'wallet_id',
|
||||
'invoice_id',
|
||||
'payment_id',
|
||||
'withdraw_request_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'type' => WalletTransactionTypeEnum::class,
|
||||
'reason' => WalletTransactionReasonEnum::class,
|
||||
'amount' => 'integer',
|
||||
'balance_after' => 'integer',
|
||||
'wallet_id' => 'integer',
|
||||
'invoice_id' => 'integer',
|
||||
'payment_id' => 'integer',
|
||||
'withdraw_request_id' => 'integer',
|
||||
];
|
||||
|
||||
public function wallet()
|
||||
{
|
||||
return $this->belongsTo(Wallet::class);
|
||||
}
|
||||
|
||||
public function invoice()
|
||||
{
|
||||
return $this->belongsTo(Invoice::class);
|
||||
}
|
||||
|
||||
public function payment()
|
||||
{
|
||||
return $this->belongsTo(Payment::class);
|
||||
}
|
||||
|
||||
public function withdrawRequest()
|
||||
{
|
||||
return $this->belongsTo(WithdrawRequest::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\WithdrawRequestStatusEnum;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class WithdrawRequest extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'amount',
|
||||
'status',
|
||||
'admin_note',
|
||||
'reviewed_at',
|
||||
'reviewed_by',
|
||||
'user_id',
|
||||
'bank_card_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'status' => WithdrawRequestStatusEnum::class,
|
||||
'amount' => 'integer',
|
||||
'reviewed_at' => 'datetime',
|
||||
'reviewed_by' => 'integer',
|
||||
'user_id' => 'integer',
|
||||
'bank_card_id' => 'integer',
|
||||
];
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function bankCard()
|
||||
{
|
||||
return $this->belongsTo(BankCard::class);
|
||||
}
|
||||
|
||||
public function reviewedBy()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'reviewed_by');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user