private void LoadConfigurations() { using (SelfMailerDataContext context = new SelfMailerDataContext()) { IEnumerable<MailServers> query1 = context.ExecuteQuery<MailServers>("SELECT * FROM MailServers ORDER BY Host"); foreach (MailServers mailServer in query1) { IEnumerable<Senders> query2 = context.ExecuteQuery<Senders>("SELECT S.* FROM Senders AS S INNER JOIN MailServerSender AS MSS ON S.ID = MSS.Sender_ID WHERE MSS.MailServer_ID = {0}", mailServer.ID); foreach (Senders sender in query2) { this.ConfigList.Items.Add(new ComboBoxItem(mailServer.ID, sender.ID, mailServer.Host + " - " + sender.Name)); } } } }
private void ConfigList_SelectedIndexChanged(object sender, EventArgs e) { ComboBoxItem result = this.ConfigList.SelectedItem as ComboBoxItem; using (SelfMailerDataContext context = new SelfMailerDataContext()) { MailServers mailServers = context.MailServers.Single<MailServers>(x => x.ID == result.MailServerKey); Senders senders = context.Senders.Single<Senders>(x => x.ID == result.SenderKey); this.FromName.Text = senders.Name; this.FromEmail.Text = senders.Email; this.Host.Text = mailServers.Host; this.Username.Text = mailServers.Username; if (mailServers.Password_AllowSave) { this.Password.Text = mailServers.Password_Value; } } }
private void Save_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(this.Host.Text)) this.errorProvider.SetError(this.Host, "Le champ Hôte doit être complété."); else if (this.ValidateChildren()) { using (SelfMailerDataContext context = new SelfMailerDataContext()) { using (TransactionScope transaction = new TransactionScope()) { MailServers newMailServer; Senders newSender; if (this.ConfigList.SelectedIndex >= 0) { ComboBoxItem selected = this.ConfigList.SelectedItem as ComboBoxItem; newMailServer = context.MailServers.Single<MailServers>(x => x.ID == selected.MailServerKey); newSender = context.Senders.Single<Senders>(x => x.ID == selected.SenderKey); } else { newMailServer = context.MailServers.SingleOrDefault<MailServers>(x => x.Host == this.Host.Text && x.Username == this.Username.Text && x.Password_Value == this.Password.Text); if (newMailServer == null) { newMailServer = new MailServers(); context.MailServers.InsertOnSubmit(newMailServer); } newSender = context.Senders.SingleOrDefault<Senders>(x => x.Name == this.FromName.Text && x.Email == this.FromEmail.Text); if (newSender == null) { newSender = new Senders(); context.Senders.InsertOnSubmit(newSender); } } newMailServer.Host = this.Host.Text; newMailServer.Username = this.Username.Text; newMailServer.Password_Value = this.Password.Text; newMailServer.Password_AllowSave = true; newSender.Name = this.FromName.Text; newSender.Email = this.FromEmail.Text; context.SubmitChanges(); MailServerSender rel = context.MailServerSender.SingleOrDefault<MailServerSender>(x => x.MailServer_ID == newMailServer.ID && x.Sender_ID == newSender.ID); if (rel == null) { rel = new MailServerSender(); rel.MailServer_ID = newMailServer.ID; rel.Sender_ID = newSender.ID; context.MailServerSender.InsertOnSubmit(rel); } context.SubmitChanges(); transaction.Complete(); } } } MessageBox.Show("La configuration a été enregistrée."); this.LoadConfigurations(); }