private void BtnAceptarCampaña_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(txBoxNombreAgregarCamp.Text) || (string.IsNullOrWhiteSpace(dTPickFechaDesde.Text)) || (string.IsNullOrWhiteSpace(dTPickFechaHasta.Text)) || (string.IsNullOrWhiteSpace(nUDuracionAgregar.Text)) || (string.IsNullOrWhiteSpace(nUpDesdeHoraAgregar.Text)) || (string.IsNullOrWhiteSpace(nUpHastaHoraAgregar.Text))) { throw new FaltanDatosObligatorios("Los campos no pueden quedar vacios"); } if (txBoxNombreAgregarCamp.Text != "") { if (iControladorCampaña.ConsultarExistenciaNombreCampaña(txBoxNombreAgregarCamp.Text) == true) { throw new ExisteNombre("Ya existe campaña con ese nombre"); } } //Métodos de control de los campos fechas, horas y duración. DateTime pFechaInicio = new DateTime(this.dTPickFechaDesde.Value.Year, this.dTPickFechaDesde.Value.Month, this.dTPickFechaDesde.Value.Day, Convert.ToInt32(this.nUpDesdeHoraAgregar.Text), 0, 0); DateTime pFechaFin = new DateTime(this.dTPickFechaHasta.Value.Year, this.dTPickFechaHasta.Value.Month, this.dTPickFechaHasta.Value.Day, Convert.ToInt32(this.nUpHastaHoraAgregar.Text), 0, 0); int pHoraInicio = Convert.ToInt32(nUpDesdeHoraAgregar.Value); int pHoraFin = Convert.ToInt32(nUpHastaHoraAgregar.Value);; iControladorCampaña.ValidarFecha(pFechaInicio, pFechaFin); iControladorCampaña.ValidarHora(pHoraInicio, pHoraFin); if (listaImagenes.Count == 0) { throw new FaltanDatosObligatorios("Faltar Cargar Imágenes a la Campaña"); } iControladorCampaña.AgregarCampaña(txBoxNombreAgregarCamp.Text, pFechaInicio, pFechaFin, pFechaInicio.TimeOfDay, pFechaFin.TimeOfDay, Convert.ToInt32(nUDuracionAgregar.Text), listaImagenes); MessageBox.Show("Registro Correcto", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); contador = 0; /// LimpiarPantallaAlta(); } catch (ExisteNombre msg) { MessageBox.Show(msg.Message, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (ExcepcionControlFechas msg) { MessageBox.Show(msg.Message, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (FaltanDatosObligatorios ex) { MessageBox.Show(ex.Message, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btn_guardarCampaña_Click(object sender, EventArgs e) { try { //Variable auxiliar con tiempo máximo para la hora. TimeSpan tiempoMaximo = new TimeSpan(23, 59, 59); //Variable auxiliar para controlar la duracion total de todas las imagenes de la campaña. TimeSpan duracionTotalImagenes = new TimeSpan(00, 00, 00); //Variable auxiliar donde guardamos las imagenes de la campaña. List <Imagen> imagenesCampaña = new List <Imagen>(); //Controles sobre las fechas y horas if ((DGV_imagenes.Rows.Count > 0) && //Si la cantidad de filas de la grilla es mayor que 0 (TimeSpan.Parse(mtxt_horaFin.Text) < tiempoMaximo || TimeSpan.Parse(mtxt_horaInicio.Text) < tiempoMaximo) && //HoraInicio u HoraFin deben ser menores a (23,59,59) (TimeSpan.Parse(mtxt_horaInicio.Text) < TimeSpan.Parse(mtxt_horaFin.Text)) && //HoraInicio menor a HoraFin (Convert.ToDateTime(dtp_fechaInicio.Text) < Convert.ToDateTime(dtp_fechaFin.Text)) && //FechaInicio menor a FechaFin (Convert.ToDateTime(dtp_fechaInicio.Text) >= DateTime.Today && Convert.ToDateTime(dtp_fechaFin.Text) > DateTime.Today)) //Fecha de inicio o igual a la fecha actual y fecha de fin mayor a a la fecha actual { //Llenamos la campaña nueva con los nuevos atributos ingresados. Campaña campaña = new Campaña { iNombre = txt_nombreCampaña.Text, iHoraFin = TimeSpan.Parse(mtxt_horaFin.Text), iHoraInicio = TimeSpan.Parse(mtxt_horaInicio.Text), iFechaInicio = Convert.ToDateTime(dtp_fechaInicio.Text), iFechaFin = Convert.ToDateTime(dtp_fechaFin.Text), }; //Insertamos las imágenes de la grilla a una lista para poder usarlas en los métodos de la fachada, //tanto en agregar campaña, como en modificar. for (int i = 0; i < DGV_imagenes.Rows.Count; i++) { string ruta = (DGV_imagenes.Rows[i].Cells[1].Value.ToString()); int posicion = (Convert.ToInt32(DGV_imagenes.Rows[i].Cells[2].Value)); TimeSpan duracion = TimeSpan.Parse(DGV_imagenes.Rows[i].Cells[3].Value.ToString()); //Controlamos que no se agreguen imágenes con posiciones repetidas o inválidas. if (posicion > 0 && posicion <= DGV_imagenes.Rows.Count && //Cantidad de imagenes de la campaña. (!imagenesCampaña.Any(imagenesActuales => imagenesActuales.iPosicion == posicion))) //Si ya existe la posición. { Imagen imagen = new Imagen { iRuta = ruta, iDuracion = duracion, iPosicion = posicion, }; //Actualizamos el contador de duración total de las imágenes. duracionTotalImagenes = duracionTotalImagenes.Add(imagen.iDuracion); imagenesCampaña.Add(imagen); } else //Si la posición ingresada para la imagen es inválida. { imagenesCampaña = null; throw new PosicionImagenException("Error! Alguna de las posiciones de las imágenes están mal o repetidas. Por favor reviselas nuevamente."); } }//end del for con las imágenes de la grilla. //La suma de duraciones de las imágenes de la campaña debe ser menor a la diferencia de tiempo entre la HoraInicio y HoraFin. if (duracionTotalImagenes > (TimeSpan.Parse(mtxt_horaFin.Text).Subtract(TimeSpan.Parse(mtxt_horaInicio.Text)))) { { MessageBox.Show("Error! La duración total de las imágenes de la campaña excede al tiempo que se mostrará la campaña"); } } else //Duración total es menor o igual a la diferencia de tiempo. { if (iCampaña == null)//Es decir que se está agregando NUEVA campaña. { campaña.iImagenes = imagenesCampaña; iFachadaCampaña.AgregarCampaña(campaña); MessageBox.Show("La campaña fue creada con éxito!"); this.Close(); } else//Si la campaña es diferente de nula, es decir que estamos MODIFICANDO una campaña existente. { //Para el modificar necesitamos la id y al principio no se la pasamos puesto que //hay codigo que tambien aplica para el agregar, pero en el id difiere ya que este esta dado //y en el agregar no. Campaña campañaAModificar = iFachadaCampaña.ObtenerCampaña(iCampaña.iIdCampaña); campañaAModificar.iHoraInicio = campaña.iHoraInicio; campañaAModificar.iHoraFin = campaña.iHoraFin; campañaAModificar.iFechaInicio = campaña.iFechaInicio; campañaAModificar.iFechaFin = campaña.iFechaFin; campañaAModificar.iNombre = campaña.iNombre; iFachadaCampaña.ModificarCampaña(campañaAModificar); #region Actualizacion de las imagenes de la campañas //Recorremos todas las imagenes del datagrid view for (int i = 0; i <= this.DGV_imagenes.Rows.Count - 1; i++) { //Si alguna posee un 1 en la columna de agregar, es porque hay que agregarla a la BD if (Convert.ToInt32(DGV_imagenes.Rows[i].Cells[4].Value) == 1) { Imagen imagenAgregar = new Imagen { iIdCampaña = iCampaña.iIdCampaña, iRuta = Convert.ToString(DGV_imagenes.Rows[i].Cells[1].Value), iPosicion = Convert.ToInt32(DGV_imagenes.Rows[i].Cells[2].Value), iDuracion = TimeSpan.Parse(Convert.ToString(DGV_imagenes.Rows[i].Cells[3].Value)) }; iFachadaImagen.AgregarImagen(imagenAgregar); } else { //Si alguna posee un 1 en la columna de modificar entonces hay que modificar //una imagen ya existente en la BD if (Convert.ToInt32(DGV_imagenes.Rows[i].Cells[5].Value) == 1) { //Obtenemos la imagen en cuestion. Imagen imagenModificar = iFachadaImagen.ObtenerImagen(Convert.ToInt32(DGV_imagenes.Rows[i].Cells[0].Value)); //Actualizamos los atributos que pueden ser modificados. imagenModificar.iRuta = Convert.ToString(DGV_imagenes.Rows[i].Cells[1].Value); imagenModificar.iPosicion = Convert.ToInt32(DGV_imagenes.Rows[i].Cells[2].Value); imagenModificar.iDuracion = TimeSpan.Parse(Convert.ToString(DGV_imagenes.Rows[i].Cells[3].Value)); //guardamos los cambios. iFachadaImagen.ModificarImagen(imagenModificar); } } } //Si se borraron imagenes que ya existian en la base de datos terminan aqui para ser eliminadas de la //base de datos. foreach (Imagen imagenEliminada in iImagenesEliminadas) { iFachadaImagen.EliminarImagen(imagenEliminada.iIdImagen); } #endregion MessageBox.Show("La campaña se ha modificado con éxito!"); this.Close(); } //IF de (iCampaña == null) } //IF de duración total de imágenes. } //IF de controles sobre Fechas y Horas. else //Si no se cumple alguno de los controles sobre Fechas y Horas. Datos erróneos ingresados. { //A la error string le concatenamos los errores segun coincidan en las condiciones de los if. string ErrorString = "Se han detectado el (o los) siguente(s) error(es): \n"; if (DGV_imagenes.Rows.Count == 0) //No hay ninguna imagen cargada. { ErrorString = ErrorString + ("• Faltan ingresar datos de imagenes \n"); } if (TimeSpan.Parse(mtxt_horaFin.Text) > tiempoMaximo || TimeSpan.Parse(mtxt_horaInicio.Text) > tiempoMaximo) //HoraInicio u HoraFin inválidas. { ErrorString = ErrorString + ("• La hora de inicio y/o de fin estan mal ingresadas. Valores validos desde 00:00:00 hasta 23:59:59 \n"); } if ((TimeSpan.Parse(mtxt_horaInicio.Text) >= TimeSpan.Parse(mtxt_horaFin.Text))) //HoraInicio mayor a HoraFin. { ErrorString = ErrorString + ("• La hora de inicio no puede ser mayor o igual a la de fin \n"); } if (Convert.ToDateTime(dtp_fechaInicio.Text) > Convert.ToDateTime(dtp_fechaFin.Text)) //FechaInicio mayor a FechaFin. { ErrorString = ErrorString + ("• La fecha de inicio no puede ser mayor que la de fin \n"); } if (Convert.ToDateTime(dtp_fechaInicio.Text) <= DateTime.Today || Convert.ToDateTime(dtp_fechaFin.Text) < DateTime.Today) //FechaInicio y fin menores a la actual. { ErrorString = ErrorString + ("• La fecha de inicio y/o fin deben ser mayores a la actual \n"); } MessageBox.Show(ErrorString); } //ELSE si no se cumplen controles de datos ingresados. } //end del try catch (FormatException) { MessageBox.Show("Error, revise los datos ingresados"); } catch (PosicionImagenException ex) { MessageBox.Show(ex.Message); } catch (CampañaNoDisponibleException ex) { MessageBox.Show(ex.Message); } }