125 lines
3.6 KiB
PHP
125 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\API\DocumentUploadRequest;
|
|
use App\Http\Resources\ApplicationResource;
|
|
use App\Models\Application;
|
|
use App\Models\Attachment;
|
|
use App\Models\Documentgroup;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class ApplicationController extends Controller
|
|
{
|
|
/**
|
|
* Create new Legalization Application
|
|
* @return ApplicationResource|\Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
//validate if profile is filled
|
|
if(is_null($this->account) || is_null($this->account->profile))
|
|
{
|
|
return response([
|
|
'success' => false,
|
|
'message' => 'Please fill your profile information first!'
|
|
],400);
|
|
}
|
|
//validate legalization number exists
|
|
elseif( !empty($this->account->legalization_number) || //legalizasia nomeri bar bolsa
|
|
(!empty( $this->account->expires_at) && //legalizasia srogy
|
|
$this->account->expires_at->lte(Carbon::now()->subMonth()))){//eger srogyn gutarmagyna 1 ay galmadyk bolsa
|
|
|
|
return response([
|
|
'success' => false,
|
|
'message' => 'Dine Legalizasia nomerinizin mohletinin gutarmagyna 1 ay wagt galanda arza doredip bilyaniz'
|
|
],400);
|
|
}
|
|
|
|
//delete old application??? Should we replace it???
|
|
if($this->account->aplication)
|
|
{
|
|
$this->account->aplication->delete();
|
|
//todo on delete cascade delete documents and files
|
|
//todo replace application & change old status to arhiw
|
|
}
|
|
|
|
//upload etmeli dokumentlaryn spisogy
|
|
$docGroup = Documentgroup::withDocs($this->account->type,$this->account->country_id)->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' => $this->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);
|
|
|
|
}
|
|
|
|
/**
|
|
* Get accounts legalization application
|
|
* @return ApplicationResource
|
|
*/
|
|
public function get()
|
|
{
|
|
$appication = $this->account->aplication()
|
|
->with('attachments')
|
|
->first();
|
|
|
|
return ApplicationResource::make($appication);
|
|
}
|
|
|
|
public function apply(){
|
|
if($this->account->aplication)
|
|
{
|
|
//validate all documents are uploaded
|
|
|
|
//todo apply
|
|
}
|
|
|
|
return response([
|
|
'success' => false,
|
|
'message' => 'Required documents list was not found'
|
|
],400);
|
|
|
|
}
|
|
|
|
public function upload(DocumentUploadRequest $request)
|
|
{
|
|
//todo document name take
|
|
//todo size validation
|
|
$uploadedFile = $request->file('file');
|
|
$filename = time().$uploadedFile->getClientOriginalName();
|
|
|
|
Storage::disk('local')->putFileAs(
|
|
'documents/'.$filename,
|
|
$uploadedFile,
|
|
$filename
|
|
);
|
|
|
|
//todo make attachment relation
|
|
}
|
|
|
|
}
|