purityselect/app/Http/Controllers/Admin/Api/MedicineController.php
2024-10-25 01:05:27 +05:00

241 lines
8.4 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Api;
use App\Http\Controllers\Controller;
use App\Models\Appointment;
use App\Models\Cart;
use App\Models\Lab;
use App\Models\LabKit;
use App\Models\MedicalHistoryAnswer;
use App\Models\Patient;
use App\Models\PatientPrescription;
use App\Models\PatientRegActivity;
use App\Models\Plan;
use App\Models\PlanV1;
use App\Models\ProfileAnswer;
use App\Models\QuestionBuilder;
use App\Models\Telemedpro;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Routing\UrlGenerator;
use Illuminate\Support\Facades\URL;
use Yajra\DataTables\DataTables;
use Illuminate\Auth\Access\AuthorizationException;
class MedicineController extends Controller
{
protected $url;
protected $user;
public function __construct(UrlGenerator $url)
{
$this->url = $url;
$this->user = Auth::guard('admin')->user();
}
public function getMedList()
{
try{
$this->authorizeForUser($this->user,'list', new PlanV1);
$medicines = PlanV1::query();
return Datatables::of($medicines)
->addColumn('image_url', function ($med) {
return URL::to("product/" . $med->image_url);
})
->toJson();
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function SaveMed(Request $request)
{
try{
$this->authorizeForUser($this->user,'add', new PlanV1);
$slug = self::createSlug($request->get('slug'));
if ($request->get('image')) {
//upload website logo
$fileName = $slug;
$filePath = public_path() . '/product/';
$fileName = $this->uploadImage($request->get('image'), $fileName, $filePath);
////////////////
}
PlanV1::create([
'title' => $request->get('title'),
'currency' => $request->get('currency'),
'price' => $request->get('price'),
'list_one_title' => $request->get('list_one_title'),
'list_two_title' => $request->get('list_two_title'),
'list_sub_title' => $request->get('list_sub_title'),
'image_url' => $fileName,
'slug' => $slug,
'domain' => $request->get('domain'),
'product_file_path' => null
]);
return response()->json([
'message' => "success"
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function uploadImage($image, $fileName, $path)
{
try{
$this->authorizeForUser($this->user,'edit', new PlanV1);
$logo = base64_decode($image);
$filename = (explode('/', finfo_buffer(finfo_open(), $logo, FILEINFO_MIME_TYPE))[0]);
$ext = (explode('/', finfo_buffer(finfo_open(), $logo, FILEINFO_MIME_TYPE))[1]);
$imageName = $fileName . '.' . $ext;
$path = $path . $imageName;
file_put_contents($path, $logo);
return $imageName;
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function EditMed($id, Request $request)
{
try{
$this->authorizeForUser($this->user,'edit', new PlanV1);
$medicine = PlanV1::find($id);
$slug = self::createSlug($request->get('slug'));
$fileName = null;
if ($request->get('image')) {
//upload website logo
$fileName = $slug;
$filePath = public_path() . '/product/';
$fileName = $this->uploadImage($request->get('image'), $fileName, $filePath);
////////////////
}
$medicine->title = $request->get('title');
$medicine->currency = $request->get('currency');
$medicine->price = $request->get('price');
$medicine->list_one_title = $request->get('list_one_title');
$medicine->list_two_title = $request->get('list_two_title');
$medicine->list_sub_title = $request->get('list_sub_title');
$medicine->image_url = $fileName;
$medicine->slug = $slug;
$medicine->domain = $request->get('domain');
$medicine->save();
return response()->json([
'message' => "success"
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function DeleteMed($id, Request $request)
{
try{
$this->authorizeForUser($this->user,'edit', new PlanV1);
$medicine = PlanV1::where("id", $id)->delete();
return response()->json([
'message' => "success"
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
private function createSlug($string)
{
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
private function storeFile($file, $destinationPath)
{
//Display File Name
$file->getClientOriginalName();
$file->getClientOriginalExtension();
$file->getRealPath();
$file->getSize();
$file->getMimeType();
//Move Uploaded File
$file->move($destinationPath, $file->getClientOriginalName() . '.' . $file->getClientOriginalExtension());
}
public function getFileList()
{
$files = PlanV1::select('product_file_path')->groupBy('product_file_path')->get();
return response()->json([
'medicines' => $files
]);
}
public function updateStatusPatientPrescription(PatientPrescription $PatientPrescription, Request $request)
{
$PatientPrescription->status = $request->input("status");
$PatientPrescription->save();
return response()->json([
'status' => 'updated to ' . $request->input("status")
]);
}
public function updateStatusLabkit(Cart $cart, Request $request)
{
try{
$this->authorizeForUser($this->user,'edit', new LabKit);
$cart->status = $request->input("status");
$cart->save();
return response()->json([
'status' => 'updated to ' . $request->input("status")
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function labkitList()
{
try{
$this->authorizeForUser($this->user,'edit', new LabKit);
$labkit = LabKit::all();
return response()->json([
'labkit' => $labkit
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function labsKitDelete(LabKit $labkit)
{
try{
$this->authorizeForUser($this->user,'delete', new LabKit);
$labkit->delete();
return response()->json([
'message' => "Deleted Successfully"
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function labskitUpdate(LabKit $labkit, Request $request)
{
try{
$this->authorizeForUser($this->user,'edit', new LabKit);
$labkit->update($request->all());
return response()->json([
'message' => 'Labkit updated successfully',
'telemed' => $labkit
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function labskitCreate(LabKit $labkit, Request $request)
{
try{
$this->authorizeForUser($this->user,'add', new LabKit);
$labkit->create($request->all());
return response()->json([
'message' => 'Labkit created successfully',
'telemed' => $labkit
]);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function getPatientLabKitOrders(Patient $patient, Request $request)
{
$cart = Cart::with("patient")->where("patient_id", $patient->id)->get();
return response()->json(['cart' => $cart], 200);
}
}