Exemplo n.º 1
0
        /// <summary>
        /// Sobrecarga del + que indica agrega un mueble a la lista de muebles , si el mueble ya existe
        /// no lo sobreescribe sino que agrega las unidades del mueble que es identico a ese.
        /// </summary>
        /// <param name="muebles">Lista de muebles</param>
        /// <param name="mueble">Objeto mueble</param>
        /// <returns>La lista actualizada</returns>
        public static List <Mueble> operator +(List <Mueble> muebles, Mueble mueble)
        {
            bool   sonDistintos = true;
            int    indiceAux    = 0;
            Mueble muebleAux    = mueble;

            foreach (Mueble m in muebles)
            {
                if (mueble.GetType() == m.GetType() && mueble == m)
                {
                    indiceAux    = muebles.IndexOf(m);
                    muebleAux   += m;
                    sonDistintos = false;
                    muebles.Insert(indiceAux, muebleAux);
                    muebles.RemoveAt(indiceAux + 1);
                    break;
                }
            }

            if (sonDistintos && mueble.ValidarMedidas())
            {
                muebles.Add(mueble);
            }

            return(muebles);
        }
Exemplo n.º 2
0
 public static void AgregarProducto(Mueble producto)
 {
     if (listaDeMateriales == producto.MaterialBase)
     {
         listaDeMuebles.Add(producto);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Fabrica muebles en cantidad. No fabrica ninguno si no puede fabricar todos
        /// </summary>
        /// <param name="m">mueble a fabricar</param>
        /// <param name="cantidad">cantidad deseada del mueble a fabricar</param>
        /// <param name="materialesSinStock">lista de materiales que no tienen stock necesario</param>
        /// <param name="pesosDiff">array de diferencia de pesos correspondiente a cada item de la lista.
        /// para evitar modificar datos del item original </param>
        //
        /// <returns></returns>
        public bool FabricarMueblesEnBatch(Mueble m, short cantidad, out List <Material> materialesSinStock, out double[] pesosDiff)
        {
            bool            puedeFabricarMuebles;
            List <Material> materialesSinStock2 = new List <Material>();

            double[] pesosDeMateriales = new double [this[m.IDModelo].materialesNecesarios.Count];
            int      i = 0;

            foreach (Material item in this[m.IDModelo].materialesNecesarios)
            {
                pesosDeMateriales[i] = item.PesoEnKG;
                i++;
                item.PesoEnKG = item.PesoEnKG * cantidad;
            }
            i = 0;
            puedeFabricarMuebles = this.PuedeFabricarMueble(this[m.IDModelo].materialesNecesarios, out materialesSinStock2, out pesosDiff);
            foreach (Material item in this[m.IDModelo].materialesNecesarios)
            {
                item.PesoEnKG = pesosDeMateriales[i];
                i++;
            }
            if (puedeFabricarMuebles)
            {
                for (int j = 0; j < cantidad; j++)
                {
                    Mueble mNuevo = new Mueble(this[m.IDModelo], DateTime.Now, m.Color);
                    this.FabricarMueble(mNuevo);
                }
            }
            materialesSinStock = materialesSinStock2;
            return(puedeFabricarMuebles);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Fabrica Mueble. Verifica que haya stock, gasta materiales y agrega mueble a
 /// queue de fabricación de mi fábrica.
 /// </summary>
 /// <param name="m"></param>
 /// <returns> True si se pudo fabricar y se agrego el mueble a mi queue de fabricación</returns>
 public void FabricarMueble(Mueble m)
 {
     if (this[m.IDModelo] != null)
     {
         foreach (Material item in this[m.IDModelo].materialesNecesarios)
         {
             bool fabricado = this - item;
         }
         this.mueblesEnProduccion.Enqueue(m);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Método estático que genera un .txt con la información del mueble. El nombre del archivo
        /// tiene las caracteristicas del mueble para que siempre se genere un txt distinto
        /// en caso de error , no guarda nada, simplemente capturo cualquiera de sus excepciones
        /// y me protejo de cualquier excepcion que pueda cerrar el programa
        /// </summary>
        /// <param name="ubicacionArchivo">Path donde se va a guardar el archivo</param>
        /// <param name="mueble">Objeto mueble</param>
        public static void GenerarUnMuebleTxt(string ubicacionArchivo, Mueble mueble)
        {
            try
            {
                ubicacionArchivo += string.Format("\\{0} {1} {2} {3} {4}.txt", mueble.MuebleFabricado, mueble.Peso, mueble.Altura, mueble.Anchura, mueble.Profundidad);
                StreamWriter archivoTxt = new StreamWriter(ubicacionArchivo);

                archivoTxt.Write(mueble.InformacionDelMueble() + mueble.Facturacion());

                archivoTxt.Close();
            }
            catch (Exception)
            {
            }
        }
        /// <summary>
        /// Guarda el mueble "Insert" en la base de datos
        /// </summary>
        /// <param name="mueble">Mueble que se guarda</param>
        /// <returns>True si se agrego, sino false</returns>
        public static bool GuardarMueble(Mueble mueble)
        {
            bool   retorno  = false;
            string consulta = string.Empty;
            string unidades = string.Empty;

            try
            {
                if (mueble.Unidades != "Un solo mueble")
                {
                    unidades = mueble.Unidades.Replace(" muebles", "");
                }
                else
                {
                    unidades = "1";
                }

                if (mueble is Madera)
                {
                    consulta = string.Format("insert into Mueble (Nombre,Peso,Altura,Anchura,Profundidad,Unidades,FechaFabricacion,Color,Material,Tipo) VALUES ('{0}',{1},{2},{3},{4},{5},'{6}','{7}','{8}','{9}');", mueble.Nombre, mueble.Peso.Replace(" kg", ""), mueble.Altura.Replace(" cm", ""), mueble.Anchura.Replace(" cm", ""), mueble.Profundidad.Replace(" cm", ""), unidades, mueble.FechaDeFabricacion, ((Madera)mueble).Color, "Madera", ((Madera)mueble).TipoDeMadera);
                }
                else if (mueble is Metal)
                {
                    consulta = string.Format("insert into Mueble (Nombre,Peso,Altura,Anchura,Profundidad,Unidades,FechaFabricacion,Color,Material,Tipo) VALUES ('{0}',{1},{2},{3},{4},{5},'{6}','{7}','{8}','{9}');", mueble.Nombre, mueble.Peso.Replace(" kg", ""), mueble.Altura.Replace(" cm", ""), mueble.Anchura.Replace(" cm", ""), mueble.Profundidad.Replace(" cm", ""), unidades, mueble.FechaDeFabricacion, ((Metal)mueble).Color, "Metal", ((Metal)mueble).TipoDeMetal);
                }
                else if (mueble is Vidrio)
                {
                    consulta = string.Format("insert into Mueble (Nombre,Peso,Altura,Anchura,Profundidad,Unidades,FechaFabricacion,Color,Material,Tipo) VALUES ('{0}',{1},{2},{3},{4},{5},'{6}','{7}','{8}','{9}');", mueble.Nombre, mueble.Peso.Replace(" kg", ""), mueble.Altura.Replace(" cm", ""), mueble.Anchura.Replace(" cm", ""), mueble.Profundidad.Replace(" cm", ""), unidades, mueble.FechaDeFabricacion, eColor.Sin, "Vidrio", "Sin tipo");
                }
                MueblesDBO.miComando             = new SqlCommand();
                MueblesDBO.miComando.Connection  = MueblesDBO.miConexion;
                MueblesDBO.miComando.CommandType = System.Data.CommandType.Text;

                if (MueblesDBO.miComando != null && MueblesDBO.miConexion != null)
                {
                    MueblesDBO.miComando.CommandText = consulta;
                    MueblesDBO.info = MueblesDBO.miComando.ExecuteReader();
                    retorno         = true;
                }

                MueblesDBO.info.Close();
            }
            catch (Exception)
            {
                return(false);
            }
            return(retorno);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Sobrecarga del objeto mueble que retorna que agrega unidades a un mueble , se usa para agregar
        /// elementos a muebles iguales
        /// </summary>
        /// <param name="m1">Mueble 1</param>
        /// <param name="m2">Mueble 2</param>
        /// <returns>Nuevo mueble con la suma de las unidades del mueble 1 y las unidades del mueble 2</returns>
        public static Mueble operator +(Mueble m1, Mueble m2)
        {
            Mueble mueble = m1;

            if (m1 is Metal && m2 is Metal)
            {
                mueble = (Metal)mueble + (Metal)m2;
            }
            else if (m1 is Madera && m2 is Madera)
            {
                mueble = (Madera)mueble + (Madera)m2;
            }
            else if (m1 is Vidrio && m2 is Vidrio)
            {
                mueble = (Vidrio)mueble + (Vidrio)m2;
            }

            return(mueble);
        }