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

145 lines
4.5 KiB
PHP

<?php
namespace Modules\TeamMember\app\Repositories;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
use Modules\TeamMember\app\Models\TeamMember;
use Modules\TeamMember\app\Models\SocialShare;
use Modules\Banner\app\Services\FileManagementService;
class TeamMemberRepository
{
//-- Retrieve all Services
public function allTeamMember($perPage = null, $filter = [], $sort = ['by' => 'id', 'sort' => 'DESC'])
{
return TeamMember::when(array_keys($filter, true), function ($query) use ($filter) {
if (!empty($filter['name'])) {
$query->where('name', $filter['name']);
}
if (!empty($filter['designation'])) {
$query->where('designation', 'like', '%' . $filter['designation'] . '%');
}
})
->orderBy($sort['by'], $sort['sort'])
->paginate($perPage ?: env('PAGE_LIMIT', 999));
}
//-- Find Service by uuid
public function findTeamMemberByUuid($uuid)
{
return TeamMember::where('uuid', $uuid)->first();
}
public function storeTeamMember(array $validated)
{
DB::beginTransaction();
try {
$teamMember = new TeamMember();
$teamMember->uuid = Str::uuid();
$teamMember->name = $validated['name'];
if ($validated['group_id'] < 4 & $validated['group_id'] > 0) {
$teamMember->group_id = $validated['group_id'];
}
$teamMember->designation = $validated['designation'];
$teamMember->detail = $validated['detail'];
$teamMember->save();
// social media team member
// if (isset($validated['group-a']) && is_array($validated['group-a'])) {
// foreach ($validated['group-a'] as $socialShareData) {
// $socialShare = new SocialShare([
// 'uuid' => Str::uuid(),
// 'name' => $socialShareData['name'],
// 'link' => $socialShareData['link'],
// ]);
// $teamMember->socialShares()->save($socialShare);
// }
// }
if (isset($validated['image']) && $validated['image']->isValid()) {
FileManagementService::uploadFile(
file: $validated['image'],
uploadedFolderName: 'teamMembers',
filePath: $teamMember->image_path,
model: $teamMember
);
}
DB::commit();
return $teamMember;
} catch (\Throwable $th) {
report($th);
DB::rollback();
return null;
}
}
public function updateTeamMember($validated, $uuid)
{
try {
$teamMember = $this->findTeamMemberByUuid($uuid);
if (!$teamMember) {
return null;
}
$teamMember->name = $validated['name'];
if ($validated['group_id'] < 4 & $validated['group_id'] > 0) {
$teamMember->group_id = $validated['group_id'];
}
$teamMember->designation = $validated['designation'];
$teamMember->detail = $validated['detail'];
$teamMember->save();
if (isset($validated['image']) && $validated['image']->isValid()) {
FileManagementService::uploadFile(
file: $validated['image'],
uploadedFolderName: 'teamMembers',
filePath: $teamMember->image_path,
model: $teamMember
);
}
return $teamMember;
DB::commit();
} catch (\Throwable $th) {
report($th);
DB::rollBack();
return null;
}
}
//-- Delete Testimonial
public function deleteTeamMember(string $uuid)
{
DB::beginTransaction();
try {
$teamMember = $this->findTeamMemberByUuid($uuid);
if (!$teamMember) {
return null;
}
// Delete the image file associated with the activity
if ($teamMember->image_path !== null) {
FileManagementService::deleteFile($teamMember->image_path);
}
$teamMember->delete();
DB::commit();
return $teamMember;
} catch (\Throwable $th) {
DB::rollBack();
report($th);
return null;
}
}
}