Files
Tempering-Machine-Control-S…/DaireApplication/Views/UserController/RecipeEdit.axaml.cs

253 lines
9.5 KiB
C#
Raw Blame History

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