Merge branch 'master' of http://git.digital-tps.tk/TPS/birzha-legalizasia
This commit is contained in:
commit
addc642cff
|
|
@ -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(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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']);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -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": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue