示例#1
0
        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));
            }
        }
示例#2
0
        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));
            }
        }