moduleUtil = $moduleUtil;
$this->repairUtil = $repairUtil;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(Request $request)
{
$business_id = request()->session()->get('user.business_id');
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module')))) {
abort(403, 'Unauthorized action.');
}
if ($request->ajax()) {
$models = DeviceModel::with('Device', 'Brand')
->where('business_id', $business_id)
->select('*');
if (! empty($request->get('brand_id'))) {
$models->where('brand_id', $request->get('brand_id'));
}
if (! empty($request->get('device_id'))) {
$models->where('device_id', $request->get('device_id'));
}
return Datatables::of($models)
->addColumn('action', function ($row) {
$html = '
';
$html .= '';
$html .= '
';
return $html;
})
->editColumn('repair_checklist', function ($row) {
$checklist = '';
if (! empty($row->repair_checklist)) {
$checklist = explode('|', $row->repair_checklist);
}
return $checklist;
})
->editColumn('device_id', function ($row) {
return $row->Device?->name;
})
->editColumn('brand_id', function ($row) {
return $row->Brand?->name;
})
->removeColumn('id')
->rawColumns(['action', 'repair_checklist', 'device_id', 'brand_id'])
->make(true);
}
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$business_id = request()->session()->get('user.business_id');
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module')))) {
abort(403, 'Unauthorized action.');
}
$brands = Brands::forDropdown($business_id, false, true);
$devices = Category::forDropdown($business_id, 'device');
return view('repair::device_model.create')
->with(compact('devices', 'brands'));
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$business_id = request()->session()->get('user.business_id');
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module')))) {
abort(403, 'Unauthorized action.');
}
try {
$input = $request->only('name', 'brand_id', 'device_id', 'repair_checklist');
$input['business_id'] = $business_id;
$input['created_by'] = $request->user()->id;
$device_model = DeviceModel::create($input);
$output = [
'success' => true,
'msg' => __('lang_v1.success'),
'data' => $device_model,
];
} catch (Exception $e) {
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
$output = [
'success' => false,
'msg' => __('messages.something_went_wrong'),
];
}
return $output;
}
/**
* Show the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
return view('repair::show');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$business_id = request()->session()->get('user.business_id');
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module')))) {
abort(403, 'Unauthorized action.');
}
$model = DeviceModel::where('business_id', $business_id)
->findOrFail($id);
$brands = Brands::forDropdown($business_id, false, true);
$devices = Category::forDropdown($business_id, 'device');
return view('repair::device_model.edit')
->with(compact('devices', 'brands', 'model'));
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function update(Request $request, $id)
{
$business_id = request()->session()->get('user.business_id');
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module')))) {
abort(403, 'Unauthorized action.');
}
try {
$input = $request->only('name', 'brand_id', 'device_id', 'repair_checklist');
$model = DeviceModel::where('business_id', $business_id)
->findOrFail($id);
$model->update($input);
$output = [
'success' => true,
'msg' => __('lang_v1.success'),
];
} catch (Exception $e) {
DB::rollBack();
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
$output = [
'success' => false,
'msg' => __('messages.something_went_wrong'),
];
}
return $output;
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
$business_id = request()->session()->get('user.business_id');
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module')))) {
abort(403, 'Unauthorized action.');
}
if (request()->ajax()) {
try {
$model = DeviceModel::where('business_id', $business_id)
->findOrFail($id);
$model->delete();
$output = [
'success' => true,
'msg' => __('lang_v1.success'),
];
} catch (Exception $e) {
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
$output = [
'success' => false,
'msg' => __('messages.something_went_wrong'),
];
}
return $output;
}
}
/**
* get models for particular device
*
* @param $request
* @return Response
*/
public function getDeviceModels(Request $request)
{
$business_id = request()->session()->get('user.business_id');
$device_id = $request->get('device_id');
$brand_id = $request->get('brand_id');
$query = DeviceModel::where('business_id', $business_id)
->where('device_id', $device_id);
if (! empty($brand_id)) {
$query->where('brand_id', $brand_id);
}
$models = $query->pluck('name', 'id');
//dynamically generate dropdown
$model_html = view('repair::device_model.partials.device_model_drodown')
->with(compact('models'))
->render();
return $model_html;
}
/**
* get repair checklist for particular models
*
* @param $request
* @return Response
*/
public function getRepairChecklists(Request $request)
{
$business_id = request()->session()->get('user.business_id');
$model_id = $request->get('model_id');
$transaction_id = $request->get('transaction_id');
$job_sheet_id = $request->get('job_sheet_id');
$device_model = DeviceModel::where('business_id', $business_id)
->find($model_id);
$selected_checklist = [];
//used while editing and creating invoivce
if (! empty($transaction_id)) {
$transaction = Transaction::where('business_id', $business_id)
->where('type', 'sell')
->find($transaction_id);
$selected_checklist = ! empty($transaction->repair_checklist) ? json_decode($transaction->repair_checklist, true) : [];
}
//used while adding/editing/creating job sheet and its invoivce
if (! empty($job_sheet_id)) {
$job_sheet = JobSheet::where('business_id', $business_id)
->find($job_sheet_id);
$selected_checklist = ! empty($job_sheet->checklist) ? $job_sheet->checklist : [];
}
$checklists = [];
if (! empty($device_model) && ! empty($device_model->repair_checklist)) {
$checklists = explode('|', $device_model->repair_checklist);
}
//merge default checklist
$repair_settings = $this->repairUtil->getRepairSettings($business_id);
if (! empty($repair_settings['default_repair_checklist'])) {
$checklists = array_merge(explode('|', $repair_settings['default_repair_checklist']), $checklists);
}
//dynamically generate dropdown
$checklists_html = view('repair::repair.partials.checklists')
->with(compact('checklists', 'selected_checklist'))
->render();
return $checklists_html;
}
}