146 lines
4.8 KiB
C#
146 lines
4.8 KiB
C#
![]() |
using Avalonia;
|
|||
|
using Avalonia.Controls;
|
|||
|
using Avalonia.Markup.Xaml;
|
|||
|
using Avalonia.Media;
|
|||
|
using AvaloniaAppApplication.Context;
|
|||
|
using AvaloniaAppApplication.DTO;
|
|||
|
using AvaloniaAppApplication.Models;
|
|||
|
using Microsoft.EntityFrameworkCore;
|
|||
|
using MsBox.Avalonia;
|
|||
|
using System;
|
|||
|
using System.Drawing;
|
|||
|
using System.Globalization;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
namespace AvaloniaAppApplication;
|
|||
|
|
|||
|
public partial class ClientServiceWindow : Window
|
|||
|
{
|
|||
|
string time = "";
|
|||
|
string date = "";
|
|||
|
ServiceDTO currentService;
|
|||
|
User19Context dbContext = new User19Context();
|
|||
|
public ClientServiceWindow(ServiceDTO service)
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
currentService = service;
|
|||
|
DataContext = currentService;
|
|||
|
ComboClients.ItemsSource = dbContext.Clients.Select(c => c.Firstname + " " + c.Lastname + " " + c.Patronymic);
|
|||
|
}
|
|||
|
|
|||
|
private void TextBox_TextChanged(object? sender, Avalonia.Controls.TextChangedEventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
DateTime parsedStartTime;
|
|||
|
string characters = "0123456789.:";
|
|||
|
string processedText = ServiceStartTimeTX.Text ?? string.Empty;
|
|||
|
|
|||
|
string[] timeFormats = {
|
|||
|
"HH.mm",
|
|||
|
"H.mm",
|
|||
|
"HH:mm",
|
|||
|
"H:mm"
|
|||
|
};
|
|||
|
|
|||
|
if (DateTime.TryParseExact(processedText, timeFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedStartTime))
|
|||
|
{
|
|||
|
ServiceStartTimeBorder.BorderBrush = new SolidColorBrush(Colors.Green);
|
|||
|
time = parsedStartTime.ToString("HH:mm");
|
|||
|
ManageEndDateTime();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ServiceStartTimeBorder.BorderBrush = new SolidColorBrush(Colors.Red);
|
|||
|
}
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
string startDateTimeString;
|
|||
|
public void ManageEndDateTime()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (!string.IsNullOrEmpty(date) && !string.IsNullOrEmpty(time) && int.TryParse(DurationInMinutesTN.Text, out int minutes))
|
|||
|
{
|
|||
|
startDateTimeString = date + " " + time;
|
|||
|
string[] formats = { "dd.MM.yy HH:mm", "d.M.yyyy H:mm" };
|
|||
|
if (DateTime.TryParseExact(startDateTimeString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime startDateTime))
|
|||
|
{
|
|||
|
DateTime endDateTime = startDateTime.AddMinutes(minutes);
|
|||
|
string endDateTimeString = endDateTime.ToString("dd.MM.yyyy HH.mm", CultureInfo.InvariantCulture); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CultureInfo
|
|||
|
ServiceEndTimeTB.Text = endDateTimeString;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ServiceEndTimeTB.Text = string.Empty; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void Calendar_SelectedDatesChanged(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
|
|||
|
{
|
|||
|
var selectedDate = (DateTime)((Avalonia.Controls.Calendar)sender).SelectedDate;
|
|||
|
date = selectedDate.ToString("dd.MM.yy");
|
|||
|
ManageEndDateTime();
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
private async void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
StringBuilder errors = new StringBuilder();
|
|||
|
IBrush red = new SolidColorBrush(Colors.Red);
|
|||
|
bool isBorderBrushRed = ServiceStartTimeBorder.BorderBrush is SolidColorBrush solidBrush
|
|||
|
&& solidBrush.Color == Colors.Red;
|
|||
|
if (ComboClients.SelectedIndex == -1)
|
|||
|
errors.AppendLine("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
|||
|
if (isBorderBrushRed
|
|||
|
|| ServiceStartTimeTX.Text == null
|
|||
|
|| CalendarControl.SelectedDate == null)
|
|||
|
errors.AppendLine("<22><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
|||
|
|
|||
|
if (errors != null && errors.Length > 0)
|
|||
|
{
|
|||
|
var msBox = MessageBoxManager.GetMessageBoxStandard("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!", errors.ToString());
|
|||
|
var rs = msBox.ShowWindowDialogAsync(this);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
Clientservice newClientService = new Clientservice()
|
|||
|
{
|
|||
|
Clientid = ComboClients.SelectedIndex + 1,
|
|||
|
Starttime = startDateTimeString,
|
|||
|
Serviceid = currentService.Id
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
dbContext.Clientservices.Add(newClientService);
|
|||
|
dbContext.SaveChanges();
|
|||
|
|
|||
|
var msbox = MessageBoxManager.GetMessageBoxStandard("OK!", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
|||
|
var res = await msbox.ShowWindowDialogAsync(this);
|
|||
|
Close();
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|