public void OnSynchronizationClick_CP(TextBox tboxPhonePath, TextBox tboxComputerPath, TreeView treeViewPhone, TreeView treeViewComputer)
 {
     CheckedNodes check = new CheckedNodes();
     FromCompToPhone synComPhon = new FromCompToPhone();
     SynchronizationFolder synFolder = new SynchronizationFolder();
     synFolder.SynchronFolder(check.CheckedFolder(treeViewComputer.Nodes), tboxPhonePath.Text);
     synComPhon.Synchronization(check.CheckedFiles(treeViewComputer.Nodes), tboxPhonePath.Text, tboxComputerPath.Text);
     treeViewPhone.EndUpdate();
     treeViewComputer.EndUpdate();
 }
        public void Synhronization(string textboxPhone, string textboxComp)
        {
            var context = new SynchronContext();
            var delete = new DeleteFile();
            var update = new UpdateFile();
            var insert = new InsertFile();
            var folder = new SynchronizationFolder();
            folder.SynchronFolder(textboxPhone, textboxComp);
            string[] filesPhone = Directory.GetFiles(textboxPhone, "*.*", SearchOption.AllDirectories);
            string[] filesComp = Directory.GetFiles(textboxComp, "*.*", SearchOption.AllDirectories);
            //для файлов с телефона
            foreach (var filePhon in filesPhone)
            {
                string fileNameAndFolderPhone = filePhon.Replace(textboxPhone, "");
                string pathPhInCom = textboxComp + fileNameAndFolderPhone;
                string pathComInPhon = textboxPhone + fileNameAndFolderPhone;
                string pathPhone = filePhon;
                var findFileFromPhone = context.PhoneModels.FirstOrDefault(file => file.Name == fileNameAndFolderPhone);
                var findPhoneFileFromComp = context.ComputerModels.FirstOrDefault(file => file.Name == fileNameAndFolderPhone);

                //если файла нет в бд телефона
                if (findFileFromPhone == null)
                {
                    insert.InsertInDbPhone(pathPhone, fileNameAndFolderPhone);
                }
                //если файла нет в папке компьютера
                if (Array.IndexOf(filesComp, pathPhInCom) == -1)
                {
                    //если файла нет в бд компьютера
                    if (findPhoneFileFromComp == null)
                    {
                        insert.InsertFileIfNotInDbComp(fileNameAndFolderPhone, pathPhone, pathPhInCom);
                    }
                    //файл есть в бд компьютера
                    else
                    {
                        delete.Delete(pathPhone, pathPhInCom, findPhoneFileFromComp, findFileFromPhone);
                    }
                }
                //файл есть в папке компьютера
                else
                {
                    //если файла нет в бд компьютера
                    if (findPhoneFileFromComp == null)
                    {
                        update.UpdateIfNotInDbComp(fileNameAndFolderPhone, pathPhone, pathPhInCom);
                    }
                    //файл есть в бд компьютера
                    else
                    {
                        update.UpdateIfInDbComp(fileNameAndFolderPhone, pathPhone, pathPhInCom,
                                            findPhoneFileFromComp, findFileFromPhone);
                    }
                }
            }
            //для файлов с компьютера
            foreach (var fileComp in filesComp)
            {
                string fileNameAndFolderComp = fileComp.Replace(textboxComp, "");
                string pathPhInCom = textboxComp + fileNameAndFolderComp;
                string pathComInPhon = textboxPhone + fileNameAndFolderComp;
                string pathComp = fileComp;
                var findFileFromPhone = context.PhoneModels.FirstOrDefault(file => file.Name == fileNameAndFolderComp);
                var findFileFromComp = context.ComputerModels.FirstOrDefault(file => file.Name == fileNameAndFolderComp);
                //если файла нет в бд компьютера
                if (findFileFromComp == null)
                {
                    insert.InsertInDbComp(pathComp, fileNameAndFolderComp);
                }
                //если файла нет в папке телефона
                if (Array.IndexOf(filesPhone, pathComInPhon) == -1)
                {
                    //если файла нет в бд телефона
                    if (findFileFromPhone == null)
                    {
                        insert.InsertFileIfNotInDbPhone(fileNameAndFolderComp, pathComp, pathComInPhon);
                    }
                    //если файл есть в бд телефона
                    else
                    {
                        delete.Delete(pathComp, pathComInPhon, findFileFromComp, findFileFromPhone);
                    }
                }
                //если файл есть в папке телефона
                else
                {
                    //если файла нет в бд телефона
                    if (findFileFromPhone == null)
                    {
                        update.UpdateIfNotInDbPhone(fileNameAndFolderComp, pathComp, pathComInPhon);
                    }
                    //если файл есть в бд телефона
                    else
                    {
                        update.UpdateIfInDbPhone(fileNameAndFolderComp, pathComp, pathComInPhon,
                                                findFileFromPhone, findFileFromComp);
                    }
                }
            }
        }