示例#1
0
        /// <summary>
        /// Genera el ciclo de vida del paquete, cambiando su estado cada 10 segundos
        /// Al llegar al estado entregado, se guarda el paquete en la base de datos especificada en PaqueteDAO
        /// </summary>
        public void MockCicloDeVida()
        {
            do
            {
                Thread.Sleep(10000);
                if (this.estado == EEstado.Ingresado)
                {
                    this.estado = EEstado.EnViaje;
                }
                else
                {
                    this.estado = EEstado.Entregado;
                }
                InformaEstado(this, EventArgs.Empty);
            } while (this.estado != EEstado.Entregado);

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
示例#2
0
        public void MockCicloDeVida()
        {
            while (Estado != EEstado.Entregado)
            {
                this.InformaEstado.Invoke(this, null);
                Thread.Sleep(1000);

                if (this.Estado == EEstado.Ingesado)
                {
                    this.Estado = EEstado.EnViaje;
                }
                else if (this.Estado == EEstado.EnViaje)
                {
                    this.Estado = EEstado.Entregado;
                }
            }
            this.InformaEstado.Invoke(this, null);
            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#3
0
 /// <summary>
 /// MockCicloDeVida hará que el paquete cambie de estado de la siguiente forma:
 //Colocar una demora de 4 segundos.
 //Pasar al siguiente estado.
 //Informar el estado a través de InformarEstado. EventArgs no tendrá ningún dato extra.
 //Repetir las acciones desde el punto A hasta que el estado sea Entregado.
 //Finalmente guardar los datos del paquete en la base de datos
 /// </summary
 public void MockCicloDeVida()
 {
     do
     {
         Thread.Sleep(4000);
         if (this.estado == EEstado.Ingresado)
         {
             this.estado = EEstado.EnViaje;
         }
         else if (this.estado == EEstado.EnViaje)
         {
             this.estado = EEstado.Entregado;
         }
         this.InformarEstado(this, new EventArgs());
     } while (this.estado != EEstado.Entregado);
     if (this.Estado == EEstado.Entregado)
     {
         try
         {
             PaqueteDAO.Insertar(this);
         }
         catch (Exception)
         {
         }
     }
 }
示例#4
0
        /// <summary>
        /// Inserta un paquete en la base de datos asociada a la aplicación
        /// </summary>
        /// <param name="p">Paquete a insertar</param>
        /// <returns>True si logró insertar el paquete. False en caso contrario. Exception si </returns>
        public static bool Insertar(Paquete p)
        {
            bool retorno = false;

            comando.Connection  = conexion;
            comando.CommandType = CommandType.Text;
            comando.CommandText = "INSERT INTO [correo-sp-2017].[dbo].[Paquetes] (direccionEntrega, trackingID, alumno) VALUES ('" + p.DireccionEntrega
                                  + "', '" + p.TrackingID + "', 'Rouaux,Santiago')";

            try
            {
                conexion.Open();
                if (comando.ExecuteNonQuery() > 0)
                {
                    retorno = true;
                }
            }
            catch (Exception)
            {
                PaqueteDAO.ErrorBaseDeDatos("No se logró conexión con la base de datos");
            }
            finally
            {
                if (conexion.State == ConnectionState.Open)
                {
                    conexion.Close();
                }
            }
            return(retorno);
        }
示例#5
0
 public void MockCicloDeVida()
 {
     while (this.Estado != EEstado.Entregado)
     {
         Thread.Sleep(4000);
         if (this.Estado == EEstado.Ingresado)
         {
             this.Estado = EEstado.EnViaje;
         }
         else if (this.Estado == EEstado.EnViaje)
         {
             this.Estado = EEstado.Entregado;
         }
         DelegadoEstado delegado = this.InformarEstado;
         delegado(this, null);
     }
     try
     {
         PaqueteDAO.Insertar(this);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
示例#6
0
        public void MockCicloDeVida()
        {
            do
            {
                System.Threading.Thread.Sleep(4000);

                switch (this.Estado)
                {
                case EEstado.Ingresado:
                    this.Estado = EEstado.EnViaje;
                    this.InformaEstado.Invoke(this, new EventArgs());
                    break;

                case EEstado.EnViaje:
                    this.Estado = EEstado.Entregado;
                    this.InformaEstado.Invoke(this, new EventArgs());
                    break;

                default:
                    break;
                }
            }while(this.Estado != EEstado.Entregado);

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (TrackingIdRepetidoException excepcionNoEsperada)
            { throw excepcionNoEsperada; }
            catch (Exception Tira)
            { throw Tira; }
        }
示例#7
0
        public void MockCicloDeVida()
        {
            while (this.Estado != EEstado.Entregado)
            {
                Thread.Sleep(4000);
                switch (this.Estado)
                {
                case EEstado.Ingresado:
                    this.Estado = EEstado.EnViaje;
                    break;

                case EEstado.EnViaje:
                    this.Estado = EEstado.Entregado;
                    break;
                }
                DelegadoEstado delegado = this.InformaEstado;
                delegado(this, null);
            }
            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
示例#8
0
        /// <summary>
        /// Getiona el ciclo de vida del paquete, cambiando su estado,
        /// informándolo y guardándolo en la base datos al pasar a entregado.
        /// </summary>
        public void mockCicloDeVida()
        {
            try
            {
                while (this.Estado != EEstado.Entregado)
                {
                    this.InformaEstado.Invoke(this, null);

                    Thread.Sleep(4000);

                    if (this.Estado == EEstado.Ingresado)
                    {
                        this.Estado = EEstado.EnViaje;
                    }
                    else
                    {
                        this.Estado = EEstado.Entregado;
                    }
                }

                this.InformaEstado.Invoke(this, null);

                PaqueteDAO.Insertar(this);
            }
            catch (Exception e)
            {
                //throw new Exception(e.Message, e);

                /*No logré hacer llegar la excepción capturada
                 * al hilo principal*/
            }
        }
示例#9
0
 public void MockCicloDeVida()
 {
     Thread.Sleep(10000);
     if (this.Estado == EEstado.Entregado)
     {
         this.Estado = EEstado.Entregado;
         InformaEstado(this.estado, EventArgs.Empty);
     }
     if (this.Estado == EEstado.EnViaje)
     {
         InformaEstado(this.estado, EventArgs.Empty);
         this.Estado = EEstado.EnViaje;
     }
     if (this.Estado == EEstado.Ingresado)
     {
         InformaEstado(this.estado, EventArgs.Empty);
         this.Estado = EEstado.Ingresado;
     }
     try
     {
         PaqueteDAO.Insertar(this);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
 }
示例#10
0
 public void MockCicloDeVida()
 {
     do
     {
         this.InformaEstado.Invoke(this, null);
         Thread.Sleep(10000);
         if (this.Estado == EEstado.ingresado)
         {
             this.Estado = EEstado.en_viaje;
         }
         else
         {
             this.Estado = EEstado.entregado;
         }
     } while (this.Estado != EEstado.entregado);
     this.InformaEstado.Invoke(this, null);
     try
     {
         PaqueteDAO.Insertar(this); //LLAMA PARA INSERTAR EN LA BASE DE DATOS
     }
     catch (Exception e)
     {
         MessageBox.Show(e.Message, "Error Base de Datos");
         //throw new TrackingIdRepetidoException(e.Message);
     }
 }
示例#11
0
        public static bool Insertar(Paquete p)
        {
            try
            {
                string query;

                //conexion.ConnectionString = conexionParaSqlServer;
                conexion.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog =correo-sp-2017; Integrated Security = True";

                comando.CommandType = System.Data.CommandType.Text;
                comando.Connection  = conexion;

                query = String.Format("INSERT INTO Paquetes (direccionEntrega,trakingID,alumno) VALUES ('{0}',{1},'{2}'", p.DireccionEntrega, p.TrackingID, "Rodriguez_Abbul_2D");

                comando.CommandText = query;
                conexion.Open();

                return((comando.ExecuteNonQuery() > 0) ? true : false);
            }
            catch (Exception)
            {
                PaqueteDAO.eventoDeSQL("ERROR al insertar en base de datos");
                return(false);
            }
            finally
            {
                conexion.Close();
            }
        }
示例#12
0
        /// <summary>
        /// carga los datos en una base de datos SQl
        /// </summary>
        /// <param name="p">paquete a agregar</param>
        /// <returns></returns>
        public static bool Insertar(Paquete p)
        {
            bool retorno = true;

            try
            {
                PaqueteDAO.conexion.Open();
                if (!PaqueteDAO.EjecutarConsulta(p))
                {
                    retorno = false;
                }
            }
            catch (Exception e)
            {
                retorno = false;
            }
            finally
            {
                if (retorno)
                {
                    PaqueteDAO.conexion.Close();
                }
            }



            return(retorno);
        }
示例#13
0
        /// <summary>
        /// Hará que el paquete cambie de estado
        /// </summary>
        public void MockCicloDeVida()
        {
            //Recorremos los estados del paquete con un while
            while (this.estado != EEstado.Entregado)
            {
                Thread.Sleep(4000);//Genera una demora de 4 segundos

                if (this.Estado != EEstado.Entregado && this.Estado != EEstado.EnViaje)
                {
                    this.Estado = EEstado.EnViaje;
                }

                else if (this.Estado != EEstado.Entregado && this.Estado == EEstado.EnViaje)
                {
                    this.estado = EEstado.Entregado;
                }

                this.InformaEstado.Invoke(null, null);

                if (this.estado == EEstado.Entregado)
                {
                    try
                    {
                        PaqueteDAO.Insertar(this);
                    }

                    catch (Exception)
                    {
                    }
                }
            }
        }
示例#14
0
        public void MockCicloDeVida()
        {
            bool ok = false;

            while (!ok)
            {
                Thread.Sleep(10000);
                if (this._estado == EEstado.Ingresado)
                {
                    this._estado = EEstado.EnViaje;
                }
                else if (this._estado == EEstado.EnViaje)
                {
                    this._estado = EEstado.Entregado;
                }
                else if (this._estado == EEstado.Entregado)
                {
                    try
                    {
                        PaqueteDAO.Insertar(this);
                    }
                    catch (Exception e)
                    {
                        InformaEstado(e, null);
                    }
                    finally
                    {
                        ok = true;
                    }
                }
                InformaEstado(this, null);
            }
        }
示例#15
0
        public void MockCicloDeVida()
        {
            while (Estado != EEstado.Entregado)
            {
                Thread.Sleep(10000);
                switch (Estado)
                {
                case EEstado.Ingresado:
                    Estado = EEstado.EnViaje;
                    break;

                case EEstado.EnViaje:
                default:
                    Estado = EEstado.Entregado;
                    break;
                }
                this.InformaEstado(this, EventArgs.Empty);
            }
            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                //  throw new Exception(ex.Message);
            }
        }
示例#16
0
        /// <summary>
        /// Repito el ciclo y lo corto -> Estado=entregado
        /// </summary>
        public void MockClicloDeVida()
        {
            while (true)
            {
                InformaEstado.Invoke(this, EventArgs.Empty);



                Thread.Sleep(10000);
                if (this.Estado == EEstado.Entregado)
                {
                    break;
                }
                this.Estado++;
            }

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// El ciclo de vida del producto que cambia de estado hasta ser entregado
        /// </summary>
        public void MockCicloDeVida()
        {
            bool cicloDeVida = true;

            //Lanza el evento, lo duerme 4 segundos, pasa al siguiente estado hasta llegar a ser entregado
            while (cicloDeVida == true)
            {
                InformarEstado.Invoke(this, EventArgs.Empty);
                Thread.Sleep(4000);
                if (this.Estado == EEstado.Entregado)
                {
                    break;
                }
                this.Estado++;
            }

            try
            {
                //Guarda en base de datos
                PaqueteDAO.Insertar(this);
            }
            catch (Exception e)
            {
                throw new Exception("No pudo insertar en BD", e);
            }
        }
示例#18
0
        /// <summary>
        /// Hace que el paquete cambie de estado y llama a funcion que agrega sus datos en la base de datos
        /// </summary>
        public void MockCicloDeVida()
        {
            while (this.estado != EEstado.Entregado)
            {
                Thread.Sleep(4000);

                switch (this.estado)
                {
                case EEstado.Ingresado:
                {
                    this.estado = EEstado.EnViaje;
                }
                break;

                case EEstado.EnViaje:
                {
                    this.estado = EEstado.Entregado;
                }
                break;
                }

                this.InformaEstado(this, new EventArgs());
            }

            PaqueteDAO.Insertar(this);
        }
示例#19
0
        /// <summary>
        /// Cambia el estado del paquete cada 4 segundos
        /// </summary>
        public void MockCicloDeVida()
        {
            while (this.estado != EEstado.Entregado)
            {
                switch (this.estado)
                {
                case EEstado.Ingresado:
                    Thread.Sleep(4000);
                    this.Estado = EEstado.EnViaje;
                    this.InformaEstado(this, EventArgs.Empty);
                    break;

                case EEstado.EnViaje:
                    Thread.Sleep(4000);
                    this.Estado = EEstado.Entregado;
                    this.InformaEstado(this, EventArgs.Empty);
                    break;

                default:
                    break;
                }
            }
            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception exception)
            {
                throw exception;
            }
        }
示例#20
0
        /// <summary>
        /// Inserta en la db un paquete, si hay error lanza evento ErrorDAO
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Insertar(Paquete p)
        {
            bool retorno = false;

            try
            {
                comando.Connection  = conexion;
                comando.CommandType = System.Data.CommandType.Text;
                comando.CommandText = "INSERT INTO Paquetes (direccionEntrega, trackingID, alumno)" +
                                      " VALUES (@direccionEntrega, @trackingID, @alumno) ";

                comando.Parameters.Clear();
                comando.Parameters.Add(new SqlParameter("direccionEntrega", p.DireccionEntrega));
                comando.Parameters.Add(new SqlParameter("trackingID", p.TrackingID));
                comando.Parameters.Add(new SqlParameter("alumno", "Sanjurjo Gabriel Alejandro"));
                conexion.Open();

                int n = comando.ExecuteNonQuery();
                if (n == 1)
                {
                    retorno = true;
                }
            }
            catch (Exception e)
            {
                PaqueteDAO.ErrorDAO();
            }
            finally
            {
                conexion.Close();
            }
            return(retorno);
        }
示例#21
0
        /// <summary>
        /// Agrega un paquete a la lista de paquetes comprobando que el mismo ya no se encuentre guardado. Crea un hilo, lo inicializa y lo agrega a la lista de hilos. Graba los datos del paquete en la base de datos.
        /// </summary>
        /// <param name="c"></param>
        /// <param name="p"></param>
        /// <returns></returns>
        public static Correo operator +(Correo c, Paquete p)
        {
            foreach (Paquete aux in c.Paquetes)
            {
                if (aux == p)
                {
                    throw new TrackingIdRepetidoException($"El Tracking ID {aux.TrackingID} ya figura en la lista de envios.");
                }
            }

            try
            {
                c.Paquetes.Add(p);
                PaqueteDAO.Insertar(p);
                Thread hiloPaquete = new Thread(p.MockCicloDeVida);
                c.mockPaquetes.Add(hiloPaquete);
                hiloPaquete.Start();

                return(c);
            }
            catch (Exception e)
            {
                throw new Exception("Se produjo un error al intentar guardar el paquete en la base de datos.", e.InnerException);
            }
        }
示例#22
0
        /// <summary>
        /// MockCicloDeVida hará que el paquete cambie de estado de la siguiente forma:
        //a.Colocar una demora de 4 segundos.
        //b.Pasar al siguiente estado.
        //c.Informar el estado a través de InformarEstado. EventArgs no tendrá ningún dato extra.
        //d.Repetir las acciones desde el punto A hasta que el estado sea Entregado.
        //e.Finalmente guardar los datos del paquete en la base de datos
        /// </summary
        public void MockCicloDeVida()
        {
            do
            {
                Thread.Sleep(4000);                   //a

                if (this.estado == EEstado.Ingresado) //b
                {
                    this.estado = EEstado.EnViaje;
                }
                else if (this.estado == EEstado.EnViaje)
                {
                    this.estado = EEstado.Entregado;
                }

                this.InformaEstado(this.estado, new EventArgs()); //c
            } while (this.estado != EEstado.Entregado);           //d
            try
            {
                PaqueteDAO.Insertar(this); //e
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
 /// <summary>
 /// MockCicloDeVida hará que el paquete cambie de estado de la siguiente forma:
 ///   a.Colocar una demora de 4 segundos.
 ///   b.Pasar al siguiente estado.
 ///   c.Informar el estado a través de InformarEstado.EventArgs no tendrá ningún dato extra.
 ///   d.Repetir las acciones desde el punto A hasta que el estado sea Entregado.
 ///   e.Finalmente guardar los datos del paquete en la base de datos
 /// </summary>
 public void MockCicloDeVida()
 {
     do
     {
         this.InformaEstado.Invoke(this, null);
         Thread.Sleep(4000);
         if (this.Estado == EEstado.Ingresado)
         {
             this.Estado = EEstado.EnViaje;
         }
         else
         {
             this.Estado = EEstado.Entregado;
         }
     } while (this.Estado != EEstado.Entregado);
     this.InformaEstado.Invoke(this, null);
     try
     {
         PaqueteDAO.Insertar(this);
     }
     catch (Exception e)
     {
         MessageBox.Show(e.Message, "Error en Base de Datos");
     }
 }
示例#24
0
        /// <summary>
        /// Simula el ciclo de vida de un paquete, cambiado su estado desde el inicio del viaje hasta entregado,
        /// lanzando un evento ante cada cambio e insertandolo en la base de datos al finalizar.
        /// </summary>
        public void MockCicloDeVida()
        {
            while (this.estado != EEstado.Entregado)
            {
                Thread.Sleep(4000);
                switch (this.estado)
                {
                case EEstado.Ingresado:
                    this.estado = EEstado.EnViaje;
                    break;

                case EEstado.EnViaje:
                    this.estado = EEstado.Entregado;
                    break;
                }

                this.InformaEstado.Invoke(this.estado, EventArgs.Empty);
            }

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception ex)
            {
                throw new Exception("Error al Insertar", ex);
            }
        }
 public void MockCicloDeVida()
 {
     do
     {
         this.InformaEstado.Invoke(this, null);
         Thread.Sleep(10000);
         if (this.Estado == EEstado.ingresado)
         {
             this.Estado = EEstado.en_viaje;
         }
         else
         {
             this.Estado = EEstado.entregado;
         }
     } while (this.Estado != EEstado.entregado);
     this.InformaEstado.Invoke(this, null);
     try
     {
         PaqueteDAO.Insertar(this);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
示例#26
0
        /// <summary>
        ///     Cambia el estado del paquete cada hasta que este sea entregado y lo guarda en la base de datos.
        /// </summary>
        public void MockCicloDeVida()
        {
            do
            {
                if (this.estado == EEstado.Ingresado)
                {
                    Thread.Sleep(4000);
                    this.estado = EEstado.EnViaje;
                }
                else if (this.estado == EEstado.EnViaje)
                {
                    Thread.Sleep(4000);
                    this.estado = EEstado.Entregado;
                }

                this.InfornmarEstado.Invoke(this, EventArgs.Empty);
            } while (this.estado != EEstado.Entregado);

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception)
            {
                throw new Exception("Error! Al momento de guardar en la base de datos");
            }
        }
示例#27
0
        public void MockCicloDeVida()
        {
            Thread.Sleep(4000);
            estado = EEstado.EnViaje;

            if (this.InformarEstado != null)
            {
                InformarEstado.Invoke(this, null);
            }

            Thread.Sleep(4000);
            estado = EEstado.Entregado;
            if (this.InformarEstado != null)
            {
                InformarEstado.Invoke(this, null);
            }

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception ex)
            {
                if (this.InformarError != null)
                {
                    InformarError.Invoke(ex.Message + " paquete con TrakingId = " + this.trackingID, null);
                }
            }
        }
示例#28
0
        /// <summary>
        /// Hace que el paquete cambie de forma
        /// </summary>
        public void MockCicloDeVida()
        {
            do
            {
                Thread.Sleep(4000);


                if (this.estado == EEstado.Ingresado)
                {
                    this.estado = EEstado.EnViaje;
                }
                else if (this.estado == EEstado.EnViaje)
                {
                    this.estado = EEstado.Entregado;
                }

                this.InformaEstado(this.estado, EventArgs.Empty);
            } while (this.estado != EEstado.Entregado);

            try
            {
                PaqueteDAO.Insertar(this);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
示例#29
0
 /// <summary>
 /// Cada 4 segudos cambiara de estado al paquete, se informara el cambio de estado. Al llegar al ultimo estado se cargara el paquete a una base de datos.
 /// </summary>
 public void MockCicloDeVida()
 {
     while (true)
     {
         Thread.Sleep(4000);
         if (this.Estado != EEstado.Entregado)
         {
             this.Estado++;
             this.InformarEstado(this, new EventArgs());
         }
         else
         {
             this.InformarEstado(this, new EventArgs());
             try
             {
                 PaqueteDAO.Insertar(this);
             }
             catch (Exception e)
             {
                 this.InformarEstado(e, new EventArgs());
             }
             break;
         }
     }
 }
示例#30
0
        public void MockCicloDeVida()
        {
            try
            {
                do
                {
                    switch (estado)
                    {
                    case EEstado.Ingresado:
                        Thread.Sleep(4000);
                        estado = EEstado.EnViaje;
                        InformarEstado(this, new EventArgs());
                        break;

                    case EEstado.EnViaje:
                        Thread.Sleep(4000);
                        estado = EEstado.Entregado;
                        InformarEstado(this, new EventArgs());
                        break;
                    }
                } while (estado != EEstado.Entregado);

                PaqueteDAO.Insertar(this);
            }
            catch (Exception ex)
            {
                Notifica.Send(ex.Message, ETipoExcepcion.sql);
                throw ex;
            }
        }