Edit / PDF / Mail / ->Leads

This commit is contained in:
Kevin Adametz 2021-05-07 17:44:02 +02:00
parent 5d55e5be3f
commit 66ca252bfa
43 changed files with 2915 additions and 76 deletions

View file

@ -2,20 +2,27 @@
namespace App\Http\Controllers;
use App\Models\Lead;
use App\Repositories\LeadRepository;
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)
public function __construct(LeadRepository $leadRepo, CustomerRepository $custRepo)
{
$this->middleware('admin');
$this->leadRepo = $leadRepo;
$this->custRepo = $custRepo;
}
public function index($step = false)
@ -46,18 +53,92 @@ class LeadController extends Controller
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();
/* $data = Request::all();
\Session()->flash('alert-save', '1');
return redirect(route('lead_detail', [$lead->id]));*/
}
public function delete($id){
/*
\Session()->flash('alert-success', __('Eintrag gelöscht'));
return redirect(route('lead_detail', [$lead->id]));*/
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()
@ -77,8 +158,14 @@ class LeadController extends Controller
->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.'%');
@ -89,7 +176,7 @@ class LeadController extends Controller
$query->where('customer_id', 'LIKE', '%'.$keyword.'%');
}
})
->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id'])
->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status'])
->make(true);
}