/// <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); }
public static void AgregarProducto(Mueble producto) { if (listaDeMateriales == producto.MaterialBase) { listaDeMuebles.Add(producto); } }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }