Service/AvaloniaAppApplication/ClientAppointmentsWindow.axaml.cs
Guitaras_Fingerchpoker e5d1f72e7d first commit
2025-05-15 11:20:37 +03:00

62 lines
2.1 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
using AvaloniaAppApplication.DTO;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
namespace AvaloniaAppApplication;
public partial class ClientAppointmentsWindow : Window
{
private DispatcherTimer timer;
ObservableCollection<ClientServiceDTO> appointments;
public ClientAppointmentsWindow()
{
InitializeComponent();
DataContext= this;
LoadData();
StartTimer();
}
public void LoadData()
{
string todayDate = DateTime.Today.ToString("dd.MM.yy");
string tommorowDate = DateTime.Today.AddDays(1).ToString("dd.MM.yy");
var moscowTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
var appointmentList = Manager.context.Clientservices.AsNoTracking()
.Include(c => c.Client)
.Include(s => s.Service)
.Where(a => a.Starttime.Contains(todayDate) || a.Starttime.Contains(tommorowDate))
.Select(a => new ClientServiceDTO
{
Title = a.Service.Title,
ClientFIO = a.Client.Lastname + " " + a.Client.Firstname + " " + a.Client.Patronymic,
Email = a.Client.Email,
StartTime = a.Starttime,
Phone = a.Client.Phone,
RemainingTime = (int)((DateTime.ParseExact(a.Starttime, "dd.MM.yy H:mm", CultureInfo.InvariantCulture) -
TimeZoneInfo.ConvertTime(DateTime.Now, moscowTimeZone)).TotalSeconds / 60)
})
.ToList();
appointments = new ObservableCollection<ClientServiceDTO>(appointmentList);
ClientAppointmentLB.ItemsSource = appointments;
}
private void StartTimer()
{
timer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(30) // Set the interval to 30 seconds
};
timer.Tick += (sender, e) => LoadData(); // Reload data on tick
timer.Start(); // Start the timer
}
}