Files
animexe/resources/views/admin/users/show.blade.php
T
2026-07-14 00:01:48 +03:00

268 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('admin.layouts.app')
@section('title', $user->name)
@section('page-title', $user->name)
@push('styles')
<style>
.info-row {
display:flex; justify-content:space-between; align-items:center;
padding:11px 0;
border-bottom:1px solid var(--border);
font-size:13.5px;
}
.info-row:last-child { border-bottom:none; }
.info-label { color:var(--text2); font-weight:500; }
.info-value { color:var(--text); font-weight:600; text-align:right; }
</style>
@endpush
@section('content')
<div class="mb-4">
<a href="{{ route('admin.users.index') }}" class="btn btn-secondary btn-sm">
<i class="bi bi-arrow-left"></i> Kullanıcılara Dön
</a>
</div>
<div class="row g-4">
{{-- ── Sol Kolon ── --}}
<div class="col-lg-4">
{{-- Profil Kartı --}}
<div class="card mb-3">
<div class="card-body text-center" style="padding:28px 20px">
<div class="user-avatar lg mx-auto mb-3">
@if($user->avatar)
<img src="{{ \App\Support\MediaUrl::fromStoragePath($user->avatar) }}" alt="">
@else
{{ strtoupper(substr($user->name, 0, 1)) }}
@endif
</div>
<div style="font-size:17px;font-weight:800;color:var(--text);margin-bottom:4px">{{ $user->name }}</div>
<div style="font-size:13px;color:var(--text2);margin-bottom:14px">{{ $user->email }}</div>
<div class="d-flex justify-content-center gap-2 flex-wrap">
@if($user->role === 'admin')
<span class="badge bg-danger">Admin</span>
@elseif($user->role === 'moderator')
<span class="badge bg-info" style="color:#000">Moderatör</span>
@else
<span class="badge bg-secondary">Kullanıcı</span>
@endif
@if($user->membership === 'premium')
<span class="badge badge-premium"><i class="bi bi-star-fill" style="font-size:9px;margin-right:3px"></i>Premium</span>
@else
<span class="badge badge-free">Ücretsiz</span>
@endif
@if($user->is_banned)
<span class="badge bg-danger"><i class="bi bi-slash-circle-fill" style="font-size:9px;margin-right:3px"></i>Banlı</span>
@endif
</div>
</div>
</div>
{{-- Bilgiler --}}
<div class="card mb-3">
<div class="card-header">
<i class="bi bi-info-circle" style="color:var(--accent-lt)"></i>
<h6>Hesap Bilgileri</h6>
</div>
<div class="card-body">
<div class="info-row">
<span class="info-label">Kayıt Tarihi</span>
<span class="info-value">{{ $user->created_at->format('d.m.Y') }}</span>
</div>
<div class="info-row">
<span class="info-label">Son Giriş</span>
<span class="info-value">{{ $user->last_login_at ? $user->last_login_at->format('d.m.Y H:i') : '—' }}</span>
</div>
@if($user->membership === 'premium')
<div class="info-row">
<span class="info-label">Premium Bitiş</span>
<span class="info-value" style="color:var(--warning)">
{{ $user->premium_expires_at ? $user->premium_expires_at->format('d.m.Y') : 'Süresiz' }}
</span>
</div>
@endif
@if($user->is_banned)
<div class="info-row">
<span class="info-label">Ban Tarihi</span>
<span class="info-value" style="color:var(--danger)">{{ $user->banned_at?->format('d.m.Y') ?? '—' }}</span>
</div>
@if($user->ban_reason)
<div class="info-row" style="flex-direction:column;align-items:flex-start;gap:4px">
<span class="info-label">Ban Sebebi</span>
<span style="font-size:13px;color:var(--text)">{{ $user->ban_reason }}</span>
</div>
@endif
@endif
</div>
</div>
{{-- İşlemler --}}
<div class="card mb-3">
<div class="card-header">
<i class="bi bi-sliders" style="color:var(--info)"></i>
<h6>İşlemler</h6>
</div>
<div class="card-body d-flex flex-column gap-2">
<a href="{{ route('admin.users.edit', $user) }}" class="btn btn-outline-primary btn-sm">
<i class="bi bi-pencil"></i> Düzenle
</a>
@if($user->is_banned)
<form method="POST" action="{{ route('admin.users.unban', $user) }}">
@csrf
<button type="submit" class="btn btn-success btn-sm w-100">
<i class="bi bi-check-circle"></i> Banı Kaldır
</button>
</form>
@else
<button class="btn btn-outline-warning btn-sm" data-bs-toggle="modal" data-bs-target="#banModal">
<i class="bi bi-slash-circle"></i> Banla
</button>
@endif
@if($user->id !== auth()->id())
<form method="POST" action="{{ route('admin.users.destroy', $user) }}"
onsubmit="return confirm('{{ addslashes($user->name) }} kullanıcısını kalıcı olarak silmek istediğinize emin misiniz?')">
@csrf @method('DELETE')
<button type="submit" class="btn btn-outline-danger btn-sm w-100">
<i class="bi bi-trash3"></i> Hesabı Sil
</button>
</form>
@endif
</div>
</div>
{{-- Premium Yönetimi --}}
<div class="card">
<div class="card-header">
<i class="bi bi-star" style="color:var(--warning)"></i>
<h6>Premium Yönetimi</h6>
</div>
<div class="card-body d-flex flex-column gap-3">
@if($user->membership === 'premium')
<form method="POST" action="{{ route('admin.users.remove-premium', $user) }}">
@csrf
<button type="submit" class="btn btn-outline-warning btn-sm w-100">
<i class="bi bi-x-circle"></i> Premium'u Kaldır
</button>
</form>
@endif
<form method="POST" action="{{ route('admin.users.give-premium', $user) }}">
@csrf
<div class="mb-2">
<select name="plan_id" class="form-select" required>
<option value="">— Plan Seç —</option>
@foreach($plans as $plan)
<option value="{{ $plan->id }}">{{ $plan->name }} ({{ $plan->duration_days }} gün)</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary btn-sm w-100">
<i class="bi bi-star-fill"></i> Premium Ver
</button>
</form>
</div>
</div>
</div>
{{-- ── Sağ Kolon ── --}}
<div class="col-lg-8">
{{-- Abonelik Geçmişi --}}
<div class="card mb-4">
<div class="card-header">
<i class="bi bi-credit-card" style="color:var(--success)"></i>
<h6>Abonelik Geçmişi</h6>
</div>
<div class="card-body p-0">
@forelse($user->subscriptions as $sub)
<div class="d-flex align-items-center justify-content-between px-4 py-3" style="border-bottom:1px solid var(--border)">
<div>
<div style="font-size:13.5px;font-weight:700;color:var(--text)">{{ $sub->plan->name ?? '' }}</div>
<div style="font-size:12px;color:var(--text2)">
{{ $sub->starts_at?->format('d.m.Y') }} — {{ $sub->expires_at?->format('d.m.Y') }}
</div>
</div>
<span class="badge {{ $sub->status === 'active' ? 'bg-success' : ($sub->status === 'expired' ? 'bg-secondary' : 'bg-danger') }}">
{{ match($sub->status) { 'active'=>'Aktif', 'expired'=>'Sona Erdi', default=>'İptal' } }}
</span>
</div>
@empty
<div class="empty-state py-5">
<i class="bi bi-credit-card"></i>
<p>Abonelik geçmişi yok.</p>
</div>
@endforelse
</div>
</div>
{{-- Son Yorumlar --}}
<div class="card">
<div class="card-header">
<i class="bi bi-chat-dots" style="color:var(--info)"></i>
<h6>Son Yorumlar</h6>
</div>
<div class="card-body p-0">
@forelse($user->comments->take(10) as $comment)
<div class="px-4 py-3" style="border-bottom:1px solid var(--border)">
<div class="d-flex justify-content-between align-items-center gap-2 mb-1">
<span style="font-size:12px;color:var(--text2)">{{ $comment->created_at->format('d.m.Y H:i') }}</span>
<span class="badge {{ $comment->status === 'approved' ? 'bg-success' : ($comment->status === 'pending' ? 'bg-warning' : 'bg-secondary') }}"
style="{{ $comment->status==='pending'?'color:#000':'' }}">
{{ match($comment->status) { 'approved'=>'Onaylı', 'pending'=>'Bekliyor', default=>'Reddedildi' } }}
</span>
</div>
<div style="font-size:13px;color:var(--text);line-height:1.5">{{ Str::limit($comment->content, 120) }}</div>
</div>
@empty
<div class="empty-state py-5">
<i class="bi bi-chat-dots"></i>
<p>Henüz yorum yapılmamış.</p>
</div>
@endforelse
</div>
</div>
</div>
</div>
{{-- Ban Modal --}}
<div class="modal fade" id="banModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title" style="color:var(--warning)">
<i class="bi bi-slash-circle me-2"></i>Kullanıcıyı Banla
</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<form method="POST" action="{{ route('admin.users.ban', $user) }}">
@csrf
<div class="modal-body">
<div class="p-3 rounded mb-3" style="background:var(--warning-dim);border:1px solid rgba(245,158,11,.3)">
<div style="font-size:13px;font-weight:700;color:var(--warning)">
<i class="bi bi-exclamation-triangle-fill me-2"></i>Dikkat
</div>
<div style="font-size:12.5px;color:var(--text);margin-top:4px">
<strong>{{ $user->name }}</strong> adlı kullanıcının siteye erişimi engellenecek.
</div>
</div>
<label class="form-label">Ban Sebebi <span style="color:var(--text2)">(opsiyonel)</span></label>
<textarea name="ban_reason" class="form-control" rows="3"
placeholder="Neden banlıyorsunuz? Kullanıcıya gösterilmez."></textarea>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">İptal</button>
<button type="submit" class="btn btn-warning"><i class="bi bi-slash-circle"></i> Banla</button>
</div>
</form>
</div>
</div>
</div>
@endsection