@extends('layouts.app') @section('title', 'My posts | healthcareers.app') @section('robots', 'noindex, nofollow') @section('content')

My posts

Every job posted from {{ auth()->user()->email }}, and your team's jobs for organizations you manage.

Organization Bulk upload (CSV) Post another job
@include('partials.errors') @php $credit = \App\Services\Credits::balance((string) auth()->user()->email); @endphp @if ($credit > 0)
You have ${{ number_format($credit / 100, 2) }} of account credit. It's taken off automatically when you post a paid job or buy upgrades.
@endif @php $freeOrgs = app(\App\Services\Orgs\Organizations::class)->memberships(auth()->user()->email) ->filter(fn ($m) => $m->organization && $m->organization->isVerified())->map->organization->unique('id'); @endphp @foreach ($freeOrgs as $fo) @php $up = \App\Services\PostingRules::freePostsUp($fo); $allowed = \App\Services\PostingRules::verifiedFreePosts(); @endphp

{{ $fo->display_name }} (verified): {{ $up }} of {{ $allowed }} free posts up. {{ $up >= $allowed ? 'Close one or post as Standard to add more.' : 'You can post '.($allowed - $up).' more free.' }}

@endforeach @foreach (\App\Http\Controllers\PostJobController::packChoices(auth()->user()->email) as $pOrg => [$pName, $pLeft]) @php [$pNext, $pNextN] = \App\Services\Posting\JobPacks::nextExpiry($pOrg); @endphp

{{ $pName }} job pack: {{ $pLeft }} Standard {{ $pLeft === 1 ? 'post' : 'posts' }} left{{ $pNext ? ' ('.$pNextN.' '.($pNextN === 1 ? 'ends' : 'end').' '.$pNext->format('M j, Y').')' : '' }}. Packs

@endforeach @if (! empty($replyOrgs))

Replies to candidates · No Ghosting Policy

@foreach ($replyOrgs as $r) @php $s = $r['s']; @endphp
{{ $r['org']->display_name }} {{ $s['settled'] ? $s['rate'].'%' : '–' }} answered{{ $s['settled'] ? ' ('.$s['answered'].' of '.$s['settled'].')' : '' }} {{ $s['median'] ? 'Usually '.\App\Services\Orgs\ReplyStats::label($s['median']) : 'No replies yet' }} @if ($s['waiting']) $s['open_overdue'] > 0])>{{ $s['waiting'] }} {{ $s['waiting'] === 1 ? 'candidate' : 'candidates' }} waiting · Answer@endif @if ($r['badge'] === 'has')@include('partials.org-badges-one', ['b' => ['key' => 'no_ghosting', 'kind' => 'auto', 'label' => 'No Ghosting']]) @elseif ($r['badge'] === 'warned')No Ghosting badge at risk: answer the waiting candidates by {{ $r['deadline']->format('M j') }}. @elseif ($r['badge'] === 'lost')No Ghosting badge removed: it comes back when every waiting candidate has an answer. @elseif ($r['badge'] === 'admin_off')No Ghosting badge removed by healthcareers.app. Contact us about it.@endif
@endforeach

Candidates see your usual reply time on your job posts once you have {{ \App\Services\Orgs\ReplyStats::minimum() }} conversations. Please answer each within {{ \App\Services\Orgs\ReplyStats::PENDING_DAYS }} business days.

@endif @if ($orgOptions)
@foreach (array_filter(request()->only(['range', 'from', 'to']), 'is_string') as $k => $v)@endforeach
@endif @if ($dash) @include('dash.employer', ['d' => $dash, 'keep' => $show !== 'all' ? ['show' => $show] : [], 'csv' => request()->fullUrlWithQuery(['format' => 'csv'])])

Posts

@endif @if ($posts->isEmpty())

No posts yet.

Post a job free

@else
@foreach ($posts as $p) @endforeach
JobStatusEnds
{{ $p->title }}
{{ $p->org_name }} · {{ $p->locationLabel() }} · #{{ $p->id }} · {{ $p->tier === 'standard' ? 'Standard' : 'Basic' }}{{ $p->source === 'bulk' ? ' · bulk upload' : '' }}@if ($p->poster_email !== \Illuminate\Support\Str::lower(auth()->user()->email)) · posted by {{ $p->poster_email }}@endif
{{ number_format($p->views) }} {{ $p->views === 1 ? 'view' : 'views' }} · {{ $p->replies_count }} {{ $p->replies_count === 1 ? 'reply' : 'replies' }}@if ($dash && isset($dash['perPost'][$p->id])) · {{ number_format($dash['perPost'][$p->id]['job_seen']) }} seen in results ({{ strtolower($dash['range']->label) }})@endif @php $has = array_filter(['Highlight' => $p->highlight, 'Urgent' => $p->urgent, 'Logo' => $p->logo_path, 'Website link' => $p->website_url, 'Featured' => $p->isFeatured() || $p->featured_pending, 'Photos' => $p->has_photos, 'Alert blast' => $p->alert_blast_at]); @endphp @if ($has)
{{ implode(' · ', array_keys($has)) }}@endif
@if ($p->isLive())Live @elseif ($p->status === 'review')Being checked @elseif ($p->status === 'closed')Closed @elseif ($p->status === 'rejected')Not approved @elseif ($p->status === 'removed')Removed @elseEnded@endif {{ $p->isLive() ? $p->expires_at->format('M j, g:i A') : ($p->endedAt()?->format('M j, Y') ?? '–') }} @if ($p->published_at)Stats@endif @if ($p->isLive() && $p->availableUpgrades()) Upgrade @endif @if ($p->hasEnded() && in_array($p->status, ['active', 'expired', 'closed'], true)) Post again @endif @if (in_array((string) $p->source, \App\Models\SyncSource::OWNED_KINDS, true)) @if (in_array($p->status, ['active', 'review'], true))
Synced from {{ config('sync.connectors.'.$p->source.'.label') ?? ucfirst($p->source) }} — change it there@endif @elseif (in_array($p->status, ['active', 'review'], true) && ! $p->hasEnded()) Edit
@csrf
@endif

Upgrades are ${{ config('pricing.upgrade_price') }} each and last until the post ends. Receipts come from Stripe.

@endif @endsection