Пример #1
0
        public void MigrationFull(List <ClientData> sourceClientData, string id, int indexElement)
        {
            sourceClientData[_index].Result.Elements[indexElement].Name    = sourceClientData[_index].Integration.Elements[0].Name;
            sourceClientData[_index].Result.Elements[indexElement].OldId   = sourceClientData[_index].Integration.Elements[0].Id;
            sourceClientData[_index].Result.Elements[indexElement].OldCode = sourceClientData[_index].Integration.Elements[0].OldCode;
            List <Elements> sourceMigrationElements = new List <Elements>();
            List <Links>    sourceMigrationLinks    = new List <Links>();
            var             diff = Int32.Parse(sourceClientData[_index].Result.Elements[indexElement].Level) - 1;
            var             indexMigrationElement = 0;
            var             lastIdElements        = 0;
            Position        position = new Position(sourceClientData[_index].Result.Elements[indexElement].Level, sourceClientData[_index].Result.Elements[indexElement].Number);

            //clear subjects of choose elements
            if (RecoderInfo.SourceSubjects.Find((x) => x.ParentId == sourceClientData[_index].Result.Elements[indexElement].Id) != null)
            {
                foreach (var item in RecoderInfo.SourceSubjects.Find((x) => x.ParentId == sourceClientData[_index].Result.Elements[indexElement].Id).SubjectId)
                {
                    Elements elementToRemove = sourceClientData[_index].Result.Elements.Find((x) => x.Id == item);
                    sourceClientData[_index].Result.Elements.Remove(elementToRemove);
                    List <int> indexLinkToDel = new List <int>();
                    var        countLinks     = 0;
                    foreach (Links link in sourceClientData[_index].Result.Links)
                    {
                        if (link.Afe2 == elementToRemove.Id && link.Afe1 == elementToRemove.ParentId || link.Afe3 == elementToRemove.Id && link.Afe1 == elementToRemove.ParentId)
                        {
                            //Links linkToRemove = link;
                            //sourceClientData[_index].Result.Links.Remove(linkToRemove);
                            indexLinkToDel.Add(countLinks);
                        }
                        countLinks++;
                    }
                    foreach (var index in indexLinkToDel)
                    {
                        //Links removeLink = new Links(sourceClientData[_index].Result.Links[index]);
                        //sourceClientData[_index].Result.Links.Remove(removeLink);
                        //sourceClientData[_index].Result.Links.Remove(sourceClientData[_index].Result.Links[index]);
                        sourceClientData[_index].Result.Links[index].Afe1 = "0";
                        sourceClientData[_index].Result.Links[index].Afe2 = "0";
                        sourceClientData[_index].Result.Links[index].Afe3 = "0";
                    }
                }
            }
            foreach (Elements item in sourceClientData[_index].Result.Elements) //find lastId
            {
                if (Int32.Parse(item.Id) > lastIdElements)
                {
                    lastIdElements = Int32.Parse(item.Id);
                }
            }
            if (position.Number - 1 > 0)                                                                  //check left elements
            {
                RecoderInfo.CreateStructDiagrammInfo(position, sourceClientData[_index].Result.Elements); //create info left struct

                foreach (Elements item in sourceClientData[_index].Integration.Elements)                  //create source_elements4migration
                {
                    if (item != sourceClientData[_index].Integration.Elements[0])
                    {
                        Elements element = new Elements(item);
                        element.Level = (Int32.Parse(element.Level) + diff).ToString();
                        element.Id    = (++lastIdElements).ToString();
                        sourceMigrationElements.Add(element);
                        indexMigrationElement++;
                    }
                }
                foreach (Elements item in sourceMigrationElements) //migration elements
                {
                    if (RecoderInfo.LeftStructDiagramm.Find((x) => x.Level == item.Level) != null)
                    {
                        item.Number = (Int32.Parse(item.Number) + RecoderInfo.LeftStructDiagramm.Find((x) => x.Level == item.Level).LastNumber).ToString();
                        //RecoderInfo.LeftStructDiagramm.Find((x) => x.Level == item.Level).LastNumber = Int32.Parse(item.Number);
                    }
                    Job.AddElement(sourceClientData, Job.Types[2], item);
                }
                foreach (Links item in sourceClientData[_index].Integration.Links) //migration links
                {
                    Links link = new Links(item);

                    if (sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe1 && x.OldId != x.Id) != null)
                    {
                        link.Afe1 = sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe1 && x.OldId != x.Id).Id;
                    }
                    if (sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe2 && x.OldId != x.Id) != null)
                    {
                        link.Afe2 = sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe2 && x.OldId != x.Id).Id;
                    }
                    if (sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe3 && x.OldId != x.Id) != null)
                    {
                        link.Afe3 = sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe3 && x.OldId != x.Id).Id;
                    }
                    sourceClientData[_index].Result.Links.Add(link);
                }
                foreach (string item in sourceClientData[_index].Integration.DcmpElements) //migration integr dcpm
                {
                    var value = item;
                    sourceClientData[_index].Result.DcmpElements.Add(value);
                }
                for (int i = 0; i < sourceClientData[_index].Result.DcmpElements.Count; i++) //recode dcmp
                {
                    if (sourceClientData[_index].Result.Elements.Find((x) => x.OldCode == sourceClientData[_index].Result.DcmpElements[i] && (x.OldCode != ("z" + x.Level + x.Number) && x.OldCode != ("z" + x.Level + "." + x.Number))) != null)
                    {
                        Elements element = new Elements(sourceClientData[_index].Result.Elements.Find((x) => x.OldCode == sourceClientData[_index].Result.DcmpElements[i] && (x.OldCode != ("z" + x.Level + x.Number) && x.OldCode != ("z" + x.Level + "." + x.Number))));
                        if (Int32.Parse(element.Number) > 9)
                        {
                            sourceClientData[_index].Result.DcmpElements[i] = "z" + element.Level + "." + element.Number;
                        }
                        else
                        {
                            sourceClientData[_index].Result.DcmpElements[i] = "z" + element.Level + element.Number;
                        }
                    }
                }
                List <SubjectElements> sourceSubjects = new List <SubjectElements>();
                foreach (Elements item in sourceClientData[_index].Current.Elements)
                {
                    if (item.Level == sourceClientData[_index].Result.Elements[indexElement].Level && Int32.Parse(item.Number) > Int32.Parse(sourceClientData[_index].Result.Elements[indexElement].Number))
                    {
                        SubjectElements subjects = new SubjectElements(item.Id, sourceClientData[_index].Current.Elements);
                        if (subjects.SubjectId.Count > 0)
                        {
                            sourceSubjects.Add(subjects);
                            //Startup.subjTest.Add(subjects);
                        }
                    }
                }
                RecoderInfo.CreateIntegrationStructDiagramm(sourceClientData[_index].Integration.Elements);
                position.Level  = Int32.Parse(sourceClientData[_index].Result.Elements[indexElement].Level);
                position.Number = Int32.Parse(sourceClientData[_index].Result.Elements[indexElement].Number);
                var point = true;
                while (point == true)
                {
                    if (sourceClientData[_index].Result.Elements.Find((x) => x.Level == position.Level.ToString() && x.Number == (position.Number + 1).ToString()) != null)
                    {
                        Elements element = sourceClientData[_index].Result.Elements.Find((x) => x.Level == position.Level.ToString() && x.Number == (position.Number + 1).ToString());
                        if (sourceSubjects.Find((x) => x.ParentId == element.Id && x.SubjectId.Count > 0) != null)
                        {
                            foreach (var item in sourceSubjects.Find((x) => x.ParentId == element.Id).SubjectId)
                            {
                                Elements subjElement = sourceClientData[_index].Result.Elements.Find((x) => x.Id == item);
                                sourceClientData[_index].Result.Elements.Find((x) => x.Id == item).Number = (RecoderInfo.ForRightStructDiagramm.Find((x) => x.Level == subjElement.Level).Numbers.Count + Int32.Parse(subjElement.Number)).ToString();
                            }
                        }
                        position.Number++;
                    }
                    else
                    {
                        point = false;
                    }
                }
                var _dcmp = "z" + sourceClientData[_index].Result.Elements[indexElement].Level + sourceClientData[_index].Result.Elements[indexElement].Number;
                sourceClientData[_index].Result.DcmpElements.Add(_dcmp);
                foreach (string item in sourceClientData[_index].Current.DcmpElements)
                {
                    var value = item;

                    /*
                     * if (sourceClientData[_index].Result.Elements.Find((x) => x.OldCode == value) != null)
                     * {
                     *  Elements element = new Elements(sourceClientData[_index].Result.Elements.Find((x) => x.OldCode == value));
                     *  var code = "z" + element.Level;
                     *  if (Int32.Parse(element.Number) > 9)
                     *  {
                     *      code += "." + element.Number;
                     *  }
                     *  else
                     *      code += element.Number;
                     *  if (element.OldCode != code)
                     *  {
                     *      value = code;
                     *  }
                     * }*/
                    sourceClientData[_index].Result.DcmpElements.Add(value);
                }
                var        count             = 0;
                List <int> indexLinkToDelete = new List <int>();
                foreach (var item in sourceClientData[_index].Result.Links)
                {
                    var countCopy = 0;
                    foreach (var linkCopyCheck in sourceClientData[_index].Result.Links)
                    {
                        if (item.Afe1 == linkCopyCheck.Afe1 && item.Afe2 == linkCopyCheck.Afe2 && item.Afe3 == linkCopyCheck.Afe3 && item.Type == linkCopyCheck.Type && count != countCopy)
                        {
                            indexLinkToDelete.Add(countCopy);
                        }
                        countCopy++;
                    }
                    count++;
                }
            }
            else
            {
                MigrationFirstNumberSubjectNull(sourceClientData, id, indexElement);
            }
        }
