private void buttonEditConf_EditRow(object sender, EventArgs e)
        {
            checkSelectedListViewItems();

            string id = listViewConf.SelectedItems[0].SubItems[0].Text;

            if (string.IsNullOrEmpty(id))
            {
                MessageBox.Show("Konfiguracja nie posiada identyfikatora");
                return;
            }

            BackupConfigurationData backupConfigurationData = xmlSerializeManager.GetConfigurationById(id);

            if (backupConfigurationData != null)
            {
                Form2 form2 = new Form2(backupConfigurationData);
                form2.CompletedTask += Form2_AfterClosing;
                form2.Show();
            }
            else
            {
                MessageBox.Show("Nie ma takiej konfiguracji");
                return;
            }
        }
        // zapisanie do pliku przesłanej konfiguracji
        public void SaveConfiguration(BackupConfigurationData backupConf, CallBackDel callBack)
        {
            BackupSettings settings;

            // jeżeli plik nie istnieje to jest tworzony i zapisywane są do niego dane
            if (!fileHasAnyData())
            {
                try
                {
                    using (var fs = new FileStream(xmlFilePath, FileMode.Open))
                    {
                        settings      = new BackupSettings();
                        backupConf.Id = randomIntGuid();
                        settings.ConfigurationList.Add(backupConf);
                        xs.Serialize(fs, settings);
                    }

                    callBack(new CallBackModel {
                        Success = true, Message = "Konfiguracja została zapisana !"
                    });
                }
                catch (Exception ex)
                {
                    LogInfo.LogErrorWrite("Nie udało się zapisać konfiguracji backup'u do pustego pliku", ex);
                    callBack(new CallBackModel {
                        Success = false
                    });
                }
            }
            else // jeżeli plik istnieje to dane są 'dokładane' na koniec
            {
                try
                {
                    using (var fs = new FileStream(xmlFilePath, FileMode.Open))
                    {
                        settings = (BackupSettings)xs.Deserialize(fs);
                        fs.SetLength(0);
                        backupConf.Id = randomIntGuid();
                        settings.ConfigurationList.Add(backupConf);
                        xs.Serialize(fs, settings);
                    }

                    callBack(new CallBackModel {
                        Success = true, Message = "Konfiguracja została zapisana !"
                    });
                }
                catch (Exception ex)
                {
                    LogInfo.LogErrorWrite("Nie udało się zapisać konfiguracji backup'u do pliku", ex);
                    callBack(new CallBackModel {
                        Success = false
                    });
                }
            }
        }
        private void initFields(BackupConfigurationData backupConfigurationData)
        {
            loadComboboxList();

            textBoxFileName.Text = backupConfigurationData.FileName;
            textBoxId.Text       = backupConfigurationData.Id;
            comboBoxDatabaseName.SelectedIndex = comboBoxDatabaseName.FindStringExact(backupConfigurationData.DatabaseName);
            textBoxLocalDirectory.Text         = backupConfigurationData.LocalDirectory;
            numericBoxBackupDays.Value         = backupConfigurationData.BackupDays;
            checkBoxSendToFtp.Checked          = backupConfigurationData.SendToFtp;
            textBoxFtpDirectory.Text           = backupConfigurationData.SendToFtp ? backupConfigurationData.FtpDirectory : string.Empty;
        }
        private BackupConfigurationData getFormData()
        {
            BackupConfigurationData model = new BackupConfigurationData()
            {
                FileName       = textBoxFileName.Text,
                DatabaseName   = (string)comboBoxDatabaseName.SelectedItem,
                LocalDirectory = textBoxLocalDirectory.Text,
                BackupDays     = (int)numericBoxBackupDays.Value,
                SendToFtp      = checkBoxSendToFtp.Checked,
                FtpDirectory   = checkBoxSendToFtp.Checked ? textBoxFtpDirectory.Text : string.Empty
            };

            return(model);
        }
        private void buttonUtworzKopie_Click(object sender, EventArgs e)
        {
            checkSelectedListViewItems();

            string id = listViewConf.SelectedItems[0].SubItems[0].Text;

            if (string.IsNullOrEmpty(id))
            {
                MessageBox.Show("Konfiguracja nie posiada identyfikatora");
                return;
            }
            BackupConfigurationData backupConfiguration = xmlSerializeManager.GetConfigurationById(id);

            togglePercentBar(true);
            smoManager.CreateBackup(backupConfiguration, backupPercentComplete, backupComplete);
        }
        // zaaktualizowanie pliku konfiguracyjnego
        public void UpdateConfiguration(string id, BackupConfigurationData backupConf, CallBackDel callBack)
        {
            // pobranie danych z pliku .xml
            var backupSettings = this.ReadFromXmlFile();

            if (backupSettings == null)
            {
                callBack(new CallBackModel {
                    Success = false, Message = "Nie można odczytać pliku zawierającego konfigurację."
                });
            }

            try
            {
                // znalezienie 'odpowiedniej' konfiguracji
                var dataConf = backupSettings.ConfigurationList.Where(d => d.Id == id).FirstOrDefault();

                // zamiana danych na te przesłane z formularza i zapisanie pliku
                // z zaaktualizowaną konfiguracją
                using (var fs = new FileStream(xmlFilePath, FileMode.Open))
                {
                    dataConf.DatabaseName   = backupConf.DatabaseName;
                    dataConf.FileName       = backupConf.FileName;
                    dataConf.LocalDirectory = backupConf.LocalDirectory;
                    dataConf.FtpDirectory   = backupConf.FtpDirectory;
                    dataConf.SendToFtp      = backupConf.SendToFtp;
                    dataConf.BackupDays     = backupConf.BackupDays;
                    if (backupConf.LastBackupDay != null)
                    {
                        dataConf.LastBackupDay = backupConf.LastBackupDay;
                    }
                    fs.SetLength(0);
                    xs.Serialize(fs, backupSettings);
                }

                callBack(new CallBackModel {
                    Success = true, Message = "Konfiguracja została zapisana."
                });
            }
            catch (Exception ex)
            {
                LogInfo.LogErrorWrite($"Nie udało się zaaktualizować konfiguracji backup'u w pliku {xmlFilePath}", ex);
                callBack(new CallBackModel {
                    Success = false
                });
            }
        }
        private void buttonSaveConfiguration_Click(object sender, EventArgs e)
        {
            if (errorFields().Any())
            {
                string errorsToDisplay = string.Join(Environment.NewLine, errorFields());
                MessageBox.Show(errorsToDisplay);
                return;
            }

            BackupConfigurationData data = getFormData();

            if (string.IsNullOrEmpty(textBoxId.Text))
            {
                xmlSerialize.SaveConfiguration(data, callBackDel);
            }
            else
            {
                xmlSerialize.UpdateConfiguration(textBoxId.Text, data, callBackDel);
            }
        }
        public void CreateBackup(BackupConfigurationData configurationData,
                                 PercentCompleteEventHandler backup_PercentComplete = null,
                                 ServerMessageEventHandler backup_Complete          = null,
                                 ServerMessageEventHandler backup_Information       = null)
        {
            Backup backup = new Backup();

            backup.Action   = BackupActionType.Database;
            backup.Database = configurationData.DatabaseName;

            string backupFileFullPath = getBackupFileFullPath(configurationData.FileName, configurationData.LocalDirectory);

            backup.Incremental = backupIncremental(configurationData.Id, backupFileFullPath);
            backup.Devices.AddDevice(backupFileFullPath, DeviceType.File);

            backup.Initialize = false;
            try {
                backup.PercentCompleteNotification = 5;
                if (backup_PercentComplete != null)
                {
                    backup.PercentComplete += new PercentCompleteEventHandler(backup_PercentComplete);
                }
                if (backup_Complete != null)
                {
                    backup.Complete += new ServerMessageEventHandler(backup_Complete);
                }
                if (backup_Information != null)
                {
                    backup.Information += new ServerMessageEventHandler(backup_Information);
                }

                backup.SqlBackupAsync(server);
            }
            catch (Exception ex)
            {
                LogInfo.LogErrorWrite($"Nie można utworzyć backapu bazy danych {configurationData.DatabaseName}", ex);
            }
        }
 public Form2(BackupConfigurationData backupConfigurationData) : this()
 {
     initFields(backupConfigurationData);
 }