Dashboard
Messages
Advanced Chatbot
Subscribers
Workshops
Video Resources
Tai Chi Videos
Coach Pei Corner
Johanna Corner
BFSAN Inquiries
Programs
12-Week Risk Reduction
Command Center
Participants
Consent Audit
Baseline Review
Goal Configuration
Weekly Scoring
Interventions
Coach Messages
Analytics
Daily Logs
Email Templates
30-Day Challenge
Nutritional Wellness
Tai Chi Program
Pickleball Program
8-Week Challenge
Soon
Educational Seminar
Soon
System
Cookie Consent Logs
Testimonials
Submissions
Users
System Settings
View Website
Edit Knowledge
Log In
Edit Knowledge Base Item
← Back to List
Title
Category
SubCategory
User Intent
Primary Question
Keywords (comma separated)
Content (Knowledge provided to AI)
@section Styles { .tab-nav { display: flex; border-bottom: 2px solid #eef0f3; gap: 20px; margin-bottom: 25px; } .tab-link { padding: 12px 6px; font-weight: 700; font-size: 14px; text-decoration: none; color: var(--text-muted); border-bottom: 3px solid transparent; cursor: pointer; transition: all 0.2s; } .tab-link:hover { color: var(--primary-green); } .tab-link.active { color: var(--primary-green); border-bottom-color: var(--primary-green); } .tab-content { display: none; } .tab-content.active { display: block; } .profile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; } .info-group { margin-bottom: 18px; border-bottom: 1px solid #f0f4f8; padding-bottom: 10px; } .info-label { font-size: 11px; font-weight: 800; text-transform: uppercase; color: var(--text-muted); letter-spacing: 0.5px; } .info-value { font-size: 14px; font-weight: 600; color: #1b1c18; margin-top: 4px; } .log-item { padding: 15px; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 12px; background: #fff; transition: all 0.2s; } .log-item:hover { border-color: var(--primary-green); } /* Message Bubble Styles */ .msg-thread { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 20px; max-height: 450px; overflow-y: auto; margin-bottom: 20px; display: flex; flex-direction: column; gap: 15px; } .msg-bubble { max-width: 70%; padding: 12px 16px; border-radius: 12px; line-height: 1.5; font-size: 13.5px; position: relative; } .msg-bubble.sent { background: var(--primary-green); color: #fff; align-self: flex-end; border-bottom-right-radius: 2px; } .msg-bubble.received { background: #fff; border: 1px solid #e2e8f0; color: #1a202c; align-self: flex-start; border-bottom-left-radius: 2px; } .msg-time { font-size: 10px; opacity: 0.8; margin-top: 5px; text-align: right; display: block; } /* Premium Spreadsheet Table Styles */ .premium-table { width: 100%; border-collapse: collapse; margin-top: 15px; font-size: 13.5px; background: #fff; border-radius: 8px; overflow: hidden; } .premium-table th { background-color: var(--primary-green); color: #ffffff; text-align: left; padding: 14px 18px; font-weight: 700; border-bottom: 2px solid rgba(0, 0, 0, 0.08); } .premium-table td { padding: 14px 18px; border-bottom: 1px solid #eef0f3; color: #4a5568; } .premium-table tr:hover { background-color: #f8fafc; } .premium-table tr:nth-child(even) { background-color: #fbf9f3; } } @if (TempData["SuccessMessage"] != null) { @TempData["SuccessMessage"] } @if (TempData["ErrorMessage"] != null) { @TempData["ErrorMessage"] } @(Model.Enrollment.User?.FirstName?.Substring(0,1).ToUpper() ?? "U") @Model.Enrollment.User?.FirstName @Model.Enrollment.User?.LastName @Model.Enrollment.User?.Email @(Model.Profile?.Phone ?? "No phone recorded") Program Status Active Completed Paused Cancelled Attention/Risk Level Low Risk Moderate Risk Needs Attention Active Day (1-56) Save @if (!string.IsNullOrEmpty(Model.Enrollment.CertificateFilePath)) { Certificate Issued View Certificate → } else if (Model.Enrollment.Status == "Completed" || Model.Enrollment.CurrentDay >= 50) { Upload Excellence Cert Upload } Onboarding Profile Daily Timeline Logs Reflections & Weights Dietitian Recommendations Client Messages @if (Model.Profile == null) { Client Profile Pending Completion The participant has not completed their onboarding wellness profile inside the client portal yet. } else { Demographics & Size Profile Full Name @Model.Profile.FullName Age / Gender @Model.Profile.Age yrs / @Model.Profile.Gender Location / Timezone @Model.Profile.Location Body Measurements Height: @Model.Profile.Height in | Starting Weight: @Model.Profile.StartingWeight lbs | Current Weight: @Model.Profile.CurrentWeight lbs | Target Weight: @Model.Profile.TargetWeight lbs Medical Baseline Parameters Blood Pressure Status @Model.Profile.BloodPressureStatus @if (Model.Profile.Systolic.HasValue && Model.Profile.Diastolic.HasValue) { (@Model.Profile.Systolic/@Model.Profile.Diastolic mmHg) } Diabetes Status & HbA1c @Model.Profile.DiabetesStatus @if (Model.Profile.HbA1c.HasValue) { (HbA1c: @Model.Profile.HbA1c%) } Cholesterol Status @Model.Profile.CholesterolStatus Existing Health Conditions @(string.IsNullOrEmpty(Model.Profile.HealthConditions) ? "None reported" : Model.Profile.HealthConditions) Allergies, Medications & Restrictions Allergies @(string.IsNullOrEmpty(Model.Profile.Allergies) ? "None reported" : Model.Profile.Allergies) Active Medications @(string.IsNullOrEmpty(Model.Profile.Medications) ? "None" : Model.Profile.Medications) Dietary Restrictions & Recommendations @(string.IsNullOrEmpty(Model.Profile.DietaryRestrictions) ? "None" : Model.Profile.DietaryRestrictions) @if (!string.IsNullOrEmpty(Model.Profile.DoctorRecommendedDiet)) { Doctor Recommended Diet: @Model.Profile.DoctorRecommendedDiet } Typical Dietary Patterns Typical Breakfast @Model.Profile.TypicalBreakfast Typical Lunch @Model.Profile.TypicalLunch Typical Dinner @Model.Profile.TypicalDinner Typical Snacks @Model.Profile.TypicalSnacks Wellness Goal: @Model.Profile.WellnessGoal LOGGED HISTORY (@(Model.Enrollment.DailyLogs?.Count ?? 0) days recorded) View Detailed Logs @if ((Model.Enrollment.DailyLogs == null || !Model.Enrollment.DailyLogs.Any()) && Model.Enrollment.CurrentDay == 0) { No daily logs logged yet Wait for the participant to fill daily wellness cards in the Client Portal. } else { @for (int day = Model.Enrollment.CurrentDay; day >= 1; day--) { var dayDate = Model.Enrollment.StartDate.AddDays(day - 1); var log = Model.Enrollment.DailyLogs?.FirstOrDefault(l => l.LogDate.Date == dayDate.Date); if (log != null) { Day @day – @dayDate.ToString("MMMM dd, yyyy") (@dayDate.DayOfWeek) ✓ Logged @log.WaterIntake cups @log.VegetablesServings veggie servings Energy: @log.EnergyLevel/5 Mood: @log.MoodLevel/5 @if (!string.IsNullOrEmpty(log.Breakfast)) { Breakfast: @log.Breakfast } @if (!string.IsNullOrEmpty(log.Lunch)) { Lunch: @log.Lunch } @if (!string.IsNullOrEmpty(log.Dinner)) { Dinner: @log.Dinner } @if (!string.IsNullOrEmpty(log.Snacks)) { Snacks: @log.Snacks } @if (log.ExerciseDone) { Exercise: @log.ExerciseType (@log.ExerciseMinutes mins) } else { Exercise: None recorded } Sleep: @log.SleepHours hrs @if (!string.IsNullOrEmpty(log.Symptoms)) { Symptoms: @log.Symptoms } @if (!string.IsNullOrEmpty(log.Notes)) { Notes: @log.Notes } } else { Day @day – @dayDate.ToString("MMMM dd, yyyy") (@dayDate.DayOfWeek) ⚠️ Missing Log No entry recorded for this day } } } Weekly Progress & Reflections @if (Model.Enrollment.WeeklyCheckIns == null || !Model.Enrollment.WeeklyCheckIns.Any()) { No weekly reflections submitted yet Weights and Reflections are due every 7 calendar days from program enrollment. } else { Week Date Submitted Weight Logged Waist Size Blood Pressure Weekly Reflections @foreach (var check in Model.Enrollment.WeeklyCheckIns ?? new List ()) { WEEK @check.WeekNumber @check.CreatedAt.ToString("MMM dd, yyyy") @check.CurrentWeight lbs @(check.WaistMeasurement.HasValue ? $"{check.WaistMeasurement} in" : "No entry") @if (check.Systolic.HasValue && check.Diastolic.HasValue) { @check.Systolic/@check.Diastolic mmHg } else { -- } @if (!string.IsNullOrEmpty(check.Reflection)) { Reflection: @check.Reflection } @if (!string.IsNullOrEmpty(check.Challenge)) { Challenge: @check.Challenge } @if (!string.IsNullOrEmpty(check.Improvement)) { Improvement: @check.Improvement } } } Send Dietitian Recommendation Category General Wellness Meal Prep & Foods Hydration & Cups Exercise & Mobility Sodium & BP Refined Sugar & Insulin Fiber & Gut Weight Management Focus Priority Low Medium High Recommendation Summary Title Detailed Instructions Send & Notify Participant Previous Recommendations @if (!Model.Enrollment.Recommendations.Any()) { No recommendations sent yet. } else { @foreach (var rec in Model.Enrollment.Recommendations) { @rec.Category @rec.Priority Priority @rec.Title @rec.Message Sent on: @rec.CreatedAt.ToString("MMM dd, yyyy h:mm tt") | Status: @rec.Status } } Conversation History @if (!Model.Messages.Any()) { No messages exchanged yet. } else { @foreach (var msg in Model.Messages) { var isAdminSender = msg.SenderId != Model.Enrollment.UserId; @if (!isAdminSender) { @Model.Enrollment.User?.FirstName (Participant) } @msg.Subject @msg.Message @msg.CreatedAt.ToString("MMM dd, h:mm tt") } } Send Message Dietitian Chat Policy Direct messaging allows the assigned nutritionist ( Johanna Gaston, PhD(C), MS, RD ) to answer quick client questions regarding portion size, meal timing, and hydration conversions. All portal communications are recorded and monitored for wellness coaching compliance. Remind participants to contact their doctor for medical concerns. @section Scripts { function showTab(tabId) { // Hide all tab contents document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active')); // Deactivate all tab links document.querySelectorAll('.tab-link').forEach(l => l.classList.remove('active')); // Show selected tab content document.getElementById('tab-content-' + tabId).classList.add('active'); // Activate selected tab link document.getElementById('tab-link-' + tabId).classList.add('active'); // Scroll messages thread to bottom if showing messaging tab if (tabId === 'messaging') { var thread = document.getElementById('adminChatThread'); if (thread) { thread.scrollTop = thread.scrollHeight; } } } document.addEventListener("DOMContentLoaded", function () { var thread = document.getElementById('adminChatThread'); if (thread) thread.scrollTop = thread.scrollHeight; var form = document.getElementById('adminChatForm'); if (form) { form.addEventListener('submit', function (e) { e.preventDefault(); var btn = document.getElementById('btnSendAdminChat'); var spinner = document.getElementById('btnAdminSpinner'); var btnText = document.getElementById('btnAdminText'); var subjectInput = document.getElementById('adminMsgSubject'); var bodyInput = document.getElementById('adminMsgBody'); var threadContainer = document.getElementById('adminChatThread'); if (!bodyInput.value.trim()) return; btn.disabled = true; spinner.style.display = 'inline-block'; btnText.style.display = 'none'; var formData = new FormData(form); fetch(form.action || window.location.href, { method: 'POST', body: formData, headers: { 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value } }) .then(response => response.json()) .then(data => { btn.disabled = false; spinner.style.display = 'none'; btnText.style.display = 'inline'; if (data.success) { var noMsg = threadContainer.querySelector('div[style*="text-align:center"]'); if (noMsg) { threadContainer.innerHTML = ''; } var bubble = document.createElement('div'); bubble.className = 'msg-bubble sent'; bubble.innerHTML = ' ' + escapeHtml(subjectInput.value) + ' ' + ' ' + escapeHtml(data.message) + ' ' + ' ' + escapeHtml(data.createdAt) + ' '; threadContainer.appendChild(bubble); bodyInput.value = ''; threadContainer.scrollTop = threadContainer.scrollHeight; } else { alert(data.error || 'Failed to send message.'); } }) .catch(err => { btn.disabled = false; spinner.style.display = 'none'; btnText.style.display = 'inline'; console.error(err); alert('An error occurred while sending the message.'); }); }); } }); function escapeHtml(text) { return text .replace(/&/g, "&") .replace(/ /g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } }
Page Title
Page URL
Related Questions (JSON Array of strings)
Recommended Actions (JSON Array of objects)
[]
Active
Save Changes
Cancel