static void ReadWorkTypes() { string CatName = ""; for (int i = 0; i < ar.Count; i++) { if (counts[i] == 1) { CatName = ar[i][0]; } else { WorkTypeClass work = new WorkTypeClass(); work.Article = ar[i][0]; if (ar[i][1] != null) { work.parametrs = ar[i][1].Split(',').ToList(); } work.setPriceFunc(ar[i][2]); work.setCategory(CatName); if (DelegateAssemblyService.isCreatedCorrect(work) && !JSONSerializeService.Contains(work)) { JSONSerializeService.AddToOutput(work); } } } JSONSerializeService.Save(); }
public static void Edit(WorkTypeClass work, WorkTypeClass newwork) { RemovefromList(work, true); bool check = false; foreach (WorksTypeTree comp in treelist) { if (comp.WorksList.CheckBoxes) { WorkTypeClass oldwork = comp.CheckedWorks.Find(w => w.FullEquals(work)); if (oldwork != null) { check = true; comp.CheckedWorks.Remove(oldwork); WorkTypeClass newwork1 = newwork.Clone() as WorkTypeClass; if (oldwork.parametrs.Count == newwork.parametrs.Count) { oldwork.ParametersValue.CopyTo(newwork1.ParametersValue, 0); } comp.CheckedWorks.Add(newwork1 as WorkTypeClass); } } } AddtoList(newwork, check); }
public static void RemovefromList(WorkTypeClass work, bool edit = false) { foreach (WorksTypeTree comp in treelist) { TreeNodeCollection tree = comp.WorksList.Nodes[0].Nodes; TreeNode itemNode = null; foreach (TreeNode node in tree) { itemNode = comp.FromID(work, node); if (itemNode != null) { break; } } if (!edit) { WorkTypeClass del; if ((del = comp.CheckedWorks.Find(w => w.Equals(work))) != null) { comp.CheckedWorks.Remove(del); } } tree[WorkTypeClass.CategoryNames[work.category]].Nodes.Remove(itemNode); } }
private void Remove(object sender, EventArgs e) { if (AdminWorks.WorksList.SelectedNode != null && AdminWorks.WorksList.SelectedNode.Tag is WorkTypeClass) { WorkTypeClass work = AdminWorks.WorksList.SelectedNode.Tag as WorkTypeClass; WorkTypeClass work1 = JSONSerializeService.OutputItems.Find(w => w.FullEquals(work)); WorksTypeTree.RemovefromList(work); JSONSerializeService.OutputItems.Remove(work1); JSONSerializeService.Save(); } }
public void isCreatedCorrect_workDelegateNameNotChanged() { WorkTypeClass InpWork = new WorkTypeClass(100); InpWork.Article = "test"; InpWork.category = WorkTypeClass.Category.other; string expected = null; DelegateAssemblyService.isCreatedCorrect(InpWork); Assert.AreEqual(expected, InpWork.delegateName); }
public void FullEquals() { //arrange WorkTypeClass work = new WorkTypeClass(); WorkTypeClass work1 = work.Clone() as WorkTypeClass; //act bool actual = work.FullEquals(work1); //assert Assert.AreEqual(true, actual); }
public void AddToOutput_AddNewWork() { WorkTypeClass work = new WorkTypeClass(); work.Article = "Test"; work.category = WorkTypeClass.Category.other; work.setPriceFunc("0"); bool expected = true; bool result = JSONSerializeService.AddToOutput(work); Assert.AreEqual(expected, result); }
public static void AddtoList(WorkTypeClass work, bool check = false) { foreach (WorksTypeTree comp in treelist) { TreeNodeCollection tree = comp.WorksList.Nodes[0].Nodes; TreeNode newnode = new TreeNode(); newnode.Text = work.Article; newnode.Name = work.ToString(); newnode.Tag = work; if (check) { newnode.Checked = check; } tree[WorkTypeClass.CategoryNames[work.category]].Nodes.Add(newnode); } }
public TreeNode FromID(WorkTypeClass work, TreeNode rootNode) { foreach (TreeNode node in rootNode.Nodes) { if (node.Tag is WorkTypeClass && node.Tag as WorkTypeClass == work) { return(node); } TreeNode next = FromID(work, node); if (next != null) { return(next); } } return(null); }
private void WorksList_AfterCheck(object sender, TreeViewEventArgs e) { TreeNode node = e.Node; bool check = node.Checked; WorkTypeClass work = null; if (node.Tag is WorkTypeClass) { work = node.Tag as WorkTypeClass; } if (work != null) { if (check) { if (!CheckedWorks.Exists(w => w.Equals(work))) { CheckedWorks.Add((WorkTypeClass)work.Clone()); } } else { CheckedWorks.Remove(CheckedWorks.Find(x => x.FullEquals(work))); } if (check) { if (!CheckedCats.Contains(work.category)) { CheckedCats.Add(work.category); } } else { CheckedCats.Remove(work.category); } CheckedNodesChanged?.Invoke(node, new EventArgs()); } }
private void Refresh(object sender, EventArgs e) { Regex reg = new Regex(@"[0-9]+"); finaltable.Rows.Clear(); RoomResT.Text = ""; double[] results = new double[4]; foreach (Room room in Rooms) { RoomResT.Text += room.Title + "\n" + "Периметр пола: " + room.BottomPerimeter.ToString("#.##") + "\n" + "Площадь потолка и пола: " + room.Area.ToString("#.##") + "\n" + "Периметр потолка: " + room.Perimeter.ToString("#.##") + "\n" + "Площадь стен: " + room.CommonArea.ToString("#.##") + "\n"; results[0] += room.BottomPerimeter; results[1] += room.Area; results[2] += room.Perimeter; results[3] += room.CommonArea; } RoomResT.Text += "==Общее==" + "\n" + "Периметр пола:" + results[0].ToString("#.##") + "\n" + "Площадь потолка и пола: " + results[1].ToString("#.##") + "\n" + "Периметр потолка: " + results[2].ToString("#.##") + "\n" + "Площадь стен:" + results[3].ToString("#.##"); SummT.Text = "========\n"; double commonsumm = 0; for (int i = 0; i < Rooms.Count; i++) { SummT.Text += Rooms[i].Title + "\nСумма:" + Rooms[i].Summ.ToString("#.##") + "\n"; commonsumm += Rooms[i].Summ; } SummT.Text += "========" + "\nОбщая сумма:" + commonsumm.ToString("#.##"); if (Convert.ToBoolean(ConfigWorksService.getValue(ConfigWorksService.Options.ReportRooms))) { double commonsum = 0; foreach (Room room in Rooms) { double sum = 0; finaltable.Rows.Add(new string[] { room.Title, "", "", "" }); finaltable.Rows.Add(new string[] { "Площадь стен", room.CommonArea.ToString("#.##"), "", "" }); finaltable.Rows.Add(new string[] { "Площадь пола", room.Area.ToString("#.##"), "", "" }); finaltable.Rows.Add(new string[] { "Периметр пола", room.BottomPerimeter.ToString("#.##"), "", "" }); foreach (WorkTypeClass work in room.CheckedWorks) { finaltable.Rows.Add(new string[] { work.Article, work.Quantity, reg.Match(work.Formula, 0).Value, work.Price }); sum += work.GetPrice(); } finaltable.Rows.Add(new string[] { "", "", "Сумма", sum.ToString("#.##") }); commonsum += sum; } finaltable.Rows.Add(new string[] { "", "", "Общая сумма", commonsum.ToString("#.##") }); foreach (DataGridViewRow row in finaltable.Rows) { row.ReadOnly = true; } finaltable.Rows[finaltable.RowCount - 1].ReadOnly = false; } else { //сумма для каждой работы Dictionary <WorkTypeClass, double> everyworksumm = new Dictionary <WorkTypeClass, double>(); //сумма параметров Dictionary <WorkTypeClass, double[]> paramssumm = new Dictionary <WorkTypeClass, double[]>(); double commonsum = 0; for (int i = 0; i < Rooms.Count; i++) { for (int j = 0; j < Rooms[i].CheckedWorks.Count; j++) { WorkTypeClass work = Rooms[i].CheckedWorks[j]; if (work.ParametersValue.Length == 0) { work.ParametersValue = new double[work.parametrs.Count]; } //проверяем содержит if (everyworksumm.FirstOrDefault(x => x.Key.Article == work.Article && x.Key.category == work.category).Key == null) { everyworksumm.Add(work, 0); paramssumm.Add(work, new double[work.ParametersValue.Length]); } if (work.ParametersValue.Length == 0) { work.ParametersValue = new double[work.parametrs.Count]; } for (int k = 0; k < Rooms[i].CheckedWorks[j].parametrs.Count; k++) { paramssumm.First(x => x.Key.Article == work.Article && x.Key.category == work.category).Value[k] += work.ParametersValue[k]; } everyworksumm[everyworksumm.First(x => x.Key.Article == work.Article && x.Key.category == work.category).Key] += work.GetPrice(); commonsum += work.GetPrice(); } } foreach (var pair in everyworksumm) { string quantity = ""; for (int i = 0; i < paramssumm[pair.Key].Length; i++) { quantity += paramssumm[pair.Key][i] + " " + pair.Key.parametrs[i] + "\n"; } finaltable.Rows.Add(new string[] { pair.Key.Article, quantity, reg.Match(pair.Key.Formula, 0).Value, pair.Value.ToString("#.##") }); finaltable.Rows[finaltable.RowCount - 2].ReadOnly = true; } DataGridViewRow row = new DataGridViewRow(); finaltable.Rows.Add(new string[] { "", "", "Сумма", commonsum.ToString("#.##") }); finaltable.Rows[finaltable.RowCount - 2].ReadOnly = false; } }
public void RefrehTable(object sender, EventArgs e) { //Area.Text = $"Площадь:{Room.Area}\nПериметр:{Room.Perimeter}\nПлощадь стен:{Room.CommonArea}"; DataGridView worktable; switch (RoomTypeSelect.SelectedIndex) { case 0: worktable = this.worktable; break; case 1: worktable = this.NonStandardWorkTable; break; default: worktable = null; break; } if (sender is TreeNode && (sender as TreeNode).Checked) { WorkTypeClass work = worksTypeTree1.CheckedWorks.Find(w => w.Equals(((sender as TreeNode).Tag as WorkTypeClass))); if (work.ParametersValue.Length != 0) { int i1 = 0; if (Room.GetAreaFromCat(work.category) != -1) { work.ParametersValue[0] = Room.GetAreaFromCat(work.category); i1++; } for (int i = i1; !work.IsFixedPrice && i < work.ParametersValue.Length; i++) { inputparams param = new inputparams(); param.WorkTitle.Text = work.Article; param.Paramname.Text = work.parametrs[i]; Classes.Functions.CenterForm(param, ParentForm); param.ShowDialog(); if (param.Paramname.Text == "") { param.Paramname.Text = "1"; } work.ParametersValue[i] = double.Parse(param.TextBox.Text); } work.Quantity = work.getQuantity(); } } else { foreach (WorkTypeClass work in worksTypeTree1.CheckedWorks) { if (Room.GetAreaFromCat(work.category) != -1 && work.ParametersValue.Length != 0) { work.ParametersValue[0] = Room.GetAreaFromCat(work.category); } work.Quantity = work.getQuantity(); } } BindingSource source = new BindingSource(); source.DataSource = worksTypeTree1.CheckedWorks; worktable.DataBindingComplete += (send, ea) => { foreach (DataGridViewRow dgvr in worktable.Rows) { WorkTypeClass work = dgvr.DataBoundItem as WorkTypeClass; if (Room.GetAreaFromCat(work.category) == -1 || work.ParametersValue.Length > 1) { dgvr.DefaultCellStyle.BackColor = System.Drawing.Color.LightGray; } } }; string[] names = new string[4]; names[0] = "Title"; names[1] = "Count"; names[2] = "Price"; names[3] = "Summ"; if (worktable == NonStandardWorkTable) { for (int i = 0; i < names.Length; i++) { names[i] += "1"; } } worktable.DataSource = source; worktable.Columns[names[0]].DisplayIndex = 0; worktable.Columns[names[1]].DisplayIndex = 1; worktable.Columns[names[2]].DisplayIndex = 2; worktable.Columns[names[3]].DisplayIndex = 3; worktable.Columns[names[0]].DataPropertyName = "Article"; worktable.Columns[names[1]].DataPropertyName = "Quantity"; worktable.Columns[names[2]].DataPropertyName = "Formula"; worktable.Columns[names[3]].DataPropertyName = "Price"; for (int i = 5; i < worktable.ColumnCount; i++) { worktable.Columns[i].Visible = false; } }