create && get applications
This commit is contained in:
parent
85d6dda2da
commit
c98e8e889d
|
|
@ -2,10 +2,75 @@
|
|||
|
||||
namespace App\Http\Controllers\API;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\ApplicationResource;
|
||||
use App\Models\Application;
|
||||
use App\Models\Attachment;
|
||||
use App\Models\Documentgroup;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ApplicationController extends Controller
|
||||
{
|
||||
public function get(){
|
||||
public function create(){
|
||||
|
||||
$account = Auth::user()->account;
|
||||
|
||||
if($account->aplication){
|
||||
$account->aplication->delete();
|
||||
//todo on delete cascade delete documents and files
|
||||
}
|
||||
|
||||
$docGroup = Documentgroup::where('type',$account->type)
|
||||
->whereHas('countries',function(Builder $query) use ($account){
|
||||
$query->where('id',$account->country_id);
|
||||
})
|
||||
->with('documents')->first();
|
||||
|
||||
if(!$docGroup || $docGroup->documents->count() == 0){
|
||||
return response([
|
||||
'success' => false,
|
||||
'message' => 'Required documents list was not found'
|
||||
],400);
|
||||
}
|
||||
|
||||
//todo create attachments here
|
||||
$application = Application::create([
|
||||
'account_id' => $account->id,
|
||||
'status' => 'new'
|
||||
]);
|
||||
|
||||
foreach ($docGroup->documents as $document){
|
||||
$attachment = new Attachment([
|
||||
'name' => $document->name,
|
||||
'document_id' => $document->id
|
||||
]);
|
||||
$application->attachments()->attach($attachment);
|
||||
}
|
||||
|
||||
$application->attachments()->save();
|
||||
|
||||
return ApplicationResource::make($application);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function get()
|
||||
{
|
||||
$appication = Auth::user()
|
||||
->account()
|
||||
->aplication()
|
||||
->with('attachments')
|
||||
->first();
|
||||
|
||||
return ApplicationResource::make($appication);
|
||||
}
|
||||
|
||||
public function apply(){
|
||||
|
||||
}
|
||||
|
||||
public function upload(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class DocumentController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
//todo get list
|
||||
}
|
||||
|
||||
public function upload(){
|
||||
//todo upload Document
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class ApplicationResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
use Backpack\CRUD\app\Models\Traits\CrudTrait;
|
||||
use Backpack\CRUD\app\Models\Traits\SpatieTranslatable\HasTranslations;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
class Documentgroup extends Model
|
||||
{
|
||||
|
|
@ -42,6 +43,10 @@ class Documentgroup extends Model
|
|||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public function documents():HasMany{
|
||||
return $this->hasMany(Document::class);
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| SCOPES
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\API\ApplicationController;
|
||||
use App\Http\Controllers\API\AuthController;
|
||||
use App\Http\Controllers\API\ResourceController;
|
||||
use App\Http\Controllers\API\AccountController;
|
||||
|
|
@ -57,6 +58,17 @@
|
|||
Route::post('/post-ticket',[TicketController::class,'postTicket']);
|
||||
});
|
||||
|
||||
/**
|
||||
* Application endpoints
|
||||
*/
|
||||
Route::group(['prefix' => 'application'], function () {
|
||||
Route::get('/',[ApplicationController::class,'get']);
|
||||
Route::get('new',[ApplicationController::class,'create']);
|
||||
Route::put('upload',[ApplicationController::class,'upload']);
|
||||
Route::post('apply',[ApplicationController::class,'apply']);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue