first commit
This commit is contained in:
222
app/Core/Service/PropertyWebMetaService.php
Normal file
222
app/Core/Service/PropertyWebMetaService.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?php
|
||||
|
||||
namespace App\Core\Service;
|
||||
|
||||
use App\Core\Repository\PropertyWeb\PropertyWebMetaRepository;
|
||||
use App\Core\Repository\PropertyWeb\PropertyWebMetaTagRepository;
|
||||
use App\Core\Repository\PropertyWeb\PropertyWebMetaMappingRepository;
|
||||
use Exception;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use App\Exceptions\ApiErrorException;
|
||||
|
||||
class PropertyWebMetaService
|
||||
{
|
||||
private $propertyWebMetaRepository;
|
||||
private $propertyWebMetaTagRepository;
|
||||
private $propertyWebMetaMappingRepository;
|
||||
|
||||
public function __construct(
|
||||
PropertyWebMetaRepository $propertyWebMetaRepository,
|
||||
PropertyWebMetaTagRepository $propertyWebMetaTagRepository,
|
||||
PropertyWebMetaMappingRepository $propertyWebMetaMappingRepository
|
||||
) {
|
||||
$this->propertyWebMetaRepository = $propertyWebMetaRepository;
|
||||
$this->propertyWebMetaTagRepository = $propertyWebMetaTagRepository;
|
||||
$this->propertyWebMetaMappingRepository = $propertyWebMetaMappingRepository;
|
||||
}
|
||||
|
||||
public function select($params = [], $column = ['*'])
|
||||
{
|
||||
$response = ['status' => true, 'message' => '', 'data' => null];
|
||||
|
||||
try {
|
||||
$data = $this->propertyWebMetaRepository->findByCriteria($params, $column);
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'data' => $data,
|
||||
];
|
||||
} catch (ApiErrorException $e) {
|
||||
$response['status'] = 0;
|
||||
$response['message'] = $e->getMessage();
|
||||
} catch (Exception $e) {
|
||||
$message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage();
|
||||
Log::error($message);
|
||||
$response['status'] = -1;
|
||||
$response['message'] = $e->getMessage();
|
||||
}
|
||||
|
||||
return output($response);
|
||||
}
|
||||
|
||||
public function selectTag($param = [], $column = ['*'])
|
||||
{
|
||||
$response = ['status' => true, 'message' => '', 'data' => null];
|
||||
|
||||
try {
|
||||
$data = $this->propertyWebMetaTagRepository->findByCriteria($param, $column);
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'data' => $data,
|
||||
];
|
||||
} catch (ApiErrorException $e) {
|
||||
$response['status'] = 0;
|
||||
$response['message'] = $e->getMessage();
|
||||
} catch (Exception $e) {
|
||||
$message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage();
|
||||
Log::error($message);
|
||||
$response['status'] = -1;
|
||||
$response['message'] = $e->getMessage();
|
||||
}
|
||||
|
||||
return output($response);
|
||||
}
|
||||
|
||||
public function selectMapping($params = [], $column = ['*'])
|
||||
{
|
||||
$response = ['status' => true, 'message' => '', 'data' => null];
|
||||
|
||||
try {
|
||||
$propertyId = $params['property_id'] ?? null;
|
||||
if ($propertyId) {
|
||||
$params['criteria'][] = ['field' => 'property_id', 'condition' => '=', 'value' => $propertyId];
|
||||
}
|
||||
|
||||
$filter = $params['filter'] ?? null;
|
||||
if ($filter) {
|
||||
if (isset($filter['property_web_meta_id'])) {
|
||||
$params['criteria'][] = ['field' => 'property_web_meta_id', 'condition' => '=', 'value' => $filter['property_web_meta_id']];
|
||||
}
|
||||
if (isset($filter['property_web_meta_tag_id'])) {
|
||||
$params['criteria'][] = ['field' => 'property_web_meta_tag_id', 'condition' => '=', 'value' => $filter['property_web_meta_tag_id']];
|
||||
}
|
||||
if (isset($filter['code'])) {
|
||||
$params['criteria'][] = ['field' => 'code', 'condition' => '=', 'value' => $filter['code']];
|
||||
}
|
||||
}
|
||||
|
||||
$params['with'] = ['propertyWebMeta:id,name,language_key,order_number', 'propertyWebMetaTag:id,name,language_key,order_number'];
|
||||
$data = $this->propertyWebMetaMappingRepository->findByCriteria($params, $column);
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'data' => $data,
|
||||
];
|
||||
} catch (ApiErrorException $e) {
|
||||
$response['status'] = 0;
|
||||
$response['message'] = $e->getMessage();
|
||||
} catch (Exception $e) {
|
||||
$message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage();
|
||||
Log::error($message);
|
||||
$response['status'] = -1;
|
||||
$response['message'] = $e->getMessage();
|
||||
}
|
||||
|
||||
return output($response);
|
||||
}
|
||||
|
||||
public function syncTag($params = [])
|
||||
{
|
||||
$response = ['status' => true, 'message' => '', 'data' => null];
|
||||
|
||||
try {
|
||||
$propertyId = $params['property_id'] ?? null;
|
||||
$propertyWebId = $params['property_web_id'] ?? null;
|
||||
$propertyWebMetaTagId = $params['property_web_meta_tag_id'] ?? null;
|
||||
$propertyWebMetaId = $params['property_web_meta_id'] ?? null;
|
||||
$code = $params['code'] ?? null;
|
||||
$text = $params['text'] ?? null;
|
||||
|
||||
$criteria = [
|
||||
'criteria' => [
|
||||
['field' => 'property_id', 'condition' => '=', 'value' => $propertyId],
|
||||
['field' => 'property_web_id', 'condition' => '=', 'value' => $propertyWebId],
|
||||
['field' => 'property_web_meta_tag_id', 'condition' => '=', 'value' => $propertyWebMetaTagId],
|
||||
['field' => 'property_web_meta_id', 'condition' => '=', 'value' => $propertyWebMetaId],
|
||||
['field' => 'code', 'condition' => '=', 'value' => $code],
|
||||
],
|
||||
'firstRow' => 1
|
||||
];
|
||||
|
||||
// Önce kayıt var mı kontrol ediyoruz
|
||||
$existing = $this->propertyWebMetaMappingRepository->findByCriteria($criteria);
|
||||
|
||||
if (!empty($existing)) {
|
||||
// Kayıt var
|
||||
if (is_null($text)) {
|
||||
// Text boş ise silme
|
||||
$id = $existing['id'];
|
||||
$deleteResult = $this->propertyWebMetaMappingRepository->destroy([$id]);
|
||||
if ($deleteResult['status'] != 'success') {
|
||||
throw new Exception($deleteResult['message']);
|
||||
}
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'message' => 'Record deleted successfully.',
|
||||
'data' => null,
|
||||
];
|
||||
} else {
|
||||
// Text dolu ise güncelleme
|
||||
$id = $existing['id'];
|
||||
$data = [
|
||||
'code' => $code,
|
||||
'text' => is_array($text) ? json_encode($text) : $text,
|
||||
'status' => true,
|
||||
'updated_at' => time()
|
||||
];
|
||||
$updateResult = $this->propertyWebMetaMappingRepository->update($id, $data);
|
||||
if ($updateResult['status'] != 'success') {
|
||||
throw new Exception($updateResult['message']);
|
||||
}
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'message' => 'Record updated successfully.',
|
||||
'data' => $data,
|
||||
];
|
||||
}
|
||||
} else {
|
||||
// Kayıt yok
|
||||
if (!is_null($text)) {
|
||||
// Text dolu ise oluşturma
|
||||
$data = [
|
||||
'property_id' => $propertyId,
|
||||
'property_web_id' => $propertyWebId,
|
||||
'property_web_meta_tag_id' => $propertyWebMetaTagId,
|
||||
'property_web_meta_id' => $propertyWebMetaId,
|
||||
'code' => $code,
|
||||
'text' => is_array($text) ? json_encode($text) : $text,
|
||||
'status' => true,
|
||||
"created_by" => fillOnUndefined($params, "user_id"),
|
||||
"updated_by" => fillOnUndefined($params, "user_id")
|
||||
];
|
||||
|
||||
$createResult = $this->propertyWebMetaMappingRepository->create($data);
|
||||
if ($createResult['status'] != 'success') {
|
||||
throw new Exception($createResult['message']);
|
||||
}
|
||||
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'message' => 'Record created successfully.',
|
||||
'data' => $data,
|
||||
];
|
||||
} else {
|
||||
// Kayıt yok ve text de null ise işlem yapmaya gerek yok (veya başarılı dönülebilir)
|
||||
$response = [
|
||||
'status' => 1,
|
||||
'message' => 'Record not found and text is null, no action taken.',
|
||||
'data' => null,
|
||||
];
|
||||
}
|
||||
}
|
||||
} catch (ApiErrorException $e) {
|
||||
$response['status'] = 0;
|
||||
$response['message'] = $e->getMessage();
|
||||
} catch (Exception $e) {
|
||||
$message = $e->getFile() . " " . $e->getLine() . " " . $e->getMessage();
|
||||
Log::error($message);
|
||||
$response['status'] = -1;
|
||||
$response['message'] = $e->getMessage();
|
||||
}
|
||||
|
||||
return output($response);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user