![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/medad.corals.io/Corals/modules/Medad/Http/Controllers/ |
<?php namespace Corals\Modules\Medad\Http\Controllers; use Corals\Foundation\Http\Controllers\BaseController; use Corals\Modules\Medad\DataTables\CompanyRelationsDataTable; use Corals\Modules\Medad\DataTables\Scopes\CompanyRelationsScope; use Corals\Modules\Medad\Http\Requests\CompanyRelationRequest; use Corals\Modules\Medad\Http\Requests\NewCompanyRequest; use Corals\Modules\Medad\Models\Branch; use Corals\Modules\Medad\Models\Company; use Corals\Modules\Medad\Models\CompanyRelation; use Corals\Modules\Medad\Services\CompanyService; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Routing\Redirector; class CompanyRelationsController extends BaseController { protected $companyService; public function __construct(CompanyService $companyService) { $this->companyService = $companyService; $this->resource_url = config('medad.models.company_relation.resource_url'); $this->title = trans('Medad::module.company_relation.title'); $this->title_singular = trans('Medad::module.company_relation.title_singular'); parent::__construct(); } /** * @param CompanyRelationRequest $request * @param CompanyRelationsDataTable $dataTable * @return mixed */ public function index(CompanyRelationRequest $request, CompanyRelationsDataTable $dataTable) { $this->setViewSharedData(['hideCreate' => true]); return $dataTable->render('Medad::company_relations.index'); } /** * @param CompanyRelationRequest $request * @param Company $company * @return Application|Factory|View */ public function getAddCompany(CompanyRelationRequest $request, Company $company) { return view('Medad::company_relations.add')->with(compact('company')); } /** * @param CompanyRelationRequest $request * @param Company $company * @return \Illuminate\Foundation\Application|JsonResponse|mixed */ public function submitAddCompany(CompanyRelationRequest $request, Company $company) { try { if (!$request->filled('company_id')) { $secondCompany = $this->companyService->storeNewCompanyFromRelation($request); $request->request->add(['company_id' => $secondCompany->id]); } $this->companyService->storeRelation($request, $company); return [ 'level' => 'success', 'message' => trans('Medad::messages.company_added') ]; } catch (\Exception $exception) { log_exception($exception, Company::class, 'store'); return ['level' => 'error', 'message' => $exception->getMessage()]; } } /** * @param NewCompanyRequest $request * @param Company $company * @return \Illuminate\Foundation\Application|JsonResponse|mixed */ public function submitAddNewCompany(NewCompanyRequest $request) { try { $newCompany = $this->companyService->storeNewCompanyFromRelation($request); return [ 'new_company_id' => $newCompany->id, 'level' => 'success', 'message' => trans('Medad::messages.company_added') ]; } catch (\Exception $exception) { log_exception($exception, Company::class, 'store'); return ['level' => 'error', 'message' => $exception->getMessage()]; } } public function getCompanyRelations( CompanyRelationRequest $request, Company $company, CompanyRelationsDataTable $dataTable ) { if ($request->has('tab_html')) { $modelDataTable = new CompanyRelationsDataTable(); $modelDataTable->setResourceUrl($request->url()); return view('Medad::sub_show')->with(compact('modelDataTable')); } $dataTable->addScope(new CompanyRelationsScope($company)); return $dataTable->renderAjaxAndActions(); } /** * @param CompanyRelationRequest $request * @param CompanyRelation $company_relation * @param Company $company * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function edit(CompanyRelationRequest $request, CompanyRelation $company_relation) { $secondCompany = $company_relation->secondCompany; $this->setViewSharedData([ 'title_singular' => trans('Corals::labels.update_title', ['title' => $secondCompany->name]) ]); return view('Medad::company_relations.edit')->with(compact('company_relation')); } /** * @param CompanyRelationRequest $request * @param CompanyRelation $company_relation * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Foundation\Application|JsonResponse|RedirectResponse|Redirector|mixed */ public function update(CompanyRelationRequest $request, CompanyRelation $company_relation) { try { $this->companyService->updateCompanyRelation($request, $company_relation); $secondCompany = $company_relation->secondCompany; $message = [ 'level' => 'success', 'message' => trans('Corals::messages.success.updated', ['item' => $secondCompany->name]) ]; } catch (\Exception $exception) { $message = ['level' => 'error', 'message' => $exception->getMessage()]; log_exception($exception, Branch::class, 'update'); } return response()->json($message); } public function getCompanyDetailsByCode(Request $request) { $company = Company::query() ->where('code', $request->code) ->firstOrFail(); return response()->json([ 'data' => $company->only(['id', 'name', 'email', 'phone_number']), ]); } }