feat(jobs): add dedicated workspace page
Make /jobs/:id the canonical application workspace while preserving list state and compatibility links. Replace popup and expandable-row navigation with accessible whole-row routing and richer job details.
This commit is contained in:
@@ -28,6 +28,14 @@ public sealed record WorkspaceOverviewDto(
|
||||
DateTime? FollowUpAt,
|
||||
string? NextAction,
|
||||
string? JobUrl,
|
||||
DateTime SavedAt,
|
||||
string? Description,
|
||||
string? TranslatedDescription,
|
||||
string? DescriptionLanguage,
|
||||
IReadOnlyList<string> Tags,
|
||||
string? Notes,
|
||||
string? Source,
|
||||
string? CountryCode,
|
||||
bool HasJobDescription,
|
||||
WorkspaceCvDto Cv,
|
||||
bool HasCoverLetter,
|
||||
@@ -59,7 +67,9 @@ public sealed class ApplicationWorkspaceService : IApplicationWorkspaceService
|
||||
|
||||
public async Task<WorkspaceOverviewDto?> GetOverviewAsync(string ownerUserId, int jobApplicationId, CancellationToken ct)
|
||||
{
|
||||
var job = await _db.JobApplications.AsNoTracking().Include(j => j.Company)
|
||||
var job = await _db.JobApplications.AsNoTracking()
|
||||
.Include(j => j.Company)
|
||||
.Include(j => j.Job)
|
||||
.FirstOrDefaultAsync(j => j.Id == jobApplicationId && j.OwnerUserId == ownerUserId, ct);
|
||||
if (job is null) return null;
|
||||
|
||||
@@ -116,7 +126,15 @@ public sealed class ApplicationWorkspaceService : IApplicationWorkspaceService
|
||||
job.FollowUpAt,
|
||||
job.NextAction,
|
||||
job.JobUrl,
|
||||
!string.IsNullOrWhiteSpace(job.Description),
|
||||
job.SavedAt,
|
||||
job.Description,
|
||||
job.TranslatedDescription,
|
||||
job.DescriptionLanguage,
|
||||
JobApplicationHelpers.SplitTags(job.Tags).Distinct(StringComparer.OrdinalIgnoreCase).ToList(),
|
||||
job.Notes,
|
||||
job.Job?.Source,
|
||||
job.Job?.CountryCode,
|
||||
!string.IsNullOrWhiteSpace(job.Description) || !string.IsNullOrWhiteSpace(job.TranslatedDescription),
|
||||
cv,
|
||||
hasCoverLetter,
|
||||
documentCount,
|
||||
|
||||
Reference in New Issue
Block a user