@page "/thirdparty/patient-contact" @using Indotalent.Features.Thirdparty.PatientContact @using Indotalent.Features.Thirdparty.PatientContact.Cqrs @using Indotalent.Features.Thirdparty.PatientContact.Components @using MudBlazor @if (_currentView == ViewMode.Create) { <_PatientContactCreateForm OnCancel="BackToTable" OnSuccess="HandleSuccess" /> } else if (_currentView == ViewMode.Update || _currentView == ViewMode.View) { <_PatientContactUpdateForm Data="_selectedData!" ReadOnly="@(_currentView == ViewMode.View)" OnCancel="BackToTable" OnSuccess="HandleSuccess" /> } else { <_PatientContactDataTable OnAdd="() => ShowCreate()" OnEdit="(item) => ShowUpdate(item, false)" OnView="(item) => ShowUpdate(item, true)" /> } @code { private enum ViewMode { Table, Create, Update, View } private ViewMode _currentView = ViewMode.Table; private UpdatePatientContactRequest? _selectedData; private void ShowCreate() => _currentView = ViewMode.Create; private void ShowUpdate(UpdatePatientContactRequest data, bool isReadOnly) { _selectedData = data; _currentView = isReadOnly ? ViewMode.View : ViewMode.Update; } private void BackToTable() { _currentView = ViewMode.Table; _selectedData = null; } private void HandleSuccess() { _currentView = ViewMode.Table; _selectedData = null; } }