Viewing File: /home/assersoft/public_html/audiogramnew/app/Controllers/ClinicsController.php
<?php
namespace App\Controllers;
use App\Models\SubscriptionsModel;
use App\Validation\ClinicRules;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\RESTful\ResourceController;
class ClinicsController extends ResourceController
{
protected $modelName = 'App\Models\ClinicsModel';
protected $format = 'json';
protected $rules;
protected $subscriptionModel;
public function __construct()
{
$this->rules = new ClinicRules();
$this->subscriptionModel = new SubscriptionsModel();
}
/**
* Return an array of resource objects, themselves in array format.
*
* @return ResponseInterface
*/
public function index()
{
$clinics = $this->model->findAll();
if(!$clinics) {
return $this->failNotFound('No clinics found');
}
return $this->respond($clinics);
}
/**
* Return the properties of a resource object.
*
* @param int|string|null $id
*
* @return ResponseInterface
*/
public function show($id = null)
{
if($id === null) {
return $this->failNotFound('No clinic found');
}
$clinic = $this->model->find($id);
if($clinic === null) {
return $this->failNotFound('Clinic not found');
}
return $this->respond($clinic);
}
/**
* Create a new resource object, from "posted" parameters.
*
* @return ResponseInterface
*/
public function create()
{
if(!$this->validate($this->rules->createClinic)) {
return $this->fail($this->validator->getErrors());
}
$data = $this->request->getVar();
$clinic = $this->model->insert($data);
if(!$this->model->getInsertID()) {
return $this->fail($this->model->errors());
}
return $this->respondCreated($clinic);
}
/**
* Add or update a model resource, from "posted" properties.
*
* @param int|string|null $id
*
* @return ResponseInterface
*/
public function update($id = null)
{
if($id === null) {
return $this->failNotFound('No clinic found');
}
if(!$this->validate($this->rules->updateClinic)) {
return $this->fail($this->validator->getErrors());
}
$clinic = $this->model->find($id);
if($clinic === null) {
return $this->failNotFound('Clinic not found');
}
$data = $this->request->getVar();
$clinic = $this->model->update($id, $data);
if(!$clinic) {
return $this->fail($this->model->errors());
}
return $this->respondUpdated($clinic);
}
/**
* Delete the designated resource object from the model.
*
* @param int|string|null $id
*
* @return ResponseInterface
*/
public function delete($id = null)
{
if($id === null) {
return $this->failNotFound('No clinic found');
}
$clinic = $this->model->find($id);
if($clinic === null) {
return $this->failNotFound('Clinic not found');
}
$clinic = $this->model->delete($id);
if(!$clinic) {
return $this->fail($this->model->errors());
}
return $this->respondDeleted($clinic);
}
// Subscriptions.
public function renewSubscription($id = null)
{
if (!$this->validate($this->rules->renewSubscription)) {
return $this->failValidationErrors($this->validator->getErrors());
}
$data = (array) $this->request->getVar();
$data['clinic_id'] = $id;
$clinic = $this->model->find($id);
if ($clinic == null) {
return $this->failNotFound("Clinic not found");
}
$subscription = $this->subscriptionModel->insert($data);
if (!$subscription) {
return $this->fail($this->subscriptionModel->errors());
}
if (!$this->model->update($id, [
'subscription_status' => $data['subscription_status'],
])) {
return $this->fail("Failed to renew clinic subscription");
}
return $this->respondCreated($subscription);
}
public function cancelSubscription($clinic_id = null)
{
$clinic = $this->model->find($clinic_id);
if ($clinic == null) {
return $this->failNotFound("Clinic not found");
}
$subscription = $this->subscriptionModel->where('clinic_id', $clinic_id)->orderBy('created_at', 'desc')->first();
if ($subscription == null) {
return $this->failNotFound("Subscription not found");
}
$this->subscriptionModel->update($subscription['subscription_id'], [
'end_date' => date('Y-m-d H:i:s'),
'subscription_status' => -1,
]);
if ($this->subscriptionModel->affectedRows() == 0) {
return $this->fail("Failed to cancel clinic subscription");
}
$this->model->update($clinic_id, [
'subscription_status' => 0,
'subscription_end_date' => null,
]);
if ($this->model->affectedRows() == 0) {
return $this->fail("Failed to cancel clinic subscription");
}
return $this->respondUpdated($subscription);
}
public function getSubscriptions($clinic_id = null)
{
$clinic = $this->model->find($clinic_id);
if ($clinic === null) {
return $this->failNotFound("Clinic not found");
}
$subscriptions = $this->subscriptionModel->where('clinic_id', $clinic_id)->findAll();
if ($subscriptions === null) {
return $this->failNotFound("Subscriptions not found");
}
return $this->respond($subscriptions);
}
public function findSubscriptionById($clinic_id = null, $subscription_id = null)
{
$subscription = $this->subscriptionModel->find($subscription_id);
if ($subscription == null) {
return $this->failNotFound("Subscription not found");
}
return $this->respond($subscription);
}
public function deleteSubscription($clinic_id = null, $subscription_id = null)
{
$subscription = $this->subscriptionModel->find($subscription_id);
if ($subscription == null) {
return $this->failNotFound("Subscription not found");
}
$this->subscriptionModel->delete($subscription_id);
if ($this->subscriptionModel->affectedRows() == 0) {
return $this->fail("Failed to delete subscription");
}
return $this->respondDeleted($subscription);
}
}
Back to Directory
File Manager