LSFE/LSFE.MobApp/Pages/CoveragePlan/ActualCoveragePage.xaml
2026-07-30 10:31:04 +08:00

307 lines
14 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LSFE.MobApp.Pages.CoveragePlan.ActualCoveragePage"
xmlns:Local="clr-namespace:LSFE.MobApp.Converters"
xmlns:vm="clr-namespace:LSFE.MobApp.ViewModels.Coverage"
x:DataType="vm:ActualCoverageVM"
Title="Actual Coverage">
<ContentPage.Resources>
<ResourceDictionary>
<!-- Status Color Converter -->
<Style x:Key="StatusBadgeStyle" TargetType="Border">
<Setter Property="Padding" Value="12,6" />
<Setter Property="StrokeShape" Value="RoundRectangle 12" />
<Setter Property="StrokeThickness" Value="0" />
</Style>
<Style x:Key="CardStyle" TargetType="Border">
<Setter Property="BackgroundColor" Value="White" />
<Setter Property="Stroke" Value="#E5E7EB" />
<Setter Property="StrokeThickness" Value="1" />
<Setter Property="StrokeShape" Value="RoundRectangle 12" />
<Setter Property="Padding" Value="20" />
<Setter Property="Margin" Value="0,0,0,16" />
</Style>
<Style x:Key="PrimaryButtonStyle" TargetType="Button">
<Setter Property="BackgroundColor" Value="#0EA5E9" />
<Setter Property="TextColor" Value="White" />
<Setter Property="CornerRadius" Value="8" />
<Setter Property="Padding" Value="16,12" />
<Setter Property="FontAttributes" Value="Bold" />
</Style>
<Style x:Key="SecondaryButtonStyle" TargetType="Button">
<Setter Property="BackgroundColor" Value="White" />
<Setter Property="TextColor" Value="#4B5563" />
<Setter Property="BorderColor" Value="#D1D5DB" />
<Setter Property="BorderWidth" Value="1" />
<Setter Property="CornerRadius" Value="8" />
<Setter Property="Padding" Value="16,12" />
</Style>
<Style x:Key="CallButtonStyle" TargetType="Button">
<Setter Property="BackgroundColor" Value="Orange" />
<Setter Property="TextColor" Value="White" />
<Setter Property="CornerRadius" Value="12" />
<Setter Property="Padding" Value="0,16" />
<Setter Property="FontSize" Value="16" />
<Setter Property="FontAttributes" Value="Bold" />
</Style>
<Style x:Key="CommonButtonStyle" TargetType="Button">
<Setter Property="CornerRadius" Value="12" />
<Setter Property="Padding" Value="0,16" />
<Setter Property="FontSize" Value="16" />
<Setter Property="FontAttributes" Value="Bold" />
<Setter Property="HeightRequest" Value="60" />
</Style>
<Style x:Key="DeleteButtonStyle" TargetType="Button">
<Setter Property="BackgroundColor" Value="#EF4444" />
<Setter Property="TextColor" Value="White" />
<Setter Property="CornerRadius" Value="8" />
<Setter Property="Padding" Value="16,12" />
</Style>
<Style x:Key="TransparentButtonStyle" TargetType="Button">
<Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="TextColor" Value="White" />
<Setter Property="CornerRadius" Value="8" />
<Setter Property="Padding" Value="5,5" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<Grid>
<!-- Fullscreen Loading Overlay -->
<Grid
BackgroundColor="#80000000"
IsVisible="{Binding IsLoading}"
ZIndex="999"
RowDefinitions="*"
ColumnDefinitions="*"
HorizontalOptions="Fill"
VerticalOptions="Fill">
<Border
StrokeShape="RoundRectangle 16"
BackgroundColor="White"
Padding="32"
WidthRequest="200"
HeightRequest="150"
HorizontalOptions="Center"
VerticalOptions="Center">
<VerticalStackLayout Spacing="16"
HorizontalOptions="Center"
VerticalOptions="Center">
<ActivityIndicator
IsRunning="True"
Color="#0EA5E9"
WidthRequest="40"
HeightRequest="40" />
<Label
Text="Processing..."
TextColor="#0EA5E9"
FontAttributes="Bold"
FontSize="16"
HorizontalOptions="Center" />
</VerticalStackLayout>
</Border>
</Grid>
<ScrollView>
<VerticalStackLayout Padding="20" Spacing="20">
<!-- Header Card with Avatar -->
<Border BackgroundColor="White"
Stroke="#E5E7EB"
StrokeThickness="1"
StrokeShape="RoundRectangle 16"
Padding="24">
<Grid RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,*,Auto,*">
<!-- Large Avatar -->
<Border Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
BackgroundColor="#E0F2FE"
WidthRequest="80"
HeightRequest="80"
StrokeShape="RoundRectangle 40"
StrokeThickness="0"
VerticalOptions="Center"
Margin="0,0,20,0">
<Label Text="👨‍⚕️"
FontSize="48"
HorizontalOptions="Center"
VerticalOptions="Center"/>
</Border>
<!-- Name and Specialization -->
<VerticalStackLayout Grid.Row="0"
Grid.Column="1"
Spacing="6"
VerticalOptions="Center">
<Label Text="{Binding FullName}"
FontSize="24"
FontAttributes="Bold"
TextColor="#111827"/>
<Label Text="{Binding Specialization}"
FontSize="16"
TextColor="#6B7280"/>
</VerticalStackLayout>
<!-- Status Badge -->
<Border Grid.Row="0"
Grid.Column="2"
BackgroundColor="{Binding StatusBackgroundColor}"
Padding="16,8"
StrokeShape="RoundRectangle 12"
StrokeThickness="0"
VerticalOptions="Start">
<Label Text="{Binding StatusText}"
TextColor="{Binding StatusTextColor}"
FontSize="13"
FontAttributes="Bold"/>
</Border>
</Grid>
</Border>
<!-- Professional Details -->
<Border BackgroundColor="White"
Stroke="#E5E7EB"
StrokeThickness="1"
StrokeShape="RoundRectangle 12"
Padding="20">
<VerticalStackLayout Spacing="20">
<Label Text="Professional Details"
FontSize="18"
FontAttributes="Bold"
TextColor="#111827"/>
<!-- License Number -->
<Grid ColumnDefinitions="Auto,*" ColumnSpacing="12">
<Border Grid.Column="0"
BackgroundColor="#DBEAFE"
WidthRequest="44"
HeightRequest="44"
StrokeShape="RoundRectangle 22"
StrokeThickness="0">
<Label Text="🆔"
FontSize="22"
HorizontalOptions="Center"
VerticalOptions="Center"/>
</Border>
<VerticalStackLayout Grid.Column="1" Spacing="4" VerticalOptions="Center">
<Label Text="License Number"
FontSize="12"
TextColor="#6B7280"/>
<Label Text="{Binding LicenseNo}"
FontSize="15"
TextColor="#111827"
FontAttributes="Bold"/>
</VerticalStackLayout>
</Grid>
<!-- Institution -->
<Grid ColumnDefinitions="Auto,*" ColumnSpacing="12" IsVisible="{Binding HasInstitution}">
<Border Grid.Column="0"
BackgroundColor="#FCE7F3"
WidthRequest="44"
HeightRequest="44"
StrokeShape="RoundRectangle 22"
StrokeThickness="0">
<Label Text="🏥"
FontSize="22"
HorizontalOptions="Center"
VerticalOptions="Center"/>
</Border>
<VerticalStackLayout Grid.Column="1" Spacing="4" VerticalOptions="Center">
<Label Text="Institution"
FontSize="12"
TextColor="#6B7280"/>
<Label Text="{Binding InstitutionName}"
FontSize="15"
TextColor="#111827"
FontAttributes="Bold"/>
</VerticalStackLayout>
</Grid>
<!-- Max Visits -->
<Grid ColumnDefinitions="Auto,*" ColumnSpacing="12">
<Border Grid.Column="0"
BackgroundColor="#E0E7FF"
WidthRequest="44"
HeightRequest="44"
StrokeShape="RoundRectangle 22"
StrokeThickness="0">
<Label Text="📅"
FontSize="22"
HorizontalOptions="Center"
VerticalOptions="Center"/>
</Border>
<VerticalStackLayout Grid.Column="1" Spacing="4" VerticalOptions="Center">
<Label Text="Maximum Visits Per Month"
FontSize="12"
TextColor="#6B7280"/>
<Label Text="{Binding MaxVisit}"
FontSize="15"
TextColor="#111827"
FontAttributes="Bold"/>
</VerticalStackLayout>
</Grid>
<!-- Birth Date -->
<Grid ColumnDefinitions="Auto,*" ColumnSpacing="12">
<Border Grid.Column="0"
BackgroundColor="#FEE2E2"
WidthRequest="44"
HeightRequest="44"
StrokeShape="RoundRectangle 22"
StrokeThickness="0">
<Label Text="🎂"
FontSize="22"
HorizontalOptions="Center"
VerticalOptions="Center"/>
</Border>
<VerticalStackLayout Grid.Column="1" Spacing="4" VerticalOptions="Center">
<Label Text="Birth Date"
FontSize="12"
TextColor="#6B7280"/>
<Label Text="{Binding BirthDateFormatted}"
FontSize="15"
TextColor="#111827"
FontAttributes="Bold"/>
</VerticalStackLayout>
</Grid>
</VerticalStackLayout>
</Border>
<!-- Action Button -->
<Grid Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
ColumnDefinitions="*,*"
ColumnSpacing="10"
Margin="0,10,0,0">
<Button Text="❌ Close"
Style="{StaticResource CommonButtonStyle}"
BackgroundColor="#0EA5E9"
TextColor="White"
Command="{Binding CloseCommand}" />
<Button
Grid.Column="1"
Text="▶️ Start Coverage"
BackgroundColor="Green"
TextColor="White"
Style="{StaticResource CommonButtonStyle}"
Command="{Binding StartCoverageCommand}"
IsEnabled="True" />
</Grid>
</VerticalStackLayout>
</ScrollView>
</Grid>
</ContentPage>