Add upload insurances docs endpoint
This commit is contained in:
parent
7ad3a8a431
commit
d406867201
|
@ -7,4 +7,5 @@ Homestead.yaml
|
||||||
/resources/views/vendor
|
/resources/views/vendor
|
||||||
/storage/api-docs
|
/storage/api-docs
|
||||||
/public/swagger-ui-assets
|
/public/swagger-ui-assets
|
||||||
|
public/insurances-subscriptions-docs
|
||||||
composer.lock
|
composer.lock
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
|
||||||
|
class ImageController extends Controller
|
||||||
|
{
|
||||||
|
//'/resources/app/uploads/{filename}'
|
||||||
|
public function getFile($filename)
|
||||||
|
{
|
||||||
|
$path = resource_path() . '/app/uploads/' . $filename;
|
||||||
|
|
||||||
|
if (!File::exists($path)) {
|
||||||
|
return response()->json(['message' => 'Image not found.'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = File::get($path);
|
||||||
|
$type = File::mimeType($path);
|
||||||
|
|
||||||
|
$response = Response::make($file, 200);
|
||||||
|
$response->header("Content-Type", $type);
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ use App\Models\NhNetworksConfig;
|
||||||
use App\Traits\Helper;
|
use App\Traits\Helper;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\UploadedFile;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Event;
|
use Illuminate\Support\Facades\Event;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
@ -339,6 +340,12 @@ class InsuranceController extends Controller
|
||||||
if (!isset($networkConfig) || $networkConfig->configWallet->type != 'ilink_sante')
|
if (!isset($networkConfig) || $networkConfig->configWallet->type != 'ilink_sante')
|
||||||
return $this->errorResponse(trans('errors.nano_health_not_activated'));
|
return $this->errorResponse(trans('errors.nano_health_not_activated'));
|
||||||
|
|
||||||
|
// Verification de l'age du beneficiaire
|
||||||
|
$insuredAge = date_diff(date_create($identification->birthdate), date_create('now'))->y;
|
||||||
|
if ($insuredAge < $networkConfig->age_limit_of_insured_and_spouse) {
|
||||||
|
return $this->errorResponse(trans('errors.minimal_age_required'));
|
||||||
|
}
|
||||||
|
|
||||||
$networkConfig = NhNetworksConfig::where('network_id', $request->input('network_id'))->first();
|
$networkConfig = NhNetworksConfig::where('network_id', $request->input('network_id'))->first();
|
||||||
if (sizeof($request->input('beneficiaries')) > $networkConfig->max_number_of_beneficiaries)
|
if (sizeof($request->input('beneficiaries')) > $networkConfig->max_number_of_beneficiaries)
|
||||||
return $this->errorResponse(trans('errors.number_of_beneficiaries_exceeded'));
|
return $this->errorResponse(trans('errors.number_of_beneficiaries_exceeded'));
|
||||||
|
@ -389,6 +396,55 @@ class InsuranceController extends Controller
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/insurances/upload-images",
|
||||||
|
* summary="Uploader les images de l'assurance",
|
||||||
|
* tags={"Assurances"},
|
||||||
|
* security={{"api_key":{}}},
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* description="Corps de la requete",
|
||||||
|
* required=true,
|
||||||
|
* @OA\MediaType(
|
||||||
|
* mediaType="multipart/form-data",
|
||||||
|
* @OA\Schema(
|
||||||
|
* @OA\Property(
|
||||||
|
* property="files[]",
|
||||||
|
* description = "Liste des documents à uploader",
|
||||||
|
* type="array",
|
||||||
|
* @OA\Items(type="string", format="binary")
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="OK",
|
||||||
|
* @OA\JsonContent(
|
||||||
|
* ref="#/components/schemas/ApiResponse",
|
||||||
|
* example = {"status":200,"response":"Transaction réussie","error":null}
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
public function uploadImages(Request $request)
|
||||||
|
{
|
||||||
|
$this->validate($request, [
|
||||||
|
'files' => 'required',
|
||||||
|
'files.*' => 'mimes:jpeg,png,jpg,jpeg|max:6144'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$files = [];
|
||||||
|
if ($request->hasfile('files')) {
|
||||||
|
foreach ($request->file('files') as $file) {
|
||||||
|
$filename = $this->uploadImage($file, 'NH', 'insurances-subscriptions-docs');
|
||||||
|
array_push($files, $filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->successResponse($files);
|
||||||
|
}
|
||||||
|
|
||||||
private function generateSubscriptionID(): string
|
private function generateSubscriptionID(): string
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -7,6 +7,7 @@ namespace App\Traits;
|
||||||
use App\Models\Country;
|
use App\Models\Country;
|
||||||
use Brick\Money\Context\AutoContext;
|
use Brick\Money\Context\AutoContext;
|
||||||
use Brick\Money\Money;
|
use Brick\Money\Money;
|
||||||
|
use Illuminate\Http\UploadedFile;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
trait Helper
|
trait Helper
|
||||||
|
@ -49,4 +50,54 @@ trait Helper
|
||||||
$encrypted_password_to_check = base64_encode(sha1($password . $salt, true) . $salt);
|
$encrypted_password_to_check = base64_encode(sha1($password . $salt, true) . $salt);
|
||||||
return $encrypted_password_to_check == $encrypted_password;
|
return $encrypted_password_to_check == $encrypted_password;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function uploadImage(UploadedFile $file, $imageCode, $folderName)
|
||||||
|
{
|
||||||
|
$original_filename = $file->getClientOriginalName();
|
||||||
|
$original_filename_arr = explode('.', $original_filename);
|
||||||
|
$file_ext = end($original_filename_arr);
|
||||||
|
$image = $imageCode . '-' . time() . '.' . $file_ext;
|
||||||
|
|
||||||
|
//Check if the directory already exists.
|
||||||
|
$directoryName = './' . $folderName;
|
||||||
|
if (!is_dir($directoryName)) {
|
||||||
|
//Directory does not exist, so lets create it.
|
||||||
|
mkdir($directoryName, 0755);
|
||||||
|
}
|
||||||
|
|
||||||
|
$compressedImage = $this->compressImage($file, './' . $folderName . '/' . $image, 70);
|
||||||
|
if ($compressedImage) {
|
||||||
|
return $image;
|
||||||
|
} else {
|
||||||
|
return $this->errorResponse(trans('errors.compression_failed'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function compressImage($source, $destination, $quality)
|
||||||
|
{
|
||||||
|
// Get image info
|
||||||
|
$imgInfo = getimagesize($source);
|
||||||
|
$mime = $imgInfo['mime'];
|
||||||
|
|
||||||
|
// Create a new image from file
|
||||||
|
switch ($mime) {
|
||||||
|
case 'image/jpeg':
|
||||||
|
$image = imagecreatefromjpeg($source);
|
||||||
|
break;
|
||||||
|
case 'image/png':
|
||||||
|
$image = imagecreatefrompng($source);
|
||||||
|
break;
|
||||||
|
case 'image/gif':
|
||||||
|
$image = imagecreatefromgif($source);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$image = imagecreatefromjpeg($source);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save image
|
||||||
|
imagejpeg($image, $destination, $quality);
|
||||||
|
|
||||||
|
// Return compressed image
|
||||||
|
return $destination;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
"guzzlehttp/guzzle": "^7.3",
|
"guzzlehttp/guzzle": "^7.3",
|
||||||
"kitloong/laravel-migrations-generator": "^5.0",
|
"kitloong/laravel-migrations-generator": "^5.0",
|
||||||
"laravel/lumen-framework": "^8.0",
|
"laravel/lumen-framework": "^8.0",
|
||||||
"ext-json": "*"
|
"ext-json": "*",
|
||||||
|
"ext-gd": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.9.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "nanoSanteService",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {}
|
||||||
|
}
|
|
@ -25,4 +25,5 @@ return [
|
||||||
'nano_health_not_activated' => "Nano health is not activated for this network",
|
'nano_health_not_activated' => "Nano health is not activated for this network",
|
||||||
'number_of_beneficiaries_exceeded' => 'The number of beneficiaries is greater than the authorized limit',
|
'number_of_beneficiaries_exceeded' => 'The number of beneficiaries is greater than the authorized limit',
|
||||||
'incorrect_selected_amount' => 'The amount selected is incorrect',
|
'incorrect_selected_amount' => 'The amount selected is incorrect',
|
||||||
|
'minimal_age_required' => "You do not have the minimum age required to subscribe to this insurance"
|
||||||
];
|
];
|
||||||
|
|
|
@ -25,4 +25,5 @@ return [
|
||||||
'nano_health_not_activated' => "Le nano santé n'est pas activé pour ce réseau",
|
'nano_health_not_activated' => "Le nano santé n'est pas activé pour ce réseau",
|
||||||
'number_of_beneficiaries_exceeded' => "Le nombre d'ayant droit est superieur à la limite autorisée",
|
'number_of_beneficiaries_exceeded' => "Le nombre d'ayant droit est superieur à la limite autorisée",
|
||||||
'incorrect_selected_amount' => 'Le montant choisi est incorrect',
|
'incorrect_selected_amount' => 'Le montant choisi est incorrect',
|
||||||
|
'minimal_age_required' => "Vous n'avez pas l'âge minimum requis pour souscrire à cette assurance"
|
||||||
];
|
];
|
||||||
|
|
|
@ -18,5 +18,6 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route
|
||||||
$router->get('countries/{countryId}', 'InsuranceController@getInsurancesByCountryId');
|
$router->get('countries/{countryId}', 'InsuranceController@getInsurancesByCountryId');
|
||||||
$router->post('bonus-amount', 'InsuranceController@calculateBonusAmount');
|
$router->post('bonus-amount', 'InsuranceController@calculateBonusAmount');
|
||||||
$router->post('subscribe', 'InsuranceController@subscribe');
|
$router->post('subscribe', 'InsuranceController@subscribe');
|
||||||
|
$router->post('upload-images', 'InsuranceController@uploadImages');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue