Files
wticreatorstudio/Modules/Subscription/Repositories/LocationRestrictionsRepository.php
T
2024-02-12 22:54:20 -05:00

91 lines
2.8 KiB
PHP

<?php
namespace Modules\Subscription\Repositories;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Modules\Subscription\Entities\LocationRestrictionState;
use Modules\Subscription\Entities\LocationRestriction;
class LocationRestrictionsRepository
{
public function getAll()
{
return LocationRestriction::with('states')->latest()->get();
}
public function find($id)
{
return LocationRestriction::findOrFail($id);
}
public function create(array $data)
{
DB::beginTransaction();
$location = new LocationRestriction();
$location->country = $data['country'];
$location->status = $data['status'];
$location->save();
$state_values = [];
if ($data['state_values']) {
foreach ($data['state_values'] as $value) {
if ($value) {
$state_values [] = [
'location_restriction_id' => $location->id,
"state" => $value,
"created_at" => Carbon::now()
];
}
}
LocationRestrictionState::insert($state_values);
}
DB::commit();
}
public function update(array $data, $id)
{
DB::beginTransaction();
$location = LocationRestriction::findOrFail($id);
$location->country = $data['country'];
$location->status = $data['status'];
$location->save();
$collection1 = collect($data['edit_state_values']);
$collection2 = collect($location->states->pluck('state', 'id'));
$newDifferentItems = $collection1->diff($collection2);
$new_variant_values = $newDifferentItems->all();
if (count($new_variant_values) > 0) {
foreach ($new_variant_values as $key => $new_variant_value) {
if (!empty($data['state_id'][$key])) {
$attri_value = LocationRestrictionState::find($data['state_id'][$key]);
if ($attri_value) {
$attri_value->update([
'state' => $new_variant_value
]);
}
}
else {
LocationRestrictionState::create([
'state' => $new_variant_value,
"location_restriction_id" => $location->id
]);
}
}
}
DB::commit();
}
public function delete($id)
{
$location = LocationRestriction::findOrFail($id);
if ($location) {
$location->delete();
}
else {
return "not_possible";
}
}
}