@model WritingSchedulePreviewViewModel @{ ViewData["Title"] = "Schedule Preview"; var message = TempData["SchedulePreviewMessage"] as string; var error = TempData["SchedulePreviewError"] as string; }

Validation

Schedule Preview

Generated writing schedule items.

@if (!string.IsNullOrWhiteSpace(message)) {
@message
} @if (!string.IsNullOrWhiteSpace(error)) {
@error
} @if (!Model.Plans.Any()) {

No writing plans found.

} else {

Plan

Writing Plan Selection

@foreach (var plan in Model.Plans) { }
Plan Name Project Book Deadline Date Active
@plan.PlanName @plan.ProjectName @(plan.BookTitle ?? "All Books") @plan.DeadlineDate.ToString("dd MMM yyyy") @(plan.IsActive ? "Yes" : "No") @if (plan.WritingPlanID == Model.SelectedWritingPlanID) { Selected } else { Select }
@if (Model.SelectedPlan is not null) {

Summary

Schedule Summary

Total Tasks

@Model.TotalTasks

Draft Tasks

@Model.DraftTasks

Revision Tasks

@Model.RevisionTasks

Polish Tasks

@Model.PolishTasks

Total Estimated Minutes

@Model.TotalEstimatedMinutes

Projected Finish Date

@(Model.ProjectedFinishDate?.ToString("dd MMM yyyy") ?? "-")

Items

Schedule Preview Table

@Model.Items.Count items
@if (!Model.Items.Any()) {

No schedule generated.

} else {
@foreach (var item in Model.Items) { }
Scheduled Date Task Type Book Chapter Scene Priority Estimated Minutes Target Words Schedule Status Blocked
@item.ScheduledDate.ToString("dd MMM yyyy") @item.TaskType @item.BookTitle Chapter @item.ChapterNumber: @item.ChapterTitle Scene @item.SceneNumber: @item.SceneTitle @(item.Priority?.ToString() ?? "-") @(item.EstimatedMinutes?.ToString() ?? "-") @(item.TargetWords?.ToString() ?? "-") @item.ScheduleStatus @(item.IsBlocked ? "Yes" : "No")
}
} }