Compare commits
1 Commits
feature/Ed
...
feature/Pa
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ea986db40 |
@@ -3,7 +3,6 @@
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Admin\Requests\Profile\ChangePasswordRequest;
|
||||
use App\Admin\Requests\Profile\EditRequest;
|
||||
use App\Admin\Resources\ExpertResource;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Traits\ApiResponse;
|
||||
@@ -20,24 +19,6 @@ class ProfileController extends Controller
|
||||
return $this->successResponse(new ExpertResource(Auth::guard('expert')->user()));
|
||||
}
|
||||
|
||||
public function edit(EditRequest $request): JsonResponse
|
||||
{
|
||||
$expert = $request->user('expert');
|
||||
|
||||
$expert->update([
|
||||
'username' => $request->username,
|
||||
'first_name' => $request->first_name,
|
||||
'last_name' => $request->last_name,
|
||||
'email' => $expert->email,
|
||||
'national_id' => $request->national_id,
|
||||
'phone_number' => $request->phone_number,
|
||||
'province_id' => $request->province_id,
|
||||
'city_id' => $request->city_id,
|
||||
]);
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
public function changePassword(ChangePasswordRequest $request): JsonResponse
|
||||
{
|
||||
$expert = Auth::guard('expert')->user();
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Requests\Profile;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Validation\Validator;
|
||||
|
||||
class EditRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, ValidationRule|array|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$user = $this->user();
|
||||
return [
|
||||
'username' => 'string|max:255',
|
||||
'first_name' => 'required|string',
|
||||
'last_name' => 'required|string',
|
||||
'national_id' => 'required',
|
||||
'email' => 'string|email|max:255',
|
||||
'phone_number' => 'string',
|
||||
'province_id' => 'string',
|
||||
'city_id' => 'string',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Database\Factories\GatewayCategoryFactory;
|
||||
use Database\Factories\BusinessTypeFactory;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class GatewayCategory extends Model
|
||||
class BusinessType extends Model
|
||||
{
|
||||
/** @use HasFactory<GatewayCategoryFactory> */
|
||||
/** @use HasFactory<BusinessTypeFactory> */
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = ['id'];
|
||||
12
backend/app/Models/FibTransaction.php
Normal file
12
backend/app/Models/FibTransaction.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class FibTransaction extends Model
|
||||
{
|
||||
/** @use HasFactory<\Database\Factories\FibTransactionFactory> */
|
||||
use HasFactory;
|
||||
}
|
||||
12
backend/app/Models/FibTransactionStatus.php
Normal file
12
backend/app/Models/FibTransactionStatus.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class FibTransactionStatus extends Model
|
||||
{
|
||||
/** @use HasFactory<\Database\Factories\FibTransactionStatusFactory> */
|
||||
use HasFactory;
|
||||
}
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Database\Factories\GatewayFactory;
|
||||
use Database\Factories\TransactionFactory;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Gateway extends Model
|
||||
class Transaction extends Model
|
||||
{
|
||||
/** @use HasFactory<GatewayFactory> */
|
||||
/** @use HasFactory<TransactionFactory> */
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = ['id'];
|
||||
15
backend/app/Models/UserGateway.php
Normal file
15
backend/app/Models/UserGateway.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Database\Factories\UserGatewayFactory;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class UserGateway extends Model
|
||||
{
|
||||
/** @use HasFactory<UserGatewayFactory> */
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = ['id'];
|
||||
}
|
||||
@@ -24,7 +24,17 @@ class ProfileController extends Controller
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
$user->update($request->validated());
|
||||
$user->update([
|
||||
'first_name' => $request->first_name,
|
||||
'last_name' => $request->last_name,
|
||||
'national_id' => $request->national_id,
|
||||
'address' => $request->address,
|
||||
'postal_code' => $request->postal_code,
|
||||
'phone_number' => $request->phone_number,
|
||||
'province_id' => $request->province_id,
|
||||
'city_id' => $request->city_id,
|
||||
'status' => 1
|
||||
]);
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
@@ -4,8 +4,6 @@ namespace App\User\Requests\Profile;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Validation\Validator;
|
||||
|
||||
class EditRequest extends FormRequest
|
||||
{
|
||||
@@ -24,18 +22,10 @@ class EditRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$user = $this->user();
|
||||
|
||||
return [
|
||||
'first_name' => [
|
||||
Rule::prohibitedIf($user->kyc_status == 1), 'string',
|
||||
],
|
||||
'last_name' => [
|
||||
Rule::prohibitedIf($user->kyc_status == 1), 'string',
|
||||
],
|
||||
'national_id' => [
|
||||
Rule::prohibitedIf($user->kyc_status == 1), 'string',
|
||||
],
|
||||
'first_name' => 'required|string',
|
||||
'last_name' => 'required|string',
|
||||
'national_id' => 'required',
|
||||
'address' => 'required',
|
||||
'postal_code' => 'required',
|
||||
'phone_number' => 'required',
|
||||
@@ -43,28 +33,4 @@ class EditRequest extends FormRequest
|
||||
'city_id' => 'required',
|
||||
];
|
||||
}
|
||||
public function after(): array
|
||||
{
|
||||
return [
|
||||
function (Validator $validator) {
|
||||
$user = $this->user();
|
||||
if ($user->kyc_status == 1) {
|
||||
$lockedFields = [
|
||||
'first_name',
|
||||
'last_name',
|
||||
'national_id',
|
||||
];
|
||||
|
||||
foreach ($lockedFields as $field) {
|
||||
if ($this->filled($field)) {
|
||||
$validator->errors()->add(
|
||||
$field,
|
||||
'you cannot change this field.'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\GatewayCategory;
|
||||
use App\Models\BusinessType;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends Factory<GatewayCategory>
|
||||
* @extends Factory<BusinessType>
|
||||
*/
|
||||
class GatewayCategoryFactory extends Factory
|
||||
class BusinessTypeFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
24
backend/database/factories/FibTransactionFactory.php
Normal file
24
backend/database/factories/FibTransactionFactory.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\FibTransaction;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends Factory<FibTransaction>
|
||||
*/
|
||||
class FibTransactionFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
24
backend/database/factories/FibTransactionStatusFactory.php
Normal file
24
backend/database/factories/FibTransactionStatusFactory.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\FibTransactionStatus;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends Factory<FibTransactionStatus>
|
||||
*/
|
||||
class FibTransactionStatusFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Gateway;
|
||||
use App\Models\Transaction;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends Factory<Gateway>
|
||||
* @extends Factory<Transaction>
|
||||
*/
|
||||
class GatewayFactory extends Factory
|
||||
class TransactionFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
24
backend/database/factories/UserGatewayFactory.php
Normal file
24
backend/database/factories/UserGatewayFactory.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\UserGateway;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends Factory<UserGateway>
|
||||
*/
|
||||
class UserGatewayFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ return new class extends Migration
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('gateway_categories', function (Blueprint $table) {
|
||||
Schema::create('business_types', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->timestamps();
|
||||
@@ -23,6 +23,6 @@ return new class extends Migration
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('gateway_categories');
|
||||
Schema::dropIfExists('business_types');
|
||||
}
|
||||
};
|
||||
@@ -11,7 +11,7 @@ return new class extends Migration
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('gateways', function (Blueprint $table) {
|
||||
Schema::create('user_gateways', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('user_id')->constrained('users');
|
||||
$table->string('username');
|
||||
@@ -22,8 +22,8 @@ return new class extends Migration
|
||||
$table->string('account_holder');
|
||||
$table->string('logo')->nullable();
|
||||
$table->string('iban');
|
||||
$table->foreignId('category_id')->constrained('gateway_categories');
|
||||
$table->string('category_name');
|
||||
$table->foreignId('business_type_id')->constrained('business_types');
|
||||
$table->string('business_type_name');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
@@ -33,6 +33,6 @@ return new class extends Migration
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('gateways');
|
||||
Schema::dropIfExists('user_gateways');
|
||||
}
|
||||
};
|
||||
@@ -23,7 +23,7 @@ return new class extends Migration
|
||||
$table->foreignId('status_id')->constrained('payment_statuses');
|
||||
$table->string('status_name');
|
||||
$table->ipAddress('ip');
|
||||
$table->foreignId('gateway_id')->constrained('gateways');
|
||||
$table->foreignId('user_gateway_id')->constrained('user_gateways');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('transactions', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('user_id')->constrained('users');
|
||||
$table->string('amount');
|
||||
$table->string('currency');
|
||||
$table->string('callback_url');
|
||||
$table->string('description');
|
||||
$table->dateTime('expires_in');
|
||||
$table->foreignId('payment_id')->constrained('payments');
|
||||
$table->string('payment_track_id');
|
||||
$table->foreignId('gateway_id')->constrained('gateways');
|
||||
$table->integer('status');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('transactions');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('fib_transaction_statuses', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('fib_transaction_statuses');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('fib_transactions', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('transaction_id')->constrained('transactions');
|
||||
$table->text('qrcode');
|
||||
$table->string('readable_code');
|
||||
$table->string('personalAppLink');
|
||||
$table->string('businessAppLink');
|
||||
$table->string('corporateAppLink');
|
||||
$table->string('paymentId');
|
||||
$table->string('paymentMethod');
|
||||
$table->timestamp('validUntil');
|
||||
$table->foreignId('status_id')->constrained('fib_transaction_statuses');
|
||||
$table->string('status_name');
|
||||
$table->timestamp('paidAt');
|
||||
$table->string('paidAmount');
|
||||
$table->string('paidCurrency');
|
||||
$table->string('decliningReason');
|
||||
$table->timestamp('declinedAt');
|
||||
$table->string('paidByName');
|
||||
$table->string('paidByIban');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('fib_transactions');
|
||||
}
|
||||
};
|
||||
@@ -5,7 +5,7 @@ namespace Database\Seeders;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class GatewayCategorySeeder extends Seeder
|
||||
class BusinessTypeSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
17
backend/database/seeders/FibTransactionSeeder.php
Normal file
17
backend/database/seeders/FibTransactionSeeder.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class FibTransactionSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
17
backend/database/seeders/FibTransactionStatusSeeder.php
Normal file
17
backend/database/seeders/FibTransactionStatusSeeder.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class FibTransactionStatusSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace Database\Seeders;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class GatewaySeeder extends Seeder
|
||||
class TransactionSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
17
backend/database/seeders/UserGatewaySeeder.php
Normal file
17
backend/database/seeders/UserGatewaySeeder.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class UserGatewaySeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ use App\Admin\Controllers\AuthController;
|
||||
use App\Admin\Controllers\DocumentationController;
|
||||
use App\Admin\Controllers\ExpertManagementController;
|
||||
use App\Admin\Controllers\PermissionManagementController;
|
||||
use App\Admin\Controllers\ProfileController;
|
||||
use App\Admin\Controllers\RoleManagementController;
|
||||
use App\Admin\Controllers\UserManagementController;
|
||||
|
||||
@@ -72,13 +71,3 @@ Route::prefix('expert')
|
||||
Route::post('/{expert}', 'update')->name('update');
|
||||
Route::delete('/{expert}', 'destroy')->name('destroy');
|
||||
});
|
||||
|
||||
Route::prefix('profile')
|
||||
->name('profile.')
|
||||
->middleware('auth')
|
||||
->controller(ProfileController::class)
|
||||
->group(function () {
|
||||
Route::get('info', 'info')->name('info');
|
||||
Route::post('edit', 'edit')->name('edit');
|
||||
Route::post('change_password', 'changePassword')->name('changePassword');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user