Пример #2
0
        public void MigrationFirstNumberSubjectNull(List <ClientData> sourceClientData, string id, int indexElement)
        {
            sourceClientData[_index].Result.Elements[indexElement].Name    = sourceClientData[_index].Integration.Elements[0].Name;
            sourceClientData[_index].Result.Elements[indexElement].OldId   = sourceClientData[_index].Integration.Elements[0].Id;
            sourceClientData[_index].Result.Elements[indexElement].OldCode = sourceClientData[_index].Integration.Elements[0].OldCode;
            List <Elements> sourceMigrationElements = new List <Elements>();
            List <Links>    sourceMigrationLinks    = new List <Links>();
            var             diff = Int32.Parse(sourceClientData[_index].Result.Elements[indexElement].Level) - 1;
            var             indexMigrationElement = 0;
            var             lastIdElements        = 0;

            //clear subjects of choose elements
            if (RecoderInfo.SourceSubjects.Find((x) => x.ParentId == sourceClientData[_index].Result.Elements[indexElement].Id) != null)
            {
                foreach (var item in RecoderInfo.SourceSubjects.Find((x) => x.ParentId == sourceClientData[_index].Result.Elements[indexElement].Id).SubjectId)
                {
                    Elements elementToRemove = sourceClientData[_index].Result.Elements.Find((x) => x.Id == item);
                    sourceClientData[_index].Result.Elements.Remove(elementToRemove);
                    List <int> indexLinkToDel = new List <int>();
                    var        countLinks     = 0;
                    foreach (Links link in sourceClientData[_index].Result.Links)
                    {
                        if ((link.Afe2 == elementToRemove.Id && link.Afe1 == elementToRemove.ParentId) || (link.Afe3 == elementToRemove.Id && link.Afe1 == elementToRemove.ParentId))
                        {
                            //Links linkToRemove = link;
                            //sourceClientData[_index].Result.Links.Remove(linkToRemove);
                            indexLinkToDel.Add(countLinks);
                        }
                        countLinks++;
                    }
                    foreach (var index in indexLinkToDel)
                    {
                        //Links removeLink = sourceClientData[_index].Result.Links[index];
                        //sourceClientData[_index].Result.Links.Remove(removeLink);
                        //sourceClientData[_index].Result.Links.Remove(sourceClientData[_index].Result.Links[index]);
                        sourceClientData[_index].Result.Links[index].Afe1 = "0";
                        sourceClientData[_index].Result.Links[index].Afe2 = "0";
                        sourceClientData[_index].Result.Links[index].Afe3 = "0";
                    }
                }
            }
            foreach (Elements item in sourceClientData[_index].Result.Elements)
            {
                if (Int32.Parse(item.Id) > lastIdElements)
                {
                    lastIdElements = Int32.Parse(item.Id);
                }
            }
            var count = 0;

            foreach (Elements item in sourceClientData[_index].Integration.Elements)
            {
                if (count > 0)
                {
                    Elements element = new Elements(item);
                    element.Level = (Int32.Parse(element.Level) + diff).ToString();
                    element.Id    = (++lastIdElements).ToString();
                    sourceMigrationElements.Add(element);
                    indexMigrationElement++;
                }
                count++;
            }
            foreach (Elements item in sourceMigrationElements)
            {
                Job.AddElement(sourceClientData, Job.Types[2], item);
            }
            foreach (Links item in sourceClientData[_index].Integration.Links)
            {
                Links link = new Links(item);

                if (sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe1 && x.OldId != x.Id) != null)
                {
                    link.Afe1 = sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe1 && x.OldId != x.Id).Id;
                }
                if (sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe2 && x.OldId != x.Id) != null)
                {
                    link.Afe2 = sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe2 && x.OldId != x.Id).Id;
                }
                if (sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe3 && x.OldId != x.Id) != null)
                {
                    link.Afe3 = sourceClientData[_index].Result.Elements.Find((x) => x.OldId == link.Afe3 && x.OldId != x.Id).Id;
                }
                sourceClientData[_index].Result.Links.Add(link);
            }
            foreach (string item in sourceClientData[_index].Integration.DcmpElements)
            {
                var value = item;
                sourceClientData[_index].Result.DcmpElements.Add(value);
            }
            for (int i = 0; i < sourceClientData[_index].Result.DcmpElements.Count; i++)
            {
                if (sourceClientData[_index].Result.Elements.Find((x) => x.OldCode == sourceClientData[_index].Result.DcmpElements[i] && (x.OldCode != ("z" + x.Level + x.Number) && x.OldCode != ("z" + x.Level + "." + x.Number))) != null)
                {
                    Elements element = new Elements(sourceClientData[_index].Result.Elements.Find((x) => x.OldCode == sourceClientData[_index].Result.DcmpElements[i] && (x.OldCode != ("z" + x.Level + x.Number) && x.OldCode != ("z" + x.Level + "." + x.Number))));
                    if (Int32.Parse(element.Number) > 9)
                    {
                        sourceClientData[_index].Result.DcmpElements[i] = "z" + element.Level + "." + element.Number;
                    }
                    else
                    {
                        sourceClientData[_index].Result.DcmpElements[i] = "z" + element.Level + element.Number;
                    }
                }
            }
            var _dcmp = "z" + sourceClientData[_index].Result.Elements[indexElement].Level + sourceClientData[_index].Result.Elements[indexElement].Number;

            sourceClientData[_index].Result.DcmpElements.Add(_dcmp);
            foreach (string item in sourceClientData[_index].Current.DcmpElements)
            {
                var value = item;
                sourceClientData[_index].Result.DcmpElements.Add(value);
            }
            List <SubjectElements> sourceSubjects = new List <SubjectElements>();

            foreach (Elements item in sourceClientData[_index].Current.Elements)
            {
                if (item.Level == sourceClientData[_index].Result.Elements[indexElement].Level && Int32.Parse(item.Number) > Int32.Parse(sourceClientData[_index].Result.Elements[indexElement].Number))
                {
                    SubjectElements subjects = new SubjectElements(item.Id, sourceClientData[_index].Current.Elements);
                    if (subjects.SubjectId.Count > 0)
                    {
                        sourceSubjects.Add(subjects);
                        //Startup.subjTest.Add(subjects);
                    }
                }
            }
            count = 0;
            List <int> indexLinkToDelete = new List <int>();

            foreach (var item in sourceClientData[_index].Result.Links)
            {
                var countCopy = 0;
                foreach (var linkCopyCheck in sourceClientData[_index].Result.Links)
                {
                    if (item.Afe1 == linkCopyCheck.Afe1 && item.Afe2 == linkCopyCheck.Afe2 && item.Afe3 == linkCopyCheck.Afe3 && item.Type == linkCopyCheck.Type && count != countCopy)
                    {
                        indexLinkToDelete.Add(countCopy);
                    }
                    countCopy++;
                }
                count++;
            }

            /*
             * foreach (var index in indexLinkToDelete)
             * {
             *  //sourceClientData[_index].Result.Links.Remove(sourceClientData[_index].Result.Links[index]);
             *  //sourceClientData[_index].Result.Links[index].Afe1 = "0";
             *  //sourceClientData[_index].Result.Links[index].Afe2 = "0";
             *  sourceClientData[_index].Result.Links[index].Afe3 = "0";
             * }
             *
             * count = 0;
             * indexLinkToDelete.Clear();
             * foreach (var item in sourceClientData[_index].Result.Links)
             * {
             *  if (item.Afe1 == "0" && item.Afe2 == "0")
             *  {
             *      indexLinkToDelete.Add(count);
             *  }
             *  count++;
             * }
             * foreach (var item in indexLinkToDelete)
             * {
             *  Links linkToDelete = sourceClientData[_index].Result.Links[item];
             *  sourceClientData[_index].Result.Links.Remove(linkToDelete);
             * }*/
        }