birzha-legalizasia/app/Http/Controllers/API/ApplicationController.php

125 lines
3.5 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);
}
//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);
}
//delete old application??? Should we replace it???
if($app = $this->account->aplication)
{
$app->status = 'archive';
$app->save();
}
//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
}
}