first commit

This commit is contained in:
ExtraNetwork
2026-05-12 17:04:54 +03:00
commit e5c4b6aa13
1425 changed files with 284735 additions and 0 deletions

View File

@@ -0,0 +1,381 @@
<?php
namespace App\Http\Controllers\V1;
use App\Core\Service\PropertyService;
use App\Exceptions\ApiErrorException;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Core\Service\PropertyPhotoService\PropertyPhotoService;
use App\Core\Service\Google\GoogleVisionLabelService;
use Exception;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Config;
use App\Core\Service\PropertyConfigService;
use Illuminate\Support\Str;
use ZipArchive ;
class PropertyPhotoController extends Controller
{
private $request;
private $propertyPhotoService;
private $googleVisionLabelService;
private $propertyConfigService;
private $propertyService;
public function __construct
(
PropertyPhotoService $propertyPhotoService,
PropertyService $propertyService,
GoogleVisionLabelService $googleVisionLabelService,
PropertyConfigService $propertyConfigService
)
{
$this->propertyPhotoService = $propertyPhotoService;
$this->googleVisionLabelService = $googleVisionLabelService;
$this->propertyConfigService = $propertyConfigService;
$this->propertyService = $propertyService ;
}
public function getPropertyPhotos(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if ( is_null( $request->getContent())) {
throw new ApiErrorException(lang('Parameter Error.'));
}
$params = json_decode($request->getContent(),1);
$params = current($params);
//TODO : Validation Yapılması gerekiyor.
$response = $this->propertyPhotoService->getPropertyPhotos($params);
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function uploadPropertyPhoto(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if(!$request->hasFile('image'))
{
throw new ApiErrorException(lang('Photos not found'));
}
$propertyId = $request->input('property_id');
$photo = $request->file('image');
$param =
[
"property_id" => $propertyId,
"photo" => $photo,
];
$response = $this->propertyPhotoService->propertyPhotoUploadFilter($param);
$rateParams = [
'property_id' => $propertyId,
'user_id' => 1,
'property_rate_for' => 'Property.Photo.Upload',
];
$this->propertyConfigService->rateProperty($rateParams);
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function setDefaultPhoto(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if ( is_null( $request->getContent())) {
throw new ApiErrorException(lang('Parameter Error.'));
}
$params = json_decode($request->getContent(),1);
$params = current($params);
//TODO : Validation Yapılması gerekiyor.
$response = $this->propertyPhotoService->setDefaultPhoto($params);
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
$response['message'] = $e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function setPropertyPhotoOrder(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if ( is_null( $request->getContent())) {
throw new ApiErrorException(lang('Parameter Error.'));
}
$params = json_decode($request->getContent(),1);
$params = current($params);
$requestParams = [
'locale' => fillOnUndefined($params, 'locale'),
'set_photo_order' => fillOnUndefined($params, 'set_photo_order'),
'property_id' => fillOnUndefined($params, 'property_id'),
'user_id' => $request->credentials->user_id,
];
//TODO : Validation Yapılması gerekiyor.
$response = $this->propertyPhotoService->setPhotoOrder($requestParams);
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function publishPhotos(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if ( is_null( $request->getContent())) {
throw new ApiErrorException(lang('Parameter Error.'));
}
$params = json_decode($request->getContent(),1);
$params = current($params);
//TODO : Validation Yapılması gerekiyor.
$response = $this->propertyPhotoService->publishPhotos($params);
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function deletePropertyPhotos(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if ( is_null( $request->getContent())) {
throw new ApiErrorException(lang('Parameter Error.'));
}
$params = json_decode($request->getContent(),1);
$params = current($params);
//TODO : Validation Yapılması gerekiyor.
$deletePhoto = $this->propertyPhotoService->deletePhotos($params);
if ($deletePhoto['status'] == false) {
throw new ApiErrorException($deletePhoto['message']);
}
$defaultPhotoCriteria = [
'criteria' => [
['field' => 'property_id', 'condition' => '=', 'value' => $params['property_id']],
['field' => 'status', 'condition' => '=', 'value' => 1],
['field' => 'is_default', 'condition' => '=', 'value' => 1],
],
'firstRow' => 1
];
$propertyPhotoData = $this->propertyPhotoService->select($defaultPhotoCriteria, ['id']);
if ($propertyPhotoData['status'] == false) {
throw new ApiErrorException($propertyPhotoData['message']);
}
$defaultPhoto = isset($propertyPhotoData['data']['id']) ? $propertyPhotoData['data']['id'] : null ;
$response = ['status' => 1, 'statusCode' => 200, 'message' => null, 'data' => ['default_photo' => $defaultPhoto] ];
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function setPropertyPhotoCategory(Request $request)
{
$response = ['status' => false, 'statusCode' => 500 ,'message' => '', 'data' => null];
try
{
if ( is_null( $request->getContent())) {
throw new ApiErrorException(lang('Parameter Error.'));
}
$params = json_decode($request->getContent(),1);
$params = current($params);
$requestParams = [
'locale' => fillOnUndefined($params, 'locale'),
'property_id' => fillOnUndefined($params, 'property_id'),
'user_id' => $request->credentials->user_id,
'set_photo_category' => fillOnUndefined($params, 'set_photo_category'),
];
//TODO : Validation Yapılması gerekiyor.
$response = $this->propertyPhotoService->setPhotoCategory($requestParams);
}catch (ApiErrorException $e)
{
$response['message'] = $e->getMessage();
}catch (Exception $e)
{
$message = $e->getFile().' '.$e->getLine().' '.$e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
public function downloadPropertyPhotos(Request $request)
{
$response = ['status' => false, 'statusCode' => 500, 'message' => '', 'data' => null];
try {
if (is_null($request->getContent())) {
throw new Exception('api-unknown_error');
}
$params = json_decode($request->getContent(), 1);
$params = current($params);
$responseData = null ;
$propertyId = $params['property_id'];
$getPhotosRequest = [
'property_id' => $propertyId
];
if(isset($params['custom']) && !empty($params['custom'])) {
$getPhotosRequest['custom'] = $params['custom'];
}
$response = $this->propertyPhotoService->getPropertyPhotos($getPhotosRequest);
if ($response['status'] != 'success') {
throw new Exception('api-unknown_error');
}
if (!$response['data']) {
throw new Exception('api-unknown_error');
}
$photos = $response['data'];
if ($photos) {
$public_dir = public_path();
$zipFileStoragePath = $public_dir . '/property-zip-files';
$propertyRequest = [
'criteria' => [
['field' => 'id', 'condition' => '=', 'value' => $propertyId],
],
'firstRow' => true
];
$thisProperty = $this->propertyService->select($propertyRequest);
if ($thisProperty['status'] != 'success') {
throw new Exception('api-unknown_error');
}
$hotelName = Str::slug($thisProperty['data']['name'], '_', 'en');
if (!File::exists($zipFileStoragePath)) {
File::makeDirectory($zipFileStoragePath, 0777, true);
}
$zipFileName = $hotelName . '_photos.zip';
$zip = new ZipArchive;
if(file_exists($zipFileStoragePath . '/' . $zipFileName)) {
unlink($zipFileStoragePath . '/' . $zipFileName);
}
if ($zip->open($zipFileStoragePath . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {
foreach ($photos as $photo) {
$photoUrlFilePath = Config::get('app.fileSystemDriver') . "/property-photos/{$photo['property_id']}" . "/{$photo['photo_name']}_medium.{$photo['file_ext']}";
$fileName = "{$photo['photo_name']}_medium.{$photo['file_ext']}";
if (file_exists($photoUrlFilePath)) {
$zip->addFile($photoUrlFilePath, $fileName);
}
}
$zip->close();
}
$responseData = Config::get('app.zipFilesUrl').$zipFileName;
}
$response = ['status' => 1, 'statusCode' => 200, 'message' => null, 'data' => ['zipFile' => $responseData]];
} catch (ApiErrorException $e) {
$response['message'] = $e->getMessage();
} catch (Exception $e) {
$message = $e->getFile() . ' ' . $e->getLine() . ' ' . $e->getMessage();
Log::error($message);
}
return apiResponse($response['status'], $response['message'], $response['data'], $response['statusCode']);
}
}