for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Coyote\Http\Controllers\Guide;
use Coyote\Guide;
use Coyote\Http\Controllers\Controller;
use Coyote\Services\UrlBuilder;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\Request;
use Coyote\Services\Stream\Activities\Vote as Stream_Vote;
use Coyote\Services\Stream\Objects\Guide as Stream_Guide;
class VoteController extends Controller
{
public function vote(Guide $guide, Request $request)
/** @var \Coyote\Guide\Vote $vote */
$vote = $guide->voters()->forUser($this->userId)->first();
if (!config('app.debug') && $this->userId === $guide->user_id) {
throw new AuthorizationException('Nie możesz głosować na wpisy swojego autorstwa.');
}
$this->transaction(function () use ($vote, $guide, $request) {
if ($vote) {
$vote
Coyote\Guide\Vote
true
$vote->delete();
$guide->votes--;
} else {
$vote = $guide->voters()->create(['user_id' => $this->userId, 'ip' => $request->ip()]);
$guide->votes++;
$target = null;
$url = UrlBuilder::guide($guide);
$url
$object = (new Stream_Guide())->map($guide);
// app('reputation.microblog.vote')->map($microblog)->setUrl($url)->setPositive($vote->wasRecentlyCreated)->save();
$guide->save();
// put this to activity stream
stream(Stream_Vote::class, $object, $target);
return $vote;
});