This commit is contained in:
Mahri Ilmedova 2022-09-05 01:59:22 +05:00
commit addc642cff
7 changed files with 320 additions and 4 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;
//todo validate if new application can be created;(eger app yada legNo yok bolsa. Leg srok dolan bolsa doredip bilya)
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']);
});
});
});

View File

@ -408,7 +408,7 @@
"registration_date": {"type": "string"},
"state_registration_agency": {"type": "string"},
"registration_place": {"type": "string"},
"registration_address": {"type": "string"},
"registration_address": {"type": "string"}
},
"type": "object",
@ -1419,6 +1419,202 @@
}
]
}
},
"/api/application": {
"get": {
"tags": ["Application"],
"summary": "Get accounts Legalization application",
"parameters": [{
"name": "X-Localization",
"in": "header",
"description": "Localization",
"required": false,
"schema": {
"type": "string"
},
"examples": {
"ru": {
"summary": "Russian localization",
"value": "ru"
},
"en": {
"summary": "English localization",
"value": "en"
},
"tm": {
"summary": "Turkmen localization",
"value": "tm"
}
}
}],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security":[
{
"bearerAuth": []
}
]
}
},
"/api/application/new": {
"get": {
"tags": ["Application"],
"summary": "Create,make new Legalization application",
"parameters": [{
"name": "X-Localization",
"in": "header",
"description": "Localization",
"required": false,
"schema": {
"type": "string"
},
"examples": {
"ru": {
"summary": "Russian localization",
"value": "ru"
},
"en": {
"summary": "English localization",
"value": "en"
},
"tm": {
"summary": "Turkmen localization",
"value": "tm"
}
}
}],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security":[
{
"bearerAuth": []
}
]
}
},
"/api/application/upload": {
"put": {
"tags": ["Application"],
"summary": "Upload document to application",
"parameters": [{
"name": "X-Localization",
"in": "header",
"description": "Localization",
"required": false,
"schema": {
"type": "string"
},
"examples": {
"ru": {
"summary": "Russian localization",
"value": "ru"
},
"en": {
"summary": "English localization",
"value": "en"
},
"tm": {
"summary": "Turkmen localization",
"value": "tm"
}
}
}],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security":[
{
"bearerAuth": []
}
]
}
},
"/api/application/apply": {
"put": {
"tags": ["Application"],
"summary": "Commit,apply application. send to review ",
"parameters": [{
"name": "X-Localization",
"in": "header",
"description": "Localization",
"required": false,
"schema": {
"type": "string"
},
"examples": {
"ru": {
"summary": "Russian localization",
"value": "ru"
},
"en": {
"summary": "English localization",
"value": "en"
},
"tm": {
"summary": "Turkmen localization",
"value": "tm"
}
}
}],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security":[
{
"bearerAuth": []
}
]
}
}
},
"components": {