Files
aroginhealthcare/Modules/Subscription/app/Repositories/SubscriptionRepository.php
2025-08-17 16:23:14 +05:45

69 lines
1.7 KiB
PHP

<?php
namespace Modules\Subscription\app\Repositories;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
use Modules\Subscription\app\Models\Subscription;
class SubscriptionRepository
{
public function allSubscriptionsEmail($perPage = null, $filter = [], $sort = ['by' => 'id', 'sort' => 'DESC'])
{
return Subscription::when(array_keys($filter, true), function ($query) use ($filter) {
if (!empty($filter['email'])) {
$query->where('email', $filter['email']);
}
})
->orderBy($sort['by'], $sort['sort'])
->paginate($perPage ?: env('PAGE_LIMIT', 999));
}
public function storeSubscription($validated)
{
$result = false;
DB::beginTransaction();
try {
$validated['uuid'] = Str::uuid();
$result = Subscription::create($validated);
if ($result) {
DB::commit();
}
} catch (\Throwable $th) {
report($th);
DB::rollback();
}
return $result;
}
public function findSubscriptionEmailByUuid($uuid)
{
return Subscription::where('uuid', $uuid)->first();
}
public function deleteSubscriptionEmail($uuid)
{
DB::beginTransaction();
try {
$subscription = $this->findSubscriptionEmailByUuid($uuid);
if (!$subscription) {
return null;
}
$subscription->delete();
DB::commit();
return true;
} catch (\Throwable $th) {
DB::rollback();
report($th);
return null;
}
}
}