示例#1
0
        public JobComponentsChangeWindow(FullJobPOCO job)
        {
            Job = job;
            InitializeComponent();
            MainLabel.Content = $"Изменение использованных компонентов в работе #{Job.Id}";
            foreach (var usedComponent in Job.ComponentsUsed)
            {
                PreEditComponentsUsage.Add(usedComponent.Key.Id, usedComponent.Value);
            }

            FillComponents();
        }
        private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            if (CustomerComboBox.SelectedItem != null)
            {
                var newJob = new JobPOCO
                {
                    Complete       = false,
                    ComponentsUsed = new Dictionary <long, int>(),
                    Description    = ""
                };
                await DatabaseProvider.Database.AddJob(newJob);

                var newCustomerOrder = new CustomerOrderPOCO
                {
                    LinkedJobId = newJob.Id,
                    CustomerId  = MainWindow.AllCustomers.Find(x => $"{x.Id}: {x.FullName}" == (string)CustomerComboBox.SelectedItem).Id,
                    OrderDate   = OrderDatePicker.SelectedDate.Value,
                    OrderType   = OrderTypeTextBox.Text,
                    OrderDetals = OrderDescriptionTextBox.Text,
                    Completed   = false
                };
                await DatabaseProvider.Database.AddCustomerOrder(newCustomerOrder);

                newJob.Description = $"Относится к заказу #{newCustomerOrder.Id}";
                await DatabaseProvider.Database.UpdateJob(newJob);

                MainWindow.AllJobs.Add(await FullJobPOCO.BuildFullJobDTO(newJob));
                MainWindow.AllOrders.Add(await CustomerOrderFullPOCO.BuildCustomerOrderFullDTO(newCustomerOrder));

                ((MainWindow)this.Owner).RefreshJobsDataGrid();
                ((MainWindow)this.Owner).JobsDataGrid_SelectionChanged(null, null);
                ((MainWindow)this.Owner).RefreshOrdersDataGrid();
                ((MainWindow)this.Owner).CustomerOrdersDatagrid_SelectionChanged(null, null);

                this.Close();
            }
        }
示例#3
0
        private async void FillJobs()
        {
            AllJobs = (await Task.WhenAll((await DatabaseProvider.Database.GetAllJobs()).Select(async x => await FullJobPOCO.BuildFullJobDTO(x)))).ToList();
            var _itemSourceList = new CollectionViewSource()
            {
                Source = AllJobs
            };
            ICollectionView jobsDatagridItemList = _itemSourceList.View;

            jobsDatagridItemList.Filter = JobsDataGridFilter;
            JobsDataGrid.ItemsSource    = jobsDatagridItemList;
        }
示例#4
0
        private async void SaveComponents()
        {
            var componentUsagePerId = new Dictionary <long, int>();

            var halted = false;

            foreach (var componentBoxes in AllComponents)
            {
                var idBox    = componentBoxes.Key;
                var countBox = componentBoxes.Value;

                if (long.TryParse(idBox.Text, out var componentId))
                {
                    idBox.BorderBrush = (SolidColorBrush) new BrushConverter().ConvertFrom("#FFABADB3");
                    if (int.TryParse(countBox.Text, out var componentCount))
                    {
                        countBox.BorderBrush = (SolidColorBrush) new BrushConverter().ConvertFrom("#FFABADB3");

                        if (componentUsagePerId.ContainsKey(componentId))
                        {
                            componentUsagePerId[componentId] += componentCount;
                        }
                        else
                        {
                            componentUsagePerId.Add(componentId, componentCount);
                        }
                    }
                    else
                    {
                        halted = true;
                        countBox.BorderBrush = Brushes.Red;
                    }
                }
                else
                {
                    halted            = true;
                    idBox.BorderBrush = Brushes.Red;
                }
            }

            if (halted)
            {
                return;
            }

            var job = await DatabaseProvider.Database.GetJob(Job.Id);

            foreach (var component in componentUsagePerId)
            {
                if (component.Key != -1 && await DatabaseProvider.Database.GetComponentInStorage(component.Key) != null)
                {
                    if (component.Value > 0)
                    {
                        if (job.ComponentsUsed.ContainsKey(component.Key))
                        {
                            job.ComponentsUsed[component.Key] = component.Value;
                        }
                        else
                        {
                            job.ComponentsUsed.Add(component.Key, component.Value);
                        }
                    }
                    else if (job.ComponentsUsed.ContainsKey(component.Key))
                    {
                        job.ComponentsUsed.Remove(component.Key);
                    }
                }
            }
            await DatabaseProvider.Database.UpdateJob(job);

            foreach (var preEditComponent in PreEditComponentsUsage)
            {
                var component = await DatabaseProvider.Database.GetComponentInStorage(preEditComponent.Key);

                var componentInView = MainWindow.AllStorage.Find(x => x.Component.Id == preEditComponent.Key);
                componentInView.Count += preEditComponent.Value;
                component.Count       += preEditComponent.Value;
                if (componentUsagePerId.ContainsKey(component.ComponentId))
                {
                    componentInView.Count -= componentUsagePerId[component.ComponentId];
                    component.Count       -= componentUsagePerId[component.ComponentId];
                    componentUsagePerId.Remove(component.ComponentId);
                }
                await DatabaseProvider.Database.UpdateComponentInStorage(component);
            }

            foreach (var componentPostEdit in componentUsagePerId)
            {
                if (componentPostEdit.Key != -1)
                {
                    var component = await DatabaseProvider.Database.GetComponentInStorage(componentPostEdit.Key);

                    if (component != null)
                    {
                        MainWindow.AllStorage.Find(x => x.Component.Id == componentPostEdit.Key).Count -= componentPostEdit.Value;
                        component.Count -= componentPostEdit.Value;
                        await DatabaseProvider.Database.UpdateComponentInStorage(component);
                    }
                }
            }

            MainWindow.AllJobs[MainWindow.AllJobs.IndexOf(MainWindow.AllJobs.First(x => x.Id == Job.Id))] = await FullJobPOCO.BuildFullJobDTO(await DatabaseProvider.Database.GetJob(Job.Id));

            ((MainWindow)this.Owner).RefreshJobsDataGrid();
            ((MainWindow)this.Owner).JobsDataGrid_SelectionChanged(null, null);

            ((MainWindow)this.Owner).RefreshStorageDataGrid();
            ((MainWindow)this.Owner).StorageDatagrid_SelectionChanged(null, null);
        }