187 lines
6.1 KiB
PHP
Executable file
187 lines
6.1 KiB
PHP
Executable file
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Carbon;
|
|
use Request;
|
|
use App\Models\Lead;
|
|
use App\Models\LeadFile;
|
|
use App\Models\LeadNotice;
|
|
use App\Repositories\LeadRepository;
|
|
use App\Repositories\CustomerRepository;
|
|
use App\Repositories\LeadFileRepository;
|
|
|
|
class LeadController extends Controller
|
|
{
|
|
|
|
protected $leadRepo;
|
|
protected $custRepo;
|
|
|
|
public function __construct(LeadRepository $leadRepo, CustomerRepository $custRepo)
|
|
{
|
|
$this->middleware('admin');
|
|
$this->leadRepo = $leadRepo;
|
|
$this->custRepo = $custRepo;
|
|
|
|
}
|
|
|
|
public function index($step = false)
|
|
{
|
|
$data = [
|
|
'step' => $step
|
|
];
|
|
return view('lead.index', $data);
|
|
}
|
|
|
|
public function detail($id)
|
|
{
|
|
if($id === "new") {
|
|
$lead = new Lead();
|
|
$id = 'new';
|
|
|
|
}else{
|
|
$lead = Lead::findOrFail($id);
|
|
$id = $lead->id;
|
|
}
|
|
$data = [
|
|
'lead' => $lead,
|
|
'id' => $id,
|
|
];
|
|
return view('lead.detail', $data);
|
|
|
|
}
|
|
|
|
public function store($id)
|
|
{
|
|
$data = Request::all();
|
|
|
|
if($data['action'] === 'saveCustomer'){
|
|
$customer = $this->custRepo->updateCustomerFromLead($id, $data);
|
|
\Session()->flash('alert-save', '1');
|
|
return redirect(route('lead_detail', [$id]).'#collapseLeadCustomer');
|
|
}
|
|
|
|
if($data['action'] === 'saveLead'){
|
|
$lead = $this->leadRepo->updateLead($id, $data);
|
|
\Session()->flash('alert-save', '1');
|
|
return redirect(route('lead_detail', [$id]).'#collapseLeadDetail');
|
|
}
|
|
|
|
if($data['action'] === 'saveStatus'){
|
|
$lead = $this->leadRepo->updateLeadStatus($id, $data);
|
|
\Session()->flash('alert-save', '1');
|
|
return redirect(route('lead_detail', [$id]).'#collapseLeadStatus');
|
|
}
|
|
|
|
if($data['action'] === 'save_notice'){
|
|
$lead = $this->leadRepo->updateNotice($id, $data);
|
|
\Session()->flash('alert-save', '1');
|
|
return redirect(route('lead_detail', [$lead->id])."#collapseLeadNotice");
|
|
}
|
|
if($data['action'] === 'edit_notice'){
|
|
$lead = $this->leadRepo->updateNotice($id, $data);
|
|
\Session()->flash('alert-save', '1');
|
|
return redirect(route('lead_detail', [$lead->id])."#collapseLeadNotice");
|
|
}
|
|
|
|
|
|
return back();
|
|
}
|
|
|
|
public function loadModal(){
|
|
$data = Request::all();
|
|
$ret = "";
|
|
if(Request::ajax()) {
|
|
if($data['action'] === "edit_notice") {
|
|
$value = LeadNotice::findOrFail($data['id']);
|
|
$ret = view("lead.edit_notice_modal", compact('data', 'value'))->render();
|
|
}
|
|
}
|
|
return response()->json(['response' => $data, 'html'=>$ret]);
|
|
}
|
|
|
|
public function delete($id, $del="lead"){
|
|
|
|
if($del === 'lead') {
|
|
$lead = Lead::findOrFail($id);
|
|
dump($lead);
|
|
dd('TODO check delete');
|
|
//Files
|
|
$leadFiles = LeadFile::where('lead_id', $lead->id)->get();
|
|
foreach ($leadFiles as $leadFile) {
|
|
$fileRepo = new LeadFileRepository($leadFile);
|
|
$fileRepo->_set('disk', 'lead');
|
|
$fileRepo->delete();
|
|
$leadFile->delete();
|
|
}
|
|
//Mails Files CASCADE
|
|
$lead->delete();
|
|
\Session()->flash('alert-success', __('Anfrage gelöscht'));
|
|
}
|
|
|
|
|
|
if($del === 'lead_notice'){
|
|
$leadNotice = LeadNotice::findOrFail($id);
|
|
$lead = $leadNotice->lead;
|
|
$leadNotice->delete();
|
|
\Session()->flash('alert-success', 'Notiz gelöscht');
|
|
return redirect(route('lead_detail', [$lead->id]));
|
|
}
|
|
|
|
if($del === 'lead_files'){
|
|
$leadFile = LeadFile::findOrFail($id);
|
|
$lead = $leadFile->lead;
|
|
$fileRepo = new LeadFileRepository($leadFile);
|
|
$fileRepo->_set('disk', 'lead');
|
|
$fileRepo->delete();
|
|
$leadFile->delete();
|
|
\Session()->flash('alert-success', 'Datei gelöscht');
|
|
return redirect(route('lead_detail', [$lead->id]));
|
|
}
|
|
return redirect(route('leads'));
|
|
}
|
|
|
|
public function getLeads()
|
|
{
|
|
$query = Lead::with('customer')->with('sf_guard_user')->with('status')->select('lead.*');
|
|
|
|
return \DataTables::eloquent($query)
|
|
->addColumn('action_edit', function (Lead $lead) {
|
|
return '<a href="'.route('lead_detail', [$lead->id]).'" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
|
|
})
|
|
->addColumn('id', function (Lead $lead) {
|
|
return '<a data-order="'.$lead->id.'" href="'.route('lead_detail', [$lead->id]).'" data-id="'.$lead->id.'">'.$lead->id.'</a>';
|
|
})
|
|
->addColumn('customer_id', function (Lead $lead) {
|
|
return '<a data-order="'.$lead->customer_id.'" href="'.route('customer_detail', [$lead->customer_id]).'" data-id="'.$lead->customer_id.'">'.$lead->customer_id.'</a>';
|
|
})
|
|
->addColumn('request_date', function (Lead $lead) {
|
|
return Carbon::parse($lead->request_date)->format(\Util::formatDateDB());
|
|
})
|
|
->addColumn('status', function (Lead $lead) {
|
|
//umbuchen
|
|
return $lead->getStatusBadge();
|
|
})
|
|
->orderColumn('id', 'id $1')
|
|
->orderColumn('customer_id', 'customer_id $1')
|
|
->orderColumn('status', 'status_id $1')
|
|
|
|
->filterColumn('id', function($query, $keyword) {
|
|
if($keyword != ""){
|
|
$query->where('id', 'LIKE', '%'.$keyword.'%');
|
|
}
|
|
})
|
|
->filterColumn('customer_id', function($query, $keyword) {
|
|
if($keyword != ""){
|
|
$query->where('customer_id', 'LIKE', '%'.$keyword.'%');
|
|
}
|
|
})
|
|
->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status'])
|
|
->make(true);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|