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']); } }