status, ['future', 'draft', 'publish'])) { return; } if ((is_empty($post->title)) || (is_empty($post->slug)) || (is_empty($post->main_keyword)) || (is_empty($post->keywords)) || (is_empty($post->bites)) || (is_empty($post->featured_image)) || (is_empty($post->body)) || (is_empty($post->metadata))) { Notification::route(get_notification_channel(), get_notification_user_id())->notify(new PostIncomplete($post)); return; } /* TODO: - to determine a published_at time, first check if there are any post with existing published_at date. - if there are no other posts except for the current post, then the current post published_at is now(). - if there are other posts but all of them published_at is null, then the current post published_at is now(). - if there are other posts and there are non null published_at, -- first find the latest published post (latest published_at). -- if the latest published_at datetime is before now, then published_at is null. -- if the latest published_at datetime is after now, then current post published_at should be 1 hour after the latest published_at -- the idea is published_posts should be spreaded accross by an hour if found. */ // Check if there are any other posts with a set published_at date $latest_published_post = Post::where('id', '!=', $post_id)->whereNotNull('published_at')->orderBy('published_at', 'DESC')->first(); //dd($latest_published_post); if (is_null($latest_published_post)) { $post->published_at = now(); } else { if ($latest_published_post->published_at->lt(now())) { $new_time = now(); } else { $new_time = clone $latest_published_post->published_at; } $new_time->addMinutes(rand(40, 60)); $post->published_at = $new_time; } $post->published_at->subDays(1); $post->status = $post_status; // Assuming you want to update the status to future $post->save(); } }