feat: agregar SyncService y mejorar gestión de asistencia con nuevas funcionalidades

This commit is contained in:
Nurfog committed 2026-08-20 10:45:53 -04:00
1 parent fb275508ee
commit d953afd3b4
15 files changed
+339 -359

No files matched your search

+35 -52
View File
@@ -1,7 +1,6 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:Asistencia.ViewModels"
xmlns:models="using:Asistencia.Models"
x:Class="Asistencia.Views.DashboardView"
x:DataType="vm:DashboardViewModel">
@@ -10,18 +9,19 @@
</Design.DataContext>
<ScrollViewer>
<StackPanel Spacing="0" Margin="32,24">
<StackPanel Spacing="0" Margin="32,24" MaxWidth="500">
<TextBlock Text="Panel Principal" Classes="page-header" />
<Border Classes="card" Margin="0,0,0,24">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="Bienvenido"
FontSize="14" Foreground="{DynamicResource TextSecondary}" />
<TextBlock Text="{Binding NombreProfesor}"
FontSize="24" FontWeight="Bold"
FontSize="22" FontWeight="Bold"
Foreground="{DynamicResource TextPrimary}" />
<TextBlock Text="{Binding TipoAsignacion}"
FontSize="13"
Foreground="{DynamicResource TextSecondary}" />
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8">
@@ -35,55 +35,38 @@
</Grid>
</Border>
<TextBlock Text="Mis Cursos" Classes="section-title" Margin="0,0,0,12" />
<Button Content="Tomar Asistencia"
Classes="primary"
Command="{Binding AbrirAsistenciaCommand}"
HorizontalAlignment="Stretch"
Height="50"
FontSize="16" FontWeight="SemiBold"
Margin="0,0,0,16" />
<ItemsControl ItemsSource="{Binding Cursos}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="models:CursoAbierto">
<Border Classes="card" Margin="0,0,0,12">
<Grid ColumnDefinitions="*,Auto" RowDefinitions="Auto,Auto,Auto">
<TextBlock Grid.Row="0" Grid.Column="0"
Text="{Binding Curso.NombreCurso}"
FontSize="18" FontWeight="Bold"
Foreground="{DynamicResource TextPrimary}" />
<TextBlock Grid.Row="0" Grid.Column="1"
Text="{Binding Sala}"
FontSize="13"
Foreground="{DynamicResource TextSecondary}" />
<TextBlock Grid.Row="1" Grid.Column="0"
FontSize="13"
Foreground="{DynamicResource TextSecondary}"
Margin="0,4,0,0">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} | {1}">
<Binding Path="Sede" />
<Binding Path="HoraInicio" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<Button Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"
Content="Tomar Asistencia"
Classes="primary"
HorizontalAlignment="Left"
Margin="0,12,0,0"
Command="{Binding $parent[ItemsControl].((vm:DashboardViewModel)DataContext).AbrirAsistenciaCommand}"
CommandParameter="{Binding}" />
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Border Classes="card" Margin="0,24,0,0"
IsVisible="{Binding !Cursos.Count}"
Background="#FFF3CD">
<TextBlock Text="No tiene cursos asignados actualmente."
FontSize="14" Foreground="#856404" />
<Border Classes="card" Margin="0,0,0,16">
<StackPanel Spacing="12">
<Grid ColumnDefinitions="*,Auto">
<TextBlock Grid.Column="0"
FontSize="14" FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimary}">
<TextBlock.Text>
<MultiBinding StringFormat="Pendientes: {0}">
<Binding Path="Pendientes" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<Button Grid.Column="1"
Content="Sincronizar"
Classes="success"
Command="{Binding SincronizarCommand}" />
</Grid>
<TextBlock Text="{Binding MensajeSync}"
FontSize="12"
Foreground="{DynamicResource SuccessColor}"
IsVisible="{Binding HasMensajeSync}" />
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
</UserControl>