403Webshell
Server IP : 139.59.63.204  /  Your IP : 216.73.217.62
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ubuntu-s-1vcpu-1gb-blr1-01 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64
User : root ( 0)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/crmapp/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/crmapp/app/Http/Controllers/DealController.php
<?php

namespace App\Http\Controllers;

use App\Models\{Deal, Pipeline, Stage, Lead};
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class DealController extends Controller
{
    public function index()
    {
        $deals = Deal::latest()->paginate(10);
        return view('deals.index', compact('deals'));
    }

    public function create()
    {
        $leads = Lead::all(); // for dropdown
        return view('deals.create', compact('leads'));
    }

    public function store(Request $request)
    {
        $data = $request->validate([
            'lead_id'             => 'nullable|exists:leads,id',
            'title'               => 'required|string|max:255',
            'value'               => 'required|numeric|min:0',
            'stage'               => 'required|string|in:prospecting,proposal,negotiation,won,lost',
            'expected_close_date' => 'nullable|date',
        ]);

        Deal::create($data);
        return redirect()->route('deals.index')->with('success', 'Deal created');
    }

    public function show(Deal $deal)
    {
        return view('deals.show', compact('deal'));
    }

    public function edit(Deal $deal)
    {
        $leads = Lead::all();
        return view('deals.edit', compact('deal','leads'));
    }

    public function update(Request $request, Deal $deal)
    {
        $data = $request->validate([
            'lead_id'             => 'nullable|exists:leads,id',
            'title'               => 'required|string|max:255',
            'value'               => 'required|numeric|min:0',
            'stage'               => 'required|string|in:prospecting,proposal,negotiation,won,lost',
            'expected_close_date' => 'nullable|date',
        ]);

        $deal->update($data);
        return redirect()->route('deals.index')->with('success', 'Deal updated');
    }

    public function destroy(Deal $deal)
    {
        $deal->delete();
        return redirect()->route('deals.index')->with('success', 'Deal deleted');
    }

    /** Kanban Implementation by Dileep Awasthi */
    public function kanban(Request $request, Pipeline $pipeline = null) 
    {
        $pipeline = $pipeline ?: Pipeline::firstOrFail();
        $stages = $pipeline->stages()->with(['deals' => function($q){
            $q->where('status','open')->with('owner:id,name');
        }])->get();
        return view('deals.kanban', compact('pipeline','stages'));
    }

    public function move(Request $request, Deal $deal)
    {
        $this->authorize('update', $deal);
        $validated = $request->validate([
            'to_stage_id' => ['required','exists:stages,id'],
            'new_position' => ['nullable','integer','min:0']
        ]);
        DB::transaction(function() use ($deal, $validated){
            $deal->stage_id = $validated['to_stage_id'];
            $deal->position = $validated['new_position'] ?? 0;
            $deal->save();
        });
        return response()->json(['ok' => true]);
    }
    
    public function reorderWithinStage(Request $request, Stage $stage)
    {
        $this->authorize('viewAny', Deal::class);
        $validated = $request->validate([
            'ordered_ids' => ['required','array'],
            'ordered_ids.*' => ['integer','exists:deals,id']
        ]);
        
        DB::transaction(function() use ($stage, $validated){
            foreach ($validated['ordered_ids'] as $pos => $id) {
                Deal::where('id',$id)->where('stage_id',$stage->id)->update(['position' => $pos]);
            }
        });
        
        return response()->json(['ok' => true]);
    }
 
}

Youez - 2016 - github.com/yon3zu
LinuXploit