repo = $repo; } public function index(Request $req) { $status = null; $statusId = $req->get('status'); if ($statusId) { $status = $this->repo->getStatusName($statusId); } $projects = $this->repo->getProjects($req->get('q'), $statusId); return view('projects.index',compact('projects','status')); } public function create() { $customers = $this->repo->getCustomersList(); return view('projects.create', compact('customers')); } public function store(CreateRequest $req) { $project = $this->repo->create($req->except('_token')); flash()->success(trans('project.created')); return redirect()->route('projects.show', $project->id); } public function show($projectId) { $project = $this->repo->requireById($projectId); return view('projects.show', compact('project')); } public function edit($projectId) { $project = $this->repo->requireById($projectId); $statuses = getProjectStatusesList(); $customers = $this->repo->getCustomersList(); return view('projects.edit',compact('project','statuses','customers')); } public function update(UpdateRequest $req, $projectId) { $project = $this->repo->update($req->except(['_method','_token']), $projectId); flash()->success(trans('project.updated')); return redirect()->route('projects.edit', $projectId); } public function delete($projectId) { $project = $this->repo->requireById($projectId); return view('projects.delete', compact('project')); } public function destroy(DeleteRequest $req, $projectId) { if ($projectId == $req->get('project_id')) { $this->repo->delete($projectId); flash()->success(trans('project.deleted')); } else flash()->error(trans('project.undeleted')); return redirect()->route('projects.index'); } public function features($projectId) { $project = $this->repo->requireById($projectId); $features = $this->repo->getProjectFeatures($projectId); return view('projects.features', compact('project','features')); } public function subscriptions($projectId) { $project = $this->repo->requireById($projectId); return view('projects.subscriptions', compact('project')); } public function featuresExport(Request $req, $projectId, $exportType = 'excel') { $featureType = $req->get('feature_type', 1); $project = $this->repo->requireById($projectId); $features = $this->repo->getProjectFeatures($projectId, $featureType); if ($exportType == 'excel') { return view('projects.features-export-excel', compact('project','features')); \Excel::create(str_slug(trans('project.features') . '-' . $project->name), function($excel) use ($project, $features) { $excel->sheet('testng', function($sheet) use ($project, $features) { $sheet->loadView('projects.features-export-excel',compact('project','features')); }); })->download('xls'); } else { return view('projects.features-export-html', compact('project','features')); } } public function payments($projectId) { $project = $this->repo->requireById($projectId); $project->load('payments.customer'); return view('projects.payments', compact('project')); } public function statusUpdate(Request $req, $projectId) { $project = $this->repo->updateStatus($req->get('status_id'), $projectId); flash()->success(trans('project.updated')); return redirect()->route('projects.show', $projectId); } public function featuresReorder(Request $req, $projectId) { if ($req->ajax()) { $data = $this->repo->featuresReorder($req->get('postData')); return 'oke'; } return null; } }