62 lines
2.1 KiB
C#
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
|
|
}
|
|
} |