/home2/mshostin/public_html/app/Http/Controllers/ClientController.php
<?php

namespace App\Http\Controllers;

use App\Sale;
use App\Client;
use App\Refrence;
use App\Transaction;
use App\PaymentMethod;
use Illuminate\Http\Request;
use App\Http\Requests\ClientRequest;
use Illuminate\Support\Facades\Validator;

class ClientController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $clients = Client::paginate(25);

        return view('clients.index', compact('clients'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $ref = Refrence::all();
        return view('clients.create',compact('ref'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \App\Http\Request\ClientRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request, Client $client)
    {
        $validated = $request->validate([
            'document_id' => 'required|unique:clients',
            'document_type' => 'required',
            'reference_id' => 'required|numeric',
            'name' => 'required',
            'email' => 'required',
        ]);
        try{
            $client->create($request->all());
            
            return redirect()->route('clients.index')->withStatus('Successfully registered customer.');
        }
        catch(Exception $ex)
        {
            return redirect()->back()->withError($ex);
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Client $client)
    {
        return view('clients.show', compact('client'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Client $client)
    {
        $ref = Refrence::all();
        return view('clients.edit', compact('client','ref'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \App\Http\Request\ClientRequest  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(ClientRequest $request, Client $client)
    {
        $client->update($request->all());
        $client->reference_id = $request->reference_id;
        $client->save();
        // dd($client->toArray());
        return redirect()
            ->route('clients.index')
            ->withStatus('Successfully modified customer.');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(Client $client)
    {
        $client->delete();

        return redirect()
            ->route('clients.index')
            ->withStatus('Customer successfully removed.');
    }

    public function addtransaction(Client $client)
    {
        $payment_methods = PaymentMethod::all();

        return view('clients.transactions.add', compact('client','payment_methods'));
    }

    
}