コード例 #1
0
        private void BtnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(txtNomCampañaMod.Text) || (string.IsNullOrWhiteSpace(dTPickFechaDesdeMod.Text)) ||
                    (string.IsNullOrWhiteSpace(dTPickFechaHastaMod.Text)) || (string.IsNullOrWhiteSpace(nUDuracionMod.Text)) ||
                    (string.IsNullOrWhiteSpace(nUpDesdeHoraMod.Text)) || (string.IsNullOrWhiteSpace(nUpHastaHoraMod.Text)))

                {
                    throw new FaltanDatosObligatorios("Los campos no pueden quedar vacios");
                }
                DateTime pFechaInicio = new DateTime(this.dTPickFechaDesdeMod.Value.Year, this.dTPickFechaDesdeMod.Value.Month, this.dTPickFechaDesdeMod.Value.Day, Convert.ToInt32(this.nUpDesdeHoraMod.Text), 0, 0);
                DateTime pFechaFin    = new DateTime(this.dTPickFechaHastaMod.Value.Year, this.dTPickFechaHastaMod.Value.Month, this.dTPickFechaHastaMod.Value.Day, Convert.ToInt32(this.nUpHastaHoraMod.Text), 0, 0);
                int      pHoraInicio  = Convert.ToInt32(nUpDesdeHoraMod.Value);
                int      pHoraFin     = Convert.ToInt32(nUpHastaHoraMod.Value);
                iControladorCampaña.ValidarFecha(pFechaInicio, pFechaFin);
                iControladorCampaña.ValidarHora(pHoraInicio, pHoraFin);
                if (control == true)
                {
                    iControladorCampaña.ModificarCampaña(mCampañaMod, txtNomCampañaMod.Text, pFechaInicio, pFechaFin, pFechaInicio.TimeOfDay, pFechaFin.TimeOfDay, Convert.ToInt32(nUDuracionMod.Text), listaImagenesMod);
                }
                else
                {
                    iControladorCampaña.ModificarCampaña(mCampañaMod, txtNomCampañaMod.Text, pFechaInicio, pFechaFin, pFechaInicio.TimeOfDay, pFechaFin.TimeOfDay, Convert.ToInt32(nUDuracionMod.Text), iControladorImagen.ListaImagensPorCampañaId(mCampañaMod.CampañaId));
                }

                MessageBox.Show("La campaña se modifico correctamente", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LimpiarPantallaMod();
            }
            catch (ExcepcionControlFechas msg)
            {
                MessageBox.Show(msg.Message, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (FaltanDatosObligatorios ex)
            {
                MessageBox.Show(ex.Message, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
コード例 #2
0
        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);
            }
        }