create && get applications

This commit is contained in:
merdan 2022-09-02 15:19:03 +05:00
parent 85d6dda2da
commit c98e8e889d
6 changed files with 123 additions and 3 deletions

View File

@ -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(){
}
}

View File

@ -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
}
}

View File

@ -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 [
];
}
}

View File

@ -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

View File

@ -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.

View File

@ -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']);
});
});
});