12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Auth;
- use App\{
- Hashtag,
- HashtagFollow,
- Status
- };
- use App\Services\HashtagService;
- class HashtagFollowController extends Controller
- {
- public function __construct()
- {
- $this->middleware('auth');
- }
- public function store(Request $request)
- {
- $this->validate($request, [
- 'name' => 'required|alpha_num|min:1|max:124|exists:hashtags,name'
- ]);
- $user = Auth::user();
- $profile = $user->profile;
- $tag = $request->input('name');
- $hashtag = Hashtag::whereName($tag)->firstOrFail();
- $hashtagFollow = HashtagFollow::firstOrCreate([
- 'user_id' => $user->id,
- 'profile_id' => $user->profile_id ?? $user->profile->id,
- 'hashtag_id' => $hashtag->id
- ]);
- if($hashtagFollow->wasRecentlyCreated) {
- $state = 'created';
- HashtagService::follow($profile->id, $hashtag->id);
- // todo: send to HashtagFollowService
- } else {
- $state = 'deleted';
- HashtagService::unfollow($profile->id, $hashtag->id);
- $hashtagFollow->delete();
- }
- return [
- 'state' => $state
- ];
- }
- public function getTags(Request $request)
- {
- return HashtagFollow::with('hashtag')->whereUserId(Auth::id())
- ->inRandomOrder()
- ->take(3)
- ->get()
- ->map(function($follow, $k) {
- return $follow->hashtag->name;
- });
- }
- }
|