69 lines
1.7 KiB
PHP
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;
|
|
}
|
|
}
|
|
}
|