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;
|
||
}
|
||
|
||
|
||
}
|
||
} |