Files
Global-Jain/app/Repositories/Backend/Hospital/HospitalService.php

149 lines
4.3 KiB
PHP
Raw Permalink Normal View History

2025-11-05 10:37:10 +05:30
<?php
namespace App\Repositories\Backend\Hospital;
use App\Constant\Constant;
use App\Models\Hospital;
use App\Services\BaseService;
use Carbon\Carbon;
use Exception;
use Yajra\DataTables\Facades\DataTables;
class HospitalService extends BaseService
{
/**
* Associated Service Model.
*/
protected const MODEL = Hospital::class;
/**
* @param $request
* @return array
*/
public function storeHospital($request): array
{
$response = [];
$photo = '';
if (!empty($request['photo'])) {
$imageName = uploadImage($request, 'photo', Constant::HOSPITAL_IMAGE_UPLOAD_PATH);
$photo = $imageName['image_name'] ?? Constant::NULL;
}
$result = $this->query()->create([
'name' => $request['name'],
'contact_name' => $request['contact_name'],
'email' => $request['email'],
'alternative_email' => $request['alter_email'],
'number' => $request['number'],
'address' => $request['address'],
'area' => $request['area'],
'city' => $request['city'],
'state' => $request['state'],
'photo' => $photo,
'benefits' => $request['benefits'],
]);
$response['status'] = ($result) ? Constant::STATUS_TRUE : Constant::STATUS_FALSE;
return $response;
}
/**
* @param $request
* @return object
* @throws Exception
*/
public function getListing($request): object
{
$dataTableQuery = $this->prepareQuery($request->all());
return DataTables::of($dataTableQuery)
->addColumn(
'checkbox_action',
function ($hospital) {
return $hospital?->hospital_checkbox_action;
}
)
->addColumn(
'hospital_status',
function ($hospital) {
return $hospital?->hospital_status_action;
}
)
->editColumn(
'created_at',
function ($hospital) {
return Carbon::parse($hospital?->created_at)->format('d-m-Y');
}
)
->addColumn(
'action',
function ($hospital) {
return $hospital?->hospital_action_buttons;
}
)
->addIndexColumn()
->rawColumns(['action', 'checkbox_action', 'hospital_status'])
->make(true);
}
/**
* @param $request
* @return object
*/
public function prepareQuery($request): object
{
$searchQuery = $this->query();
$columns = ['', 'name', 'contact_name', 'email', 'city', 'state','state', 'created_at'];
$searchQuery = $searchQuery->when(array_key_exists('name', $request), function ($q) use ($request) {
return $q->where('name', 'like', '%' . $request['name'] . '%');
});
if (isset($request['order']) && $request['order'] != "") {
$searchQuery = $searchQuery->orderBy(
$columns[$request['order'][0]['column']],
$request['order'][0]['dir']
);
}
return $searchQuery;
}
/**
* @param $request
* @param $id
* @return array
*/
public function updateHospital($request, $id): array
{
$response = [];
$hospital = $this->query()->where('id', $id)->first();
$photo = $hospital?->photo;
if (!empty($request['photo'])) {
$imageName = uploadImage($request, 'photo', Constant::HOSPITAL_IMAGE_UPLOAD_PATH);
$photo = $imageName['image_name'] ?? Constant::NULL;
}
$result = $hospital->update([
'name' => $request['name'],
'contact_name' => $request['contact_name'],
'email' => $request['email'],
'alternative_email' => $request['alter_email'],
'number' => $request['number'],
'address' => $request['address'],
'area' => $request['area'],
'city' => $request['city'],
'state' => $request['state'],
'photo' => $photo,
'benefits' => $request['benefits'],
]);
$response['status'] = ($result) ? Constant::STATUS_TRUE : Constant::STATUS_FALSE;
return $response;
}
}