Files
Backend-Api/ServiceHost/Areas/AdminNew/Pages/BugReport/Details.cshtml

239 lines
12 KiB
Plaintext

@page "{id:long}"
@model ServiceHost.Areas.AdminNew.Pages.BugReport.DetailsModel
@{
ViewData["Title"] = "جزئیات گزارش خرابی";
}
@if (Model.BugReportDetails == null)
{
<div class="alert alert-danger">
گزارش خرابی یافت نشد
</div>
<a asp-page="./Index" class="btn btn-secondary">بازگشت</a>
}
else
{
<div class="container-fluid mt-4">
<a asp-page="./Index" class="btn btn-secondary mb-3">بازگشت</a>
<div class="row">
<!-- معلومات اصلی -->
<div class="col-md-8">
<div class="card mb-4">
<div class="card-header bg-primary text-white">
<h5 class="mb-0">@Model.BugReportDetails.Title</h5>
</div>
<div class="card-body">
<dl class="row">
<dt class="col-sm-3">کاربر:</dt>
<dd class="col-sm-9">@Model.BugReportDetails.UserEmail</dd>
<dt class="col-sm-3">نوع:</dt>
<dd class="col-sm-9">
<span class="badge bg-info">@Model.BugReportDetails.Type</span>
</dd>
<dt class="col-sm-3">اولویت:</dt>
<dd class="col-sm-9">
@switch (Model.BugReportDetails.Priority)
{
case CameraBugPriority.Critical:
<span class="badge bg-danger">بحرانی</span>
break;
case CameraBugPriority.High:
<span class="badge bg-warning">بالا</span>
break;
case CameraBugPriority.Medium:
<span class="badge bg-primary">متوسط</span>
break;
case CameraBugPriority.Low:
<span class="badge bg-success">پایین</span>
break;
}
</dd>
<dt class="col-sm-3">وضعیت:</dt>
<dd class="col-sm-9">
@switch (Model.BugReportDetails.Status)
{
case CameraBugReportStatus.Open:
<span class="badge bg-secondary">باز</span>
break;
case CameraBugReportStatus.InProgress:
<span class="badge bg-warning">در حال بررسی</span>
break;
case CameraBugReportStatus.Fixed:
<span class="badge bg-info">رفع شده</span>
break;
case CameraBugReportStatus.Closed:
<span class="badge bg-success">بسته شده</span>
break;
case CameraBugReportStatus.Reopened:
<span class="badge bg-danger">مجدداً باز</span>
break;
}
</dd>
<dt class="col-sm-3">تاریخ گزارش:</dt>
<dd class="col-sm-9">@Model.BugReportDetails.CreationDate.ToString("yyyy-MM-dd HH:mm:ss")</dd>
<dt class="col-sm-3">آخرین به‌روزرسانی:</dt>
<dd class="col-sm-9">@(Model.BugReportDetails.UpdateDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "-")</dd>
</dl>
</div>
</div>
<!-- توضیحات -->
<div class="card mb-4">
<div class="card-header bg-secondary text-white">
<h6 class="mb-0">توضیحات</h6>
</div>
<div class="card-body">
<p>@Html.Raw(Model.BugReportDetails.Description.Replace(Environment.NewLine, "<br>"))</p>
</div>
</div>
<!-- Stack Trace -->
@if (!string.IsNullOrEmpty(Model.BugReportDetails.StackTrace))
{
<div class="card mb-4">
<div class="card-header bg-danger text-white">
<h6 class="mb-0">Stack Trace</h6>
</div>
<div class="card-body">
<pre style="background-color: #f5f5f5; padding: 10px; border-radius: 4px; overflow-x: auto;">@Model.BugReportDetails.StackTrace</pre>
</div>
</div>
}
<!-- لاگ‌ها -->
@if (Model.BugReportDetails.Logs != null && Model.BugReportDetails.Logs.Count > 0)
{
<div class="card mb-4">
<div class="card-header bg-warning">
<h6 class="mb-0">لاگ‌ها (@Model.BugReportDetails.Logs.Count)</h6>
</div>
<div class="card-body">
<ul class="list-unstyled">
@foreach (var log in Model.BugReportDetails.Logs)
{
<li style="padding: 5px 0; border-bottom: 1px solid #eee;">
<small>@log</small>
</li>
}
</ul>
</div>
</div>
}
<!-- عکس‌ها -->
@if (Model.BugReportDetails.Screenshots != null && Model.BugReportDetails.Screenshots.Count > 0)
{
<div class="card mb-4">
<div class="card-header bg-info text-white">
<h6 class="mb-0">عکس‌های ضمیمه شده (@Model.BugReportDetails.Screenshots.Count)</h6>
</div>
<div class="card-body">
<div class="row">
@foreach (var screenshot in Model.BugReportDetails.Screenshots)
{
<div class="col-md-6 mb-3">
<div class="card">
<img src="data:image/jpeg;base64,@screenshot.Base64Data" class="card-img-top" style="max-height: 300px; object-fit: cover;">
<div class="card-footer">
<small class="text-muted">@screenshot.FileName</small><br>
<small class="text-muted">@screenshot.UploadDate.ToString("yyyy-MM-dd HH:mm")</small>
</div>
</div>
</div>
}
</div>
</div>
</div>
}
</div>
<!-- معلومات دستگاه -->
<div class="col-md-4">
<div class="card mb-4">
<div class="card-header bg-success text-white">
<h6 class="mb-0">معلومات دستگاه</h6>
</div>
<div class="card-body">
<dl class="row" style="font-size: 0.9rem;">
<dt class="col-6">مدل:</dt>
<dd class="col-6">@Model.BugReportDetails.DeviceModel</dd>
<dt class="col-6">سیستم‌عامل:</dt>
<dd class="col-6">@Model.BugReportDetails.OsVersion</dd>
<dt class="col-6">پلتفرم:</dt>
<dd class="col-6">@Model.BugReportDetails.Platform</dd>
<dt class="col-6">سازنده:</dt>
<dd class="col-6">@Model.BugReportDetails.Manufacturer</dd>
<dt class="col-6">شناسه دستگاه:</dt>
<dd class="col-6"><small>@Model.BugReportDetails.DeviceId</small></dd>
<dt class="col-6">وضوح صفحه:</dt>
<dd class="col-6">@Model.BugReportDetails.ScreenResolution</dd>
<dt class="col-6">حافظه:</dt>
<dd class="col-6">@Model.BugReportDetails.MemoryInMB MB</dd>
<dt class="col-6">ذخیره‌سازی:</dt>
<dd class="col-6">@Model.BugReportDetails.StorageInMB MB</dd>
<dt class="col-6">باتری:</dt>
<dd class="col-6">@Model.BugReportDetails.BatteryLevel %</dd>
<dt class="col-6">شارژ گیر:</dt>
<dd class="col-6">@(Model.BugReportDetails.IsCharging ? "بله" : "خیر")</dd>
<dt class="col-6">شبکه:</dt>
<dd class="col-6">@Model.BugReportDetails.NetworkType</dd>
</dl>
</div>
</div>
<!-- معلومات برنامه -->
<div class="card">
<div class="card-header bg-dark text-white">
<h6 class="mb-0">معلومات برنامه</h6>
</div>
<div class="card-body">
<dl class="row" style="font-size: 0.9rem;">
<dt class="col-6">نسخه:</dt>
<dd class="col-6">@Model.BugReportDetails.AppVersion</dd>
<dt class="col-6">بیلد:</dt>
<dd class="col-6">@Model.BugReportDetails.BuildNumber</dd>
<dt class="col-6">پکیج:</dt>
<dd class="col-6"><small>@Model.BugReportDetails.PackageName</small></dd>
<dt class="col-6">نسخه (Flavor):</dt>
<dd class="col-6">@Model.BugReportDetails.Flavor</dd>
<dt class="col-6">نصب:</dt>
<dd class="col-6"><small>@Model.BugReportDetails.InstallTime.ToString("yyyy-MM-dd")</small></dd>
<dt class="col-6">آپدیت:</dt>
<dd class="col-6"><small>@Model.BugReportDetails.LastUpdateTime.ToString("yyyy-MM-dd")</small></dd>
</dl>
</div>
</div>
<!-- عملیات -->
<div class="mt-3">
<a asp-page="./Edit" asp-route-id="@Model.BugReportDetails.Id" class="btn btn-warning w-100">ویرایش وضعیت و اولویت</a>
<a asp-page="./Delete" asp-route-id="@Model.BugReportDetails.Id" class="btn btn-danger w-100 mt-2" onclick="return confirm('آیا مطمئن هستید؟');">حذف</a>
</div>
</div>
</div>
</div>
}