소스 검색

Add store() method to StatusController

Daniel Supernault 7 년 전
부모
커밋
67d15de123
1개의 변경된 파일37개의 추가작업 그리고 1개의 파일을 삭제
  1. 37 1
      app/Http/Controllers/StatusController.php

+ 37 - 1
app/Http/Controllers/StatusController.php

@@ -2,9 +2,45 @@
 
 namespace App\Http\Controllers;
 
+use Auth;
 use Illuminate\Http\Request;
+use App\{Media, Status, User};
 
 class StatusController extends Controller
 {
-    //
+    public function store(Request $request)
+    {
+      if(Auth::check() == false)
+      { 
+        abort(403); 
+      }
+
+      $user = Auth::user();
+
+      $this->validate($request, [
+        'photo'   => 'required|image|max:8000',
+        'caption' => 'string|max:150'
+      ]);
+      $monthHash = hash('sha1',date('Y').date('m'));
+      $userHash = hash('sha1', $user->id . (string) $user->created_at);
+      $storagePath = "public/m/{$monthHash}/{$userHash}";
+      $path = $request->photo->store($storagePath);
+      $profile = $user->profile;
+
+      $status = new Status;
+      $status->profile_id = $profile->id;
+      $status->caption = $request->caption;
+      $status->save();
+
+      $media = new Media;
+      $media->status_id = $status->id;
+      $media->profile_id = $profile->id;
+      $media->user_id = $user->id;
+      $media->media_path = $path;
+      $media->size = $request->file('photo')->getClientSize();
+      $media->mime = $request->file('photo')->getClientMimeType();
+      $media->save();
+      
+      return [$media, $request->all()];
+    }
 }