timegridio/timegrid

View on GitHub
app/Http/Controllers/User/BusinessController.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use Fenos\Notifynder\Facades\Notifynder;
use Timegridio\Concierge\Concierge;
use Timegridio\Concierge\Models\Business;

class BusinessController extends Controller
{
    private $concierge;

    public function __construct(Concierge $concierge)
    {
        $this->concierge = $concierge;
    }

    /**
     * get Home.
     *
     * @param Business $business Business to display
     *
     * @return Response Rendered view for desired Business
     */
    public function getHome(Business $business)
    {
        logger()->info(__METHOD__);
        logger()->info(sprintf("businessId:%s businessSlug:'%s'", $business->id, $business->slug));

        $businessName = $business->name;
        Notifynder::category('user.visitedShowroom')
                   ->from('App\Models\User', auth()->id())
                   ->to('Timegridio\Concierge\Models\Business', $business->id)
                   ->url('http://localhost')
                   ->extra(compact('businessName'))
                   ->send();

        $available = $this->concierge->business($business)->isBookable('today', 30);

        $appointment = $business->bookings()->forContacts(auth()->user()->contacts)->active()->first();

        return view('user.businesses.show', compact('business', 'available', 'appointment'));
    }

    /**
     * get List.
     *
     * @return Response Rendered view of all existing Businesses
     */
    public function getList()
    {
        logger()->info(__METHOD__);

        $businesses = Business::where('listed', true)->get();

        return view('user.businesses.index', compact('businesses'));
    }

    ////////////////
    // FOR REVIEW //
    ////////////////

    /**
     * Gets the User profile Contacts that MAY BE subscribed to Businesses.
     *
     * @return Response Rendered view of the Contacts linked to the requesting User
     */
    public function getSubscriptions()
    {
        logger()->info(__METHOD__);

        $contacts = auth()->user()->contacts;

        return view('user.businesses.subscriptions', compact('contacts'));
    }
}