using BPASmartClient.MorkTM;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace BPASmartClient.MilkWithTea.ViewModel
{
public class LocalConfigureViewModel : ObservableObject
{
#region 奶茶配方录入
///
/// 奶茶配方
///
public ObservableCollection materialRecipes { get => materialRecipes1; set => materialRecipes1 = value; }
///
/// 出料集合
///
public ObservableCollection MaterailList { get; set; } = new ObservableCollection();
///
/// 奶茶名称
///
public string LocalGoodName { get { return _localGoodName; } set { _localGoodName = value; OnPropertyChanged(); } }
private string _localGoodName;
private ObservableCollection materialRecipes1 = new ObservableCollection();
///
/// 添加一条配方
///
public RelayCommand AddRecipeCommand { get; set; }
///
/// 删除一条配方
///
public RelayCommand RemoveRecipeCommand { get; set; }
///
/// 取消配方
///
public RelayCommand RecipeCancelCommand { get; set; }
///
/// 保存配方
///
public RelayCommand SaveRecipeCommand { get; set; }
#endregion
#region 本地奶茶配方
///
/// 本地奶茶配方列表
///
public ObservableCollection localMaterialRecipes { get; set; } = GLobal.MaterialRecipes;
///
/// 删除配方奶茶
///
public RelayCommand DeleteRecipeCommand { get; set; }
#endregion
#region 物料位置名称
///
/// 物料位置名称集合
///
public ObservableCollection materailNameAndPosions { get; set; } = new ObservableCollection();
public List materail1 { get; set; } = new List();
public List materail2 { get; set; } = new List();
///
/// 更新物料位置
///
public RelayCommand UpdateMaterialPosionCommand { get; set; }
#endregion
public LocalConfigureViewModel()
{
materialRecipes.Add(new MaterialRecipe()
{
MaterialWeight = 10
});
AddRecipeCommand = new RelayCommand(new Action(() =>
{
materialRecipes.Add(new MaterialRecipe()
{
MaterialID = materialRecipes.Count() + 1
});
}));
RemoveRecipeCommand = new RelayCommand((o =>
{
if (o != null && o is int index)
{
materialRecipes.RemoveAt(index);
for (int i = 0; i < materialRecipes.Count; i++)//ID排序
{
materialRecipes[i].MaterialID = i + 1;
}
}
}));
RecipeCancelCommand = new RelayCommand(new Action(() =>
{
materialRecipes.Clear();
LocalGoodName = String.Empty;
}));
SaveRecipeCommand = new RelayCommand(new Action(() =>
{
if (LocalGoodName == "" || LocalGoodName == null) return;
if (materialRecipes.Count == 0) return;
localMaterialRecipes.Insert(0, new LocalTeaWithMilkConfig()
{
GoodNames = LocalGoodName,
materialRecipes = materialRecipes
});
UpdateLocalJosnData(GLobal.recipePath, localMaterialRecipes);//更新奶茶配方json文件
MessageBox.Show("保存成功");
}));
DeleteRecipeCommand = new RelayCommand((o =>
{
if (o != null && o is int index)
{
localMaterialRecipes.RemoveAt(index);
UpdateLocalJosnData(GLobal.recipePath, localMaterialRecipes);//更新奶茶配方json文件
}
}));
UpdateMaterialPosionCommand = new RelayCommand(new Action(() =>
{
materailNameAndPosions.Clear();
foreach(var item in materail1)
{
materailNameAndPosions.Add(item);
}
foreach (var item in materail2)
{
materailNameAndPosions.Add(item);
}
UpdateLocalJosnData(GLobal.posionPath, materailNameAndPosions);//更新物料位置名称
MaterailList.Clear();
foreach (MaterailNameAndPosion m in materailNameAndPosions)
{
if (m.MaterialName != null) MaterailList.Add(m.MaterialName);
}
}));
Init();
}
///
/// 界面初始化加载
///
private void Init()
{
materailNameAndPosions = GLobal.GetJsonToT(GLobal.posionPath);
if (materailNameAndPosions.Count == 0)
{
foreach (MaterialPosion item in Enum.GetValues(typeof(MaterialPosion)))
{
materailNameAndPosions.Add(new MaterailNameAndPosion()
{
MaterialPosion = item.ToString()
});
}
}
materail1 = materailNameAndPosions.Take(14).ToList();
materail2 = materailNameAndPosions.TakeLast(14).ToList();
foreach (MaterailNameAndPosion m in materailNameAndPosions)
{
if (m.MaterialName != null) MaterailList.Add(m.MaterialName);
}
}
///
/// 更新Json文件数据
///
///
///
///
private void UpdateLocalJosnData(string path, ObservableCollection ts)
{
if (ts != null) File.WriteAllText(path, JsonConvert.SerializeObject(ts));
}
}
}