private void OnEditing(object sender, RoutedEventArgs e) { if (data.SelectedIndex < 0) { MessageBox.Show("Выберете процесс..."); return; } WorkContext WorkContext = new WorkContext(list[data.SelectedIndex].Work); Adds.WindowAddWork window = new Adds.WindowAddWork(WorkContext); if (window.ShowDialog() == true) { using (var db = new SmetaDbAppContext()) { WorkContext.Work.PricePay = (double)WorkContext.TeamContexts.Select(x => x.PaybyHour * x.Count).Sum(); if (WorkContext.MaterailContexts.Count > 0) { WorkContext.Work.PriceMaterial = WorkContext.MaterailContexts.Select(x => x.Material.Price).Sum(); } else { WorkContext.Work.PriceMaterial = 0; } if (WorkContext.PriborContexts.Count > 0) { WorkContext.Work.PricePribor = WorkContext.PriborContexts.Select(x => (x.Pribor.Price * x.Pribor.Percent) / 100).Sum() / 12; } else { WorkContext.Work.PricePribor = 0; } //DBConnection.BeginTransaction(); try { //MessageBox.Show(WorkContext.Work.Id.ToString()); // Add workr and get Id of the new work WorkContext.Work.Update(); // Add team workers foreach (var item in WorkContext.TeamContexts) { item.WorkTeam.WorkDemId = WorkContext.Work.Id; item.WorkTeam.PostId = item.Post.Id; if (item.WorkTeam.Id != 0) { item.WorkTeam.Update(); } else { item.WorkTeam.Save(); } } //Add materials foreach (var item in WorkContext.MaterailContexts) { item.MaterialGroup.WorkId = WorkContext.Work.Id; item.MaterialGroup.MaterialId = item.Material.Id; if (item.MaterialGroup.Id != 0) { item.MaterialGroup.Update(); } else { item.MaterialGroup.Save(); } } // Add Pribors foreach (var item in WorkContext.PriborContexts) { item.PriborGroup.WorkId = WorkContext.Work.Id; item.PriborGroup.PriborId = item.Pribor.Id; if (item.PriborGroup.Id != 0) { item.PriborGroup.Update(); } else { item.PriborGroup.Save(); } } //DBConnection.CommitTransaction(); } catch (Exception exc) { MessageBox.Show(exc.ToString()); //DBConnection.RollbackTransaction(); } } //list.Add(new WorkListView(WorkContext.Work, WorkSections)); } }
private void OnClickNew(object sender, RoutedEventArgs e) { WorkContext WorkContext = new WorkContext(); Adds.WindowAddWork window = new Adds.WindowAddWork(WorkContext); if (window.ShowDialog() == true) { using (var db = new SmetaDbAppContext()) { WorkContext.Work.PricePay = WorkContext.TeamContexts.Select(x => Math.Round((double)x.PaybyHour, 2)).Sum(); // Count Price of material if (WorkContext.MaterailContexts.Count > 0) { WorkContext.Work.PriceMaterial = WorkContext.MaterailContexts.Select(x => x.Material.Price * x.MaterialGroup.Count1).Sum(); } else { WorkContext.Work.PriceMaterial = 0; } // Count Price of Pribors if (WorkContext.PriborContexts.Count > 0) { WorkContext.Work.PricePribor = WorkContext.PriborContexts.Select(x => Math.Round((x.Pribor.Price * x.Pribor.Percent) / 100, 2)).Sum() / 12; } else { WorkContext.Work.PricePribor = 0; } DBConnection.BeginTransaction(); try { // Save the work to base and get Id of the new work WorkContext.Work.Save(); // Add team workers foreach (var item in WorkContext.TeamContexts) { item.WorkTeam.WorkDemId = WorkContext.Work.Id; item.WorkTeam.PostId = item.Post.Id; item.WorkTeam.Save(); } //Add materials foreach (var item in WorkContext.MaterailContexts) { item.MaterialGroup.WorkId = WorkContext.Work.Id; item.MaterialGroup.MaterialId = item.Material.Id; item.MaterialGroup.Save(); } // Add Pribors foreach (var item in WorkContext.PriborContexts) { item.PriborGroup.WorkId = WorkContext.Work.Id; item.PriborGroup.PriborId = item.Pribor.Id; item.PriborGroup.Save(); } DBConnection.CommitTransaction(); } catch (Exception exc) { MessageBox.Show(exc.ToString()); DBConnection.RollbackTransaction(); } } list.Add(new WorkListView(WorkContext.Work)); } }