|
@@ -3,8 +3,48 @@
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
+use Auth;
|
|
|
+use App\{
|
|
|
+ Hashtag,
|
|
|
+ HashtagFollow,
|
|
|
+ Status
|
|
|
+};
|
|
|
|
|
|
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';
|
|
|
+ // todo: send to HashtagFollowService
|
|
|
+ } else {
|
|
|
+ $state = 'deleted';
|
|
|
+ $hashtagFollow->delete();
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'state' => $state
|
|
|
+ ];
|
|
|
+ }
|
|
|
}
|