FtpConfigUC.cs
1 using System;
2 using System.Windows.Forms;
4 using sage.ew.global;
6 using sage.ew.interficies;
7 
8 namespace sage.addons.offline.Visual.UserControls
9 {
13  public partial class
14  FtpConfigUC : UserControl
15  {
16  #region Propiedades
17 
21  public Negocio.Mantes.ConfComOffline _Negocio { get; set; } = null;
22 
26  public OneDriveConfig _OneDriveConfig { get; set; } = null;
27 
31  public bool ComprobacionEjecutada
32  {
33  get
34  {
35  if(_lComprobacionEjecutada)
36  {
37  //Verificamos que coincida con la que se ha verificado
38  if (_configuracionComprobada != null)
39  _lComprobacionEjecutada = ObtenerConfiguracion().Equals(_configuracionComprobada);
40  else
41  _lComprobacionEjecutada = false;
42  }
43  return _lComprobacionEjecutada;
44  }
45  private set { _lComprobacionEjecutada = value; }
46  }
47  bool _lComprobacionEjecutada = false;
48  private FtpUserData _configuracionComprobada = null;
49 
53  public bool _ReadOnly
54  {
55  get
56  {
57  return _lReadOnly;
58  }
59  set
60  {
61  _lReadOnly = value;
62  SetReadOnlyTo(value);
63  }
64  }
65  private bool _lReadOnly = false;
66 
67  #endregion Propiedades
68 
69  #region Constructores
70 
74  public FtpConfigUC()
75  {
76  InitializeComponent();
77 
78  if (!EW_GLOBAL._EsEjecutable)
79  return;
80 
81  _OneDriveConfig = new OneDriveConfig
82  {
83  Location = new System.Drawing.Point(125, 140)
84  };
85  Controls.Add(_OneDriveConfig);
86 
87  ewradiobutton1.CheckedChanged += new EventHandler(ewradiobutton1_CheckedChanged);
88  ewradiobutton2.CheckedChanged += new EventHandler(ewradiobutton2_CheckedChanged);
89  }
90 
91  #endregion Constructores
92 
93  private void SetReadOnlyTo(bool valor)
94  {
95  if (!EW_GLOBAL._EsEjecutable)
96  return;
97 
98  txtServidor.ReadOnly = valor;
99  nudPuerto.ReadOnly = valor;
100  txtProxi.ReadOnly = valor;
101  txtUsuario.ReadOnly = valor;
102  txtPassword.ReadOnly = valor;
103  txtCarpeta.ReadOnly = valor;
104  btProbarConfiguracion.Enabled = !valor;
105  chkActivo.Enabled = !valor;
106  chkUseSSL.Enabled = !valor;
107  chkValidateFTPSCert.Enabled = !valor && chkUseSSL.Checked;
108 
109  _OneDriveConfig._ReadOnly = valor;
110 
111  ewradiobutton1.Enabled = !_lReadOnly;
112  ewradiobutton2.Enabled = !_lReadOnly;
113 
114  if (!_lReadOnly)
115  {
116  ewradiobutton2_CheckedChanged(ewradiobutton2, null);
117  }
118 
119  }
120 
121  private void BtProbarConfiguracion_Click(object sender, EventArgs e)
122  {
123  ProbarConfiguracion();
124  }
130  public bool ProbarConfiguracion(bool final=false)
131  {
132  bool ret = false;
133  if (!ValidarParametros(out string mensaje))
134  {
135  ShowMessage(mensaje);
136  return ret;
137  }
138 
139  var configuracionFtp = ObtenerConfiguracion();
140  AsistenteOfflineBizRule bzr = DependencyInjector.Instance.Retrieve<AsistenteOfflineBizRule>();
141  bzr.IsFTP = true;
142  bzr.ftp_user_data = configuracionFtp;
143 
144 
145  if (OfflineUploader.Comprobar_Conexion(bzr, false))
146  {
147  _configuracionComprobada = configuracionFtp;
148  _lComprobacionEjecutada = true;
149  if (!final)
150  {
151  ShowMessage("Prueba de sincronización FTP completada con éxito");
152  }
153  ret = true;
154  }
155  else
156  {
157  ShowMessage("Prueba de sincronización FTP no completada" + Environment.NewLine + Environment.NewLine + bzr.ftp_user_data.error_message);
158  bzr.ftp_user_data.error_message = "";
159  }
160  return ret;
161  }
162 
163 
164  private bool ValidarParametros(out string mensaje)
165  {
166  var parametrosOk = true;
167  mensaje = string.Empty;
168 
169  if(string.IsNullOrWhiteSpace(_Negocio.Servidor))
170  {
171  parametrosOk = false;
172  mensaje += "El servidor no puede estar en blanco" + Environment.NewLine;
173  }
174 
175  if (string.IsNullOrWhiteSpace(_Negocio.Usuario))
176  {
177  parametrosOk = false;
178  mensaje += "El usuario no puede estar en blanco" + Environment.NewLine;
179  }
180 
181  if (string.IsNullOrWhiteSpace(_Negocio.Password))
182  {
183  parametrosOk = false;
184  mensaje += "El password no puede estar en blanco" + Environment.NewLine;
185  }
186 
187  //Proxi, carpeta y puerto puede no requerir datos adicionales
188 
189  return parametrosOk;
190  }
191 
192  internal FtpUserData ObtenerConfiguracion()
193  {
194  var config = new FtpUserData
195  {
196  server = txtServidor.Text.TrimEnd(),
197  user = txtUsuario.Text.TrimEnd(),
198  password = txtPassword.Text.TrimEnd(),
199  port = nudPuerto.Value,
200  proxy = txtProxi.Text.TrimEnd(),
201  rutaserv = txtCarpeta.Text.TrimEnd(),
202  ftp_activo = chkActivo.Checked,
203  use_ssl_tls = chkUseSSL.Checked,
204  validate_server_cert = chkValidateFTPSCert.Checked,
205  };
206  return config;
207  }
208 
209  //internal void EstablecerConfiguracion(FtpUserData config)
210  //{
211  // txtServidor.Text = config.server.TrimEnd();
212  // txtUsuario.Text = config.user.TrimEnd();
213  // txtPassword.Text = config.password.TrimEnd();
214  // nudPuerto.Value = config.port;
215  // txtProxi.Text = config.proxy.TrimEnd();
216  // txtCarpeta.Text = config.rutaserv.TrimEnd();
217  // }
218 
223  protected void ShowMessage(string message)
224  {
225  MessageBox.Show(message, "Configuración conexión FTP", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
226  }
230  public void _Binding()
231  {
232  _Negocio.GetCadenaEncriptada(_Negocio._ConfiguracionFtp);
233 
234  if (ewradiobuttonGroup1.DataBindings["_SelectedItemIndexEx"] != null)
235  ewradiobuttonGroup1.DataBindings[0].ReadValue();
236  else
237  ewradiobuttonGroup1.DataBindings.Add("_SelectedItemIndexEx", _Negocio, "_Conexion", true);
238 
239  if (txtServidor.DataBindings["Text"] != null)
240  txtServidor.DataBindings[0].ReadValue();
241  else
242  txtServidor.DataBindings.Add("Text", _Negocio, "Servidor", true);
243 
244  if (nudPuerto.DataBindings["Value"] != null)
245  nudPuerto.DataBindings[0].ReadValue();
246  else
247  nudPuerto.DataBindings.Add("Value", _Negocio, "Puerto", true);
248 
249  if (txtProxi.DataBindings["Text"] != null)
250  txtProxi.DataBindings[0].ReadValue();
251  else
252  txtProxi.DataBindings.Add("Text", _Negocio, "Proxy", true);
253 
254  if (chkUseSSL.DataBindings["Checked"] != null)
255  chkUseSSL.DataBindings[0].ReadValue();
256  else
257  chkUseSSL.DataBindings.Add("Checked", _Negocio, "Use_SSL_TLS", true);
258 
259  if (chkValidateFTPSCert.DataBindings["Checked"] != null)
260  chkValidateFTPSCert.DataBindings[0].ReadValue();
261  else
262  chkValidateFTPSCert.DataBindings.Add("Checked", _Negocio, "Validate_Server_Cert", true);
263 
264  if (chkActivo.DataBindings["Checked"] != null)
265  chkActivo.DataBindings[0].ReadValue();
266  else
267  chkActivo.DataBindings.Add("Checked", _Negocio, "FTP_Activo", true);
268 
269  if (txtUsuario.DataBindings["Text"] != null)
270  txtUsuario.DataBindings[0].ReadValue();
271  else
272  txtUsuario.DataBindings.Add("Text", _Negocio, "Usuario", true);
273 
274  if (txtPassword.DataBindings["Text"] != null)
275  txtPassword.DataBindings[0].ReadValue();
276  else
277  txtPassword.DataBindings.Add("Text", _Negocio, "Password", true);
278 
279  if (txtCarpeta.DataBindings["Text"] != null)
280  txtCarpeta.DataBindings[0].ReadValue();
281  else
282  txtCarpeta.DataBindings.Add("Text", _Negocio, "CarpetaSrv", true);
283 
284  _OneDriveConfig._Negocio = _Negocio;
285  _OneDriveConfig._Binding();
286  }
287 
288  private void ewradiobutton2_CheckedChanged(object sender, EventArgs e)
289  {
290  ew.objetos.ewradiobutton radio = (ew.objetos.ewradiobutton)sender;
291  if (radio.Checked)
292  {
293  if (!_lReadOnly)
294  {
295  txtServidor.ReadOnly = true;
296  nudPuerto.ReadOnly = true;
297  txtProxi.ReadOnly = true;
298  txtUsuario.ReadOnly = true;
299  txtPassword.ReadOnly = true;
300  txtCarpeta.ReadOnly = true;
301  btProbarConfiguracion.Enabled = false;
302  chkActivo.Enabled = false;
303  chkUseSSL.Enabled = false;
304  chkValidateFTPSCert.Enabled = false;
305 
306  _OneDriveConfig.Enabled = true;
307  _OneDriveConfig._BloquearControles(false); //Internamente invoca al _Refresh de o365 que habilita o no los diferentes controles
308  }
309  }
310  else
311  {
312  _OneDriveConfig.Enabled = false;
313  }
314  }
315 
316  private void ewradiobutton1_CheckedChanged(object sender, EventArgs e)
317  {
318  ew.objetos.ewradiobutton radio = (ew.objetos.ewradiobutton)sender;
319  if (radio.Checked)
320  {
321  if (!_lReadOnly)
322  {
323  txtServidor.ReadOnly = false;
324  nudPuerto.ReadOnly = false;
325  txtProxi.ReadOnly = false;
326  txtUsuario.ReadOnly = false;
327  txtPassword.ReadOnly = false;
328  txtCarpeta.ReadOnly = false;
329  btProbarConfiguracion.Enabled = true;
330  chkActivo.Enabled = true;
331  chkUseSSL.Enabled = true;
332  chkValidateFTPSCert.Enabled = chkUseSSL.Checked;
333 
334  _OneDriveConfig.Enabled = false;
335  }
336  }
337  }
338 
339  private void txtCarpeta_Validating(object sender, System.ComponentModel.CancelEventArgs e)
340  {
341  string lcValor = txtCarpeta.Text.Trim();
342 
343  if (!string.IsNullOrWhiteSpace(lcValor) && lcValor != "/")
344  {
345  if (!lcValor.StartsWith("/"))
346  {
347  lcValor = "/" + lcValor;
348  }
349 
350  if (!lcValor.EndsWith("/"))
351  {
352  lcValor = lcValor + "/";
353  }
354  }
355 
356  txtCarpeta.Text = lcValor;
357  }
358 
359  private void chkUseSSL_CheckedChanged(object sender, EventArgs e)
360  {
361  if (chkUseSSL.Checked && chkUseSSL.Enabled)
362  chkValidateFTPSCert.Enabled = true;
363  else
364  chkValidateFTPSCert.Enabled = false;
365  }
366  }
367 
371  public class ewradiobuttonGroupEx : ew.objetos.ewradiobuttonGroup
372  {
376  public int _SelectedItemIndexEx
377  {
378  get
379  {
380  return _SelectedItemIndex - 1;
381  }
382  set
383  {
384  _SelectedItemIndex = value+1;
385  }
386  }
387  }
388 }
void ShowMessage(string message)
Mostrar un mensaje de aviso
Definition: FtpConfigUC.cs:223
UserControl para configurar una cuenta FTP
bool ProbarConfiguracion(bool final=false)
Comprobar configuración
Definition: FtpConfigUC.cs:130
object Retrieve(Type T)
Resuelve objeto de tipo T
UserControl para configurar una cuenta FTP
Definition: FtpConfigUC.cs:13
void _Binding()
Bindear los objetos contenidos en la página (interficie ITabMante)
Definition: FtpConfigUC.cs:230
Clase Inyector de dependencias para resolver las dependencias