253 lines
9.5 KiB
C#
253 lines
9.5 KiB
C#
using Avalonia;
|
||
using Avalonia.Controls;
|
||
using Avalonia.Input;
|
||
using Avalonia.Interactivity;
|
||
using Avalonia.Markup.Xaml;
|
||
using Avalonia.Media;
|
||
using AvaloniaApplication1.DataBase;
|
||
using DaireApplication.Views;
|
||
using System;
|
||
|
||
namespace DaireApplication;
|
||
|
||
public partial class RecipeEdit : UserControl
|
||
{
|
||
Button controllButton = new Button();
|
||
private MainWindow? _mainWindow;
|
||
private UserTable? _currentUser;
|
||
private RecipeTable? _recipeTable;
|
||
|
||
|
||
public RecipeEdit()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
public RecipeEdit(MainWindow mainWindow, UserTable currentUser,RecipeTable recipeTable)
|
||
{
|
||
_currentUser = currentUser;
|
||
_mainWindow = mainWindow;
|
||
_recipeTable=recipeTable;
|
||
InitializeComponent();
|
||
setDefaultSettings();
|
||
}
|
||
|
||
string oldNumber = "";
|
||
private void OnKeyClick(object? sender, RoutedEventArgs e)
|
||
{
|
||
if (sender is Button button)
|
||
{
|
||
|
||
var StackPanel = controllButton.Content as StackPanel;
|
||
var Label = StackPanel.Children;
|
||
if (Label[1] is TextBlock targetText)
|
||
{
|
||
//number += button.Content?.ToString();
|
||
targetText.Text += button.Content ;
|
||
}
|
||
// Append the button's content to the input box
|
||
//InputTextBox.Text += button.Content?.ToString();
|
||
}
|
||
|
||
}
|
||
private void OnBackClick(object? sender, RoutedEventArgs e)
|
||
{
|
||
var StackPanel = controllButton.Content as StackPanel;
|
||
var Label = StackPanel.Children;
|
||
if (Label[1] is TextBlock targetText)
|
||
{
|
||
if (!string.IsNullOrEmpty(targetText.Text))
|
||
{
|
||
// Remove the last character from the text box
|
||
targetText.Text = targetText.Text.Remove(targetText.Text.Length -1, 1);
|
||
//number = number.Remove(number.Length - 1);
|
||
}
|
||
}
|
||
|
||
}
|
||
private void EnterClick(object? sender, RoutedEventArgs e)
|
||
{
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
RecipeTable recipe = new RecipeTable
|
||
{
|
||
Id = _recipeTable.Id,
|
||
Name = _recipeTable.Name,
|
||
TankTemp = _recipeTable.TankTemp,
|
||
FountainTemp = _recipeTable.FountainTemp,
|
||
Mixer = _recipeTable.Mixer ?? false,
|
||
Fountain = _recipeTable.Fountain ?? false,
|
||
MoldHeater = _recipeTable.MoldHeater ?? false,
|
||
Vibration = _recipeTable.Vibration ?? false,
|
||
VibHeater = _recipeTable.VibHeater ?? false,
|
||
Pedal = _recipeTable.Pedal ?? false,
|
||
PedalOnTime = _recipeTable.PedalOnTime,
|
||
PedalOffTime = _recipeTable.PedalOffTime,
|
||
HeatingGoal = _recipeTable.HeatingGoal,
|
||
CoolingGoal = _recipeTable.CoolingGoal,
|
||
PouringGoal = _recipeTable.PouringGoal
|
||
};
|
||
|
||
var heatingStackPanel = heatingBtn.Content as StackPanel;
|
||
var heatingText = (heatingStackPanel?.Children[1] as TextBlock)?.Text;
|
||
|
||
var coolingStackPanel = coolingBtn.Content as StackPanel;
|
||
var coolingText = (coolingStackPanel?.Children[1] as TextBlock)?.Text;
|
||
|
||
var stackPanel = controllButton.Content as StackPanel;
|
||
var label = stackPanel?.Children;
|
||
var targetText = label?[1] as TextBlock;
|
||
var activeTxt = label?[0] as TextBlock;
|
||
|
||
if (activeTxt == null || targetText == null)
|
||
return;
|
||
|
||
switch (activeTxt.Text)
|
||
{
|
||
case "HEATING:":
|
||
if (!string.IsNullOrEmpty(targetText.Text) && int.TryParse(targetText.Text, out int heatingValue))
|
||
{
|
||
if (heatingValue > 60)
|
||
{
|
||
tempErrorMsg.Text = "Heating Temperature must be lower than 60 <20>C";
|
||
return;
|
||
}
|
||
else if (heatingValue < 40)
|
||
{
|
||
tempErrorMsg.Text = "Heating Temperature must be greater than 40 <20>C";
|
||
return;
|
||
}
|
||
|
||
recipe.HeatingGoal = heatingValue;
|
||
}
|
||
break;
|
||
|
||
case "POURING:":
|
||
if (!string.IsNullOrEmpty(targetText.Text) && int.TryParse(targetText.Text, out int pouringValue))
|
||
{
|
||
if (string.IsNullOrEmpty(heatingText) || string.IsNullOrEmpty(coolingText))
|
||
{
|
||
tempErrorMsg.Text = "Enter heating and cooling temperature first";
|
||
return;
|
||
}
|
||
|
||
if (!int.TryParse(heatingText, out int heatingTemp) || !int.TryParse(coolingText, out int coolingTemp))
|
||
{
|
||
tempErrorMsg.Text = "Invalid temperature values";
|
||
return;
|
||
}
|
||
|
||
if (pouringValue > heatingTemp)
|
||
{
|
||
tempErrorMsg.Text = $"Pouring Temperature must be lower than Heating Temperature ({heatingTemp}<7D>C)";
|
||
return;
|
||
}
|
||
else if (pouringValue < coolingTemp)
|
||
{
|
||
tempErrorMsg.Text = $"Pouring Temperature must be greater than Cooling Temperature ({coolingTemp}<7D>C)";
|
||
return;
|
||
}
|
||
|
||
recipe.PouringGoal = pouringValue;
|
||
}
|
||
break;
|
||
|
||
case "COOLING:":
|
||
if (!string.IsNullOrEmpty(targetText.Text) && int.TryParse(targetText.Text, out int coolingValue))
|
||
{
|
||
if (coolingValue > 40)
|
||
{
|
||
tempErrorMsg.Text = "Cooling Temperature must be lower than 40 <20>C";
|
||
return;
|
||
}
|
||
else if (coolingValue < 20)
|
||
{
|
||
tempErrorMsg.Text = "Cooling Temperature must be greater than 20 <20>C";
|
||
return;
|
||
}
|
||
|
||
recipe.CoolingGoal = coolingValue;
|
||
}
|
||
break;
|
||
}
|
||
|
||
_recipeTable.UpdateRecipe(recipe);
|
||
tempErrorMsg.Text = "";
|
||
heatingBtn.IsEnabled = true;
|
||
coolingBtn.IsEnabled = true;
|
||
pouringBtn.IsEnabled = true;
|
||
PopupOverlay.IsVisible = false;
|
||
setDefaultSettings();
|
||
}
|
||
|
||
|
||
private void showPopUp(object? sender, RoutedEventArgs e)
|
||
{
|
||
if (sender is Button button)
|
||
{
|
||
heatingBtn.IsEnabled = false;
|
||
coolingBtn.IsEnabled = false;
|
||
pouringBtn.IsEnabled = false;
|
||
button.IsEnabled = true;
|
||
var StackPanel = button.Content as StackPanel;
|
||
var Label = StackPanel.Children;
|
||
if (Label[1] is TextBlock targetText)
|
||
{
|
||
oldNumber = targetText.Text;
|
||
}
|
||
controllButton = button;
|
||
PopupOverlay.IsVisible = true;
|
||
}
|
||
|
||
}
|
||
private void OnPopupOverlayPointerPressed(object sender, PointerPressedEventArgs e)
|
||
{
|
||
// Close the popup when clicking outside of it
|
||
//controllButton.Foreground = Avalonia.Media.Brushes.Black;
|
||
var StackPanel = controllButton.Content as StackPanel;
|
||
var Label = StackPanel.Children;
|
||
if (Label[1] is TextBlock targetText)
|
||
{
|
||
//number += button.Content?.ToString();
|
||
targetText.Text = oldNumber;
|
||
}
|
||
tempErrorMsg.Text = "";
|
||
heatingBtn.IsEnabled = true;
|
||
coolingBtn.IsEnabled = true;
|
||
pouringBtn.IsEnabled = true;
|
||
|
||
PopupOverlay.IsVisible = false;
|
||
}
|
||
|
||
private void setDefaultSettings()
|
||
{
|
||
//set Values
|
||
_recipeTable = _recipeTable.ReadRecipesById(_recipeTable.Id.ToString());
|
||
heatingValue.Text = _recipeTable?.HeatingGoal == 0 ? "" : _recipeTable?.HeatingGoal.ToString();
|
||
coolingValue.Text = _recipeTable?.CoolingGoal == 0 ? "" : _recipeTable?.CoolingGoal.ToString();
|
||
pouringValue.Text = _recipeTable?.PouringGoal == 0 ? "" : _recipeTable?.PouringGoal.ToString();
|
||
|
||
//Set Track Up
|
||
_mainWindow.HomeTrack.IsVisible = true;
|
||
//_mainWindow.HomePolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||
_mainWindow.RecipePanelTrack.IsVisible = true;
|
||
_mainWindow.RecipePanelPolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||
_mainWindow.RecipeEditTrack.IsVisible = true;
|
||
_mainWindow.RecipeEditPolygon.Stroke = Brush.Parse("#A4275D");
|
||
_mainWindow.RunInterfaceTrack.IsVisible = false;
|
||
_mainWindow.RecipeSelTrack.IsVisible = false;
|
||
_mainWindow.SettingTrack.IsVisible = false;
|
||
_mainWindow.DiagnosticsTrack.IsVisible = false;
|
||
|
||
_mainWindow.TitleBtn.IsVisible = true;
|
||
_mainWindow.Title.Text = _recipeTable.Name;
|
||
|
||
//Set Footer
|
||
_mainWindow.footerMsg.Text = "Select the tempereture to edit it";
|
||
_mainWindow.footer.Background = Avalonia.Media.Brushes.WhiteSmoke;
|
||
_mainWindow.footerMsg.Foreground = Brush.Parse("#A4275D");
|
||
_mainWindow.footerDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
|
||
_mainWindow.footerTime.Text = DateTime.Now.ToString("hh:mm tt");
|
||
_mainWindow.footerDateContainer.IsVisible = true;
|
||
_mainWindow.footerStartBtn.IsVisible = false;
|
||
_mainWindow.adminBtns.IsVisible = false;
|
||
}
|
||
} |