123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- using Comal.Classes;
- using InABox.Configuration;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Windows.Controls;
- using System.Windows.Media;
- namespace PRSDesktop
- {
- public class JobRequisitionPanelSettings : BaseObject, IGlobalConfigurationSettings
- {
- [Caption("Default Style for Company", IncludePath = false)]
- public ProductStyleLink ProductStyle { get; set; }
- public JobRequisitionPanelSettings()
- {
- ProductStyle = new ProductStyleLink();
- }
- }
- /// <summary>
- /// Interaction logic for JobRequisitionsPanel.xaml
- /// </summary>
- public partial class JobRequisitionsPanel : UserControl, IPanel<JobRequisitionItem>
- {
- Guid JobID = Guid.Empty;
- private JobRequisitionPanelSettings _settings = null;
- public JobRequisitionsPanel()
- {
- InitializeComponent();
- }
- enum PanelMode
- {
- Reserve,
- Purchase
- }
- private PanelMode mode;
- private PanelMode Mode
- {
- get => mode;
- set
- {
- mode = value;
- SetPanelDetail();
- }
- }
- private void SetPanelDetail()
- {
- if (Mode == PanelMode.Reserve)
- {
- reserveCol.Width = new System.Windows.GridLength(1, System.Windows.GridUnitType.Star);
- purchaseCol.Width = new System.Windows.GridLength(0);
- JobRequiItems.Options.Remove(DynamicGridOption.MultiSelect);
- reserveBtn.Background = new SolidColorBrush(Colors.LightGray);
- purchaseBtn.Background = new SolidColorBrush(Colors.WhiteSmoke);
- }
- else if (Mode == PanelMode.Purchase)
- {
- reserveCol.Width = new System.Windows.GridLength(0);
- purchaseCol.Width = new System.Windows.GridLength(1, System.Windows.GridUnitType.Star);
- JobRequiItems.Options.Add(DynamicGridOption.MultiSelect);
- reserveBtn.Background = new SolidColorBrush(Colors.WhiteSmoke);
- purchaseBtn.Background = new SolidColorBrush(Colors.LightGray);
- }
- }
- public bool IsReady { get; set; }
- public string SectionName => "Job Requisitions";
- public event DataModelUpdateEvent? OnUpdateDataModel;
- public void CreateToolbarButtons(IPanelHost host)
- {
- host.CreateSetupAction(new PanelAction() { Caption = "Product Configuration Settings", Image = PRSDesktop.Resources.specifications, OnExecute = ConfigSettingsClick });
- }
- private void ConfigSettingsClick(PanelAction obj)
- {
- var pages = new DynamicEditorPages();
- var buttons = new DynamicEditorButtons();
- buttons.Add(
- "",
- PRSDesktop.Resources.help.AsBitmapImage(),
- _settings,
- (f, i) =>
- {
- Process.Start(new ProcessStartInfo("https://prsdigital.com.au/wiki/index.php/" + typeof(Equipment).Name.SplitCamelCase().Replace(" ", "_"))
- { UseShellExecute = true });
- }
- );
- var propertyEditor = new DynamicEditorForm(typeof(JobRequisitionPanelSettings), pages, buttons);
- propertyEditor.OnDefineLookups += sender =>
- {
- var editor = sender.EditorDefinition as ILookupEditor;
- var colname = sender.ColumnName;
- var values = editor.Values(colname, new[] { _settings });
- sender.LoadLookups(values);
- };
- propertyEditor.OnEditorValueChanged += (sender, name, value) =>
- {
- CoreUtils.SetPropertyValue(_settings, name, value);
- return new Dictionary<string, object?>();
- };
- propertyEditor.Items = new BaseObject[] { _settings };
- if (propertyEditor.ShowDialog() == true)
- {
- new GlobalConfiguration<JobRequisitionPanelSettings>().Save(_settings);
- holdings.CompanyDefaultStyle = _settings.ProductStyle;
- }
- }
- public DataModel DataModel(Selection selection)
- {
- var ids = JobRequiItems.ExtractValues(x => x.ID, selection).ToArray();
- return new BaseDataModel<JobRequisitionItem>(new Filter<JobRequisitionItem>(x => x.ID).InList(ids));
- }
- public void Heartbeat(TimeSpan time)
- {
- }
- public void Refresh()
- {
- JobRequiItems.Refresh(false, true);
- }
- public Dictionary<string, object[]> Selected()
- {
- var result = new Dictionary<string, object[]>();
- result[typeof(JobRequisitionItem).EntityName()] = JobRequiItems.SelectedRows;
- return result;
- }
- public void Setup()
- {
- Mode = PanelMode.Reserve;
- SetupJobRequiItemGrids();
- _settings = new GlobalConfiguration<JobRequisitionPanelSettings>().Load();
- holdings.CompanyDefaultStyle = _settings.ProductStyle;
- holdings.OnHoldingsReviewRefresh += Holdings_OnHoldingsReviewRefresh;
- }
- private void Holdings_OnHoldingsReviewRefresh()
- {
- Refresh();
- RefreshJobRequiGrids();
- }
- private void RefreshJobRequiGrids()
- {
- JobRequiItems.bRefreshing = false;
- JobRequiItems.Refresh(false, true);
- }
- private void SetupJobRequiItemGrids()
- {
- JobRequiItems.OnGridRefresh += JobRequiItems_OnGridRefresh;
- JobRequiItems.OnJobRequiItemSelected += OnJobRequiItemSelected;
- JobRequiItems.Refresh(true, true);
- }
- private void OnJobRequiItemSelected(CoreRow[] rows)
- {
- holdings.Item = rows[0].ToObject<JobRequisitionItem>();
- purchasing.JobRequiItems = CreateList(rows);
- }
- private List<JobRequisitionItem> CreateList(CoreRow[] rows)
- {
- List<JobRequisitionItem> list = new List<JobRequisitionItem>();
- foreach (var row in rows)
- list.Add(row.ToObject<JobRequisitionItem>());
- return list;
- }
- private void JobRequiItems_OnGridRefresh()
- {
- RefreshJobRequiGrids();
- }
- public void Shutdown()
- {
- }
- private void ReserveStock_Clicked(object sender, System.Windows.RoutedEventArgs e)
- {
- Mode = PanelMode.Reserve;
- }
- private void PurchaseStock_Clicked(object sender, System.Windows.RoutedEventArgs e)
- {
- Mode = PanelMode.Purchase;
- }
- }
- }
|