| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Windows;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.Logikal;
- using InABox.WPF;
- namespace PRSDesktop;
- public class LogikalProjectGrid : DynamicItemsListGrid<LogikalProject>
- {
- public LogikalProjectGrid()
- {
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.FilterRows = true;
- options.HideDatabaseFilters = true;
- }
- }
- public partial class LogikalProjectImport : Window
- {
- private void UpdateStatus(LogikalResponse response)
- {
- Dispatcher.BeginInvoke(
- () => {
- Status.Content = response.ToString();
- });
- }
- public LogikalProjectImport()
- {
- InitializeComponent();
- Projects.Items = new List<LogikalProject>();
- Projects.Refresh(true, true);
- }
- private void OK_Click(object sender, RoutedEventArgs e)
- {
- DialogResult = true;
- }
- private void Cancel_Click(object sender, RoutedEventArgs e)
- {
- DialogResult = false;
- }
- private void Window_Loaded(object sender, RoutedEventArgs e)
- {
-
- var _projects = new List<LogikalProject>();
- var _scopes = new List<JobScope>();
- Progress.ShowModal("Connecting to LogiKal", progress =>
- {
- using (var client = new LogikalClient())
- {
- client.Connect()
- .Always(UpdateStatus)
- .Success<LogikalConnectResponse>(c =>
- {
- progress.Report("Logging In");
- client.Login()
- .Always(UpdateStatus)
- .Success<LogikalLoginResponse>(l =>
- {
- progress.Report("Retrieving Projects");
- Task logikalTask = Task.Run(() =>
- {
- client.ProjectList()
- .Always(UpdateStatus)
- .Success<LogikalProjectsResponse<LogikalProject, LogikalElevation, LogikalPart>>(p =>
- {
- _projects = p.Projects.ToList();
- });
- });
- Task<List<JobScope>> prsTask = Task.Run(() => Client.Query<JobScope>(null,
- Columns.None<JobScope>().Add(x => x.Job.ID).Add(x => x.Job.JobNumber).Add(x => x.Job.SourceRef).Add(x => x.Job.DefaultScope.ID).Add(x => x.ID).Add(x => x.Number).Add(x => x.SourceRef)
- ).ToObjects<JobScope>().ToList());
- Task.WaitAll(logikalTask, prsTask);
- _scopes = prsTask.Result;
-
- });
- });
- }
- });
- Projects.Items = _projects
- .Where(p => !_scopes.Any(x => string.Equals(x.SourceRef, $"{p.ID}")))
- .ToList();
- Projects.Items = _projects;
- Projects.Refresh(false, true);
- }
- }
|