123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Windows;
- using Comal.Classes;
- using InABox.DynamicGrid;
- using InABox.Integration.Awg;
- using InABox.Integration.Logikal;
- using InABox.Wpf;
- using PRSDesktop.Integrations.Common;
- using PRSDesktop.Integrations.Logikal;
- namespace PRSDesktop;
- public enum LogikalElevationSelectionType
- {
- BOM,
- Elevation,
- }
- public partial class LogikalElevationSelection : Window
- {
- private void UpdateStatus(LogikalResponse response)
- {
- Status.Content = response.ToString();
- }
-
- private readonly Job? _job;
- private LogikalProject _project = new LogikalProject();
- private LogikalElevationSelectionType _type;
- private Func<LogikalProject, ILogikalBOM<LogikalProductGroup, LogikalFinish, LogikalProfile, LogikalGasket, LogikalComponent,LogikalGlass,LogikalLabour>[],bool> _callback;
- public LogikalElevationSelection(Job? job, LogikalElevationSelectionType type, Func<LogikalProject, ILogikalBOM<LogikalProductGroup, LogikalFinish, LogikalProfile, LogikalGasket, LogikalComponent,LogikalGlass,LogikalLabour>[],bool> callback)
- {
-
- _type = type;
- InitializeComponent();
- _job = job;
- _callback = callback;
- Projects.Refresh(true, false);
- Phases.Refresh(true, false);
-
- Elevations.Options.MultiSelect = true;
- Elevations.Refresh(true, false);
- }
- private void Window_Loaded(object sender, RoutedEventArgs e)
- {
- if (LogikalClient.Instance.Settings.UseLogikalProjectNumber)
- {
- if (string.IsNullOrWhiteSpace(LogikalClient.Instance.Settings.ProjectPrefix))
- Projects.JobNumber = _job?.JobNumber ?? "";
- else if (_job?.JobNumber?.StartsWith(LogikalClient.Instance.Settings.ProjectPrefix) == true)
- Projects.JobNumber = _job?.JobNumber?.Substring(LogikalClient.Instance.Settings.ProjectPrefix.Length) ?? "";
- else
- Projects.JobNumber = "";
- Projects.Get();
- }
- else
- {
- if (LogikalProject.ParseReference(_job?.SourceRef, out Guid _projectid))
- {
- ProjectRow.Height = new GridLength(0);
- SplitterRow.Height = new GridLength(0);
- LogikalClient.Instance.GetProject(_projectid)
- .Success<LogikalProjectResponse<LogikalProject>>(response => { _project = response.Project; });
- Phases.ProjectID = _projectid;
- Elevations.ProjectID = _projectid;
- Phases.Get();
- }
- Projects.JobNumber = "";
- Projects.Get();
- }
-
- }
- private void Projects_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
- {
- if (e.Rows?.Any() == true)
- {
- _project = Projects.Items[e.Rows[0].Index];
- GetPhases(_project.ID);
- }
- }
- private void GetPhases(Guid id)
- {
- Phases.ProjectID = id;
- Elevations.ProjectID = id;
- Phases.Get();
- }
- private void Phases_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
- {
- var phase = e.Rows?.FirstOrDefault()?.Get<LogikalPhase, string>(x => x.ID) ?? "";
- GetElevations(phase);
- }
- private void GetElevations(string phase)
- {
- Elevations.Phase = phase;
- Elevations.Get();
- }
- private void Elevations_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
- {
- var id = e.Rows?.FirstOrDefault()?.Get<LogikalElevationSummary, Guid>(x => x.ID) ?? Guid.Empty;
- OK.IsEnabled = id != Guid.Empty;
- }
- private void Projects_AfterRefresh(object sender, AfterRefreshEventArgs args)
- {
- // Projects.Width = Projects.Items.Count > 1
- // ? 250
- // : 0;
- //GetPhases(Projects.Items.FirstOrDefault()?.ID ?? Guid.Empty);
- }
- private void Phases_AfterRefresh(object sender, AfterRefreshEventArgs args)
- {
- // Phases.Width = Phases.Items.Count > 1
- // ? 200
- // : 0;
- //GetElevations(Phases.Items.FirstOrDefault()?.ID ?? "");
- }
- private void Cancel_Click(object sender, RoutedEventArgs e)
- {
- DialogResult = false;
- }
- private void OK_Click(object sender, RoutedEventArgs e)
- {
- bool close = false;
- var ids = Elevations.SelectedRows.Select(r => r.Get<LogikalElevationSummary, Guid>(c => c.ID)).ToArray();
-
- if (_type == LogikalElevationSelectionType.BOM)
- {
-
- LogikalClient.Instance.GetBillOfMaterials(Elevations.ProjectID, ids, true, true)
- .Always(UpdateStatus)
- .Error(error => { MessageWindow.ShowMessage(error.Message, "Error"); })
- .Success<LogikalBOMResponse<LogikalBOM, LogikalProductGroup, LogikalFinish, LogikalProfile, LogikalGasket, LogikalComponent, LogikalGlass, LogikalLabour>>(
- response =>
- {
- close = _callback(_project,[response.BOM]);
- });
- }
- else
- {
- bool bok = true;
- LogikalClient.Instance.GetElevationDetails(Elevations.ProjectID, ids, true, true)
- .Always(UpdateStatus)
- //.Error(error => { MessageWindow.ShowMessage(error.Message, "Error"); })
- .Success<LogikalElevationDetailResponse<LogikalElevationDetail, LogikalProductGroup, LogikalFinish, LogikalProfile, LogikalGasket, LogikalComponent,
- LogikalGlass, LogikalLabour>>(
- response =>
- {
- bok = bok && _callback(_project,
- response.Elevations
- .OfType<ILogikalBOM<LogikalProductGroup, LogikalFinish, LogikalProfile, LogikalGasket, LogikalComponent, LogikalGlass, LogikalLabour>>()
- .ToArray());
- });
- close = bok;
- }
- if (close)
- DialogResult = true;
- }
- private bool CreateBOM(IEnumerable<IAwgFinish> finishes, IEnumerable<IAwgProfile> profiles, IEnumerable<IAwgGasket> gaskets, IEnumerable<IAwgComponent> components, IEnumerable<IAwgGlass> glass, IEnumerable<IAwgLabour> labour)
- //where TType : IAwgBOM<TFinish,TProfile,TGasket,TComponent,TGlass,TLabour>
- // where TFinish : IAwgFinish
- // where TProfile : IAwgProfile
- // where TGasket : IAwgGasket
- // where TComponent : IAwgComponent
- // where TGlass : IAwgGlass
- // where TLabour : IAwgLabour
-
- {
-
- return true;
- }
-
-
-
- }
|