%PDF- %PDF-
Direktori : /var/www/html/shaban/duassis/api/app/Models/ |
Current File : //var/www/html/shaban/duassis/api/app/Models/Post.php |
<?php namespace App\Models; use Carbon\Carbon; use Exception; use Illuminate\Support\Facades\DB; use Spatie\MediaLibrary\HasMedia\HasMedia; use Spatie\MediaLibrary\HasMedia\HasMediaTrait; /** * @property integer id * @property string title * @property string type * @property User author * @property Category category * @property Field|null field * @property mixed|null expires_at */ class Post extends BaseModel implements HasMedia { use HasMediaTrait; const GAME_TYPE = 'GAME'; const CHAMPIONSHIP_TYPE = 'CHAMPIONSHIP'; const FEED_TYPE = 'FEED'; const JOIN_TYPE = 'JOIN'; const MEDIA_COLLECTION = 'posts'; protected $fillable = [ 'title', 'type', 'expires_at', ]; protected $dates = [ 'expires_at', ]; protected $guarded = [ 'user_id', 'field_id', 'category_id', ]; protected $casts = [ 'id' => 'integer', 'title' => 'string', 'type' => 'string', 'expires_at' => 'datetime', ]; /** * @param $data * @return Post * @throws Exception */ public static function createItem($data) { try { DB::beginTransaction(); /** @var Post $post */ $post = Post::query() ->make([ 'title' => $data['title'], 'type' => array_key_exists('type', $data) ? $data['type'] : self::GAME_TYPE, 'expires_at' => array_key_exists('expires_at', $data) ? Carbon::parse($data['expires_at']) : null, ]); /** @var User $author */ $author = $post->getLoggedInUser(); if (array_key_exists('fieldId', $data)) { $field = Field::query() ->findOrFail($data['fieldId']); $post->field() ->associate($field); } $category = Category::query() ->findOrFail($data['categoryId']); $post->category() ->associate($category); $post->author() ->associate($author); $post->save(); $post->save(); DB::commit(); try { // if (array_key_exists('image', $data) && $image = $data['image']) { // $post->uploadPicture($image); // } } catch (Exception $e) { //NOTHING } return $post; } catch (Exception $e) { DB::rollBack(); throw $e; } } public function field() { return $this->belongsTo(Field::class); } public function category() { return $this->belongsTo(Category::class); } public function author() { return $this->belongsTo(User::class, 'author_id'); } }