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(); } }
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; }
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); }