mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-07-15 11:07:53 -04:00
91 lines
2.8 KiB
PHP
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";
|
|
}
|
|
}
|
|
}
|