/// <summary> /// Agrega productos a la lista mientras el stock lo permita. /// </summary> /// <param name="cs"></param> /// <param name="p"></param> /// <returns></returns> public static ControlStock <T> operator +(ControlStock <T> cs, T p) { if (cs.lista.Count == 0) { cs.lista = new List <T>(); } if (cs.lista.Count < cs.capacidad) { //Si el producto ya existe, agrego cantidad. if (cs == p) { //Agregar la cantidad a cs[indice que es igual] int indice = ControlStock <T> .ObtenerIndice(cs, p); cs.lista[indice].Cantidad += p.Cantidad; } else { //sino lo agrego a la lista cs.lista.Add(p); } } else { throw new StockMaximoException("No hay mas espacio en los estantes. Venda algo!!"); } return(cs); }
/// <summary> /// Obtiene el índice del elemento pasado como parámetro. /// </summary> /// <param name="cs"></param> /// <param name="p"></param> /// <returns></returns> private static int ObtenerIndice(ControlStock <T> cs, T p) { int retorno = -1; int indice = 0; foreach (T aux in cs.lista) { if (aux.Equals(p)) { retorno = indice; break; } indice++; } return(retorno); }
/// <summary> /// Baja la cantidad de productos en stock segun la cantidad de productos que se deseen comprar. /// </summary> /// <param name="cs"></param> /// <param name="p"></param> /// <param name="cantidadCompra"></param> public void BajarCantidad(ControlStock <T> cs, T p, int cantidadCompra) { //Si la cantidad de productos en stock es igual o mayor a la cantidad que se //desea comprar, bajo la cantidad de productos en stock teniendo en cuenta la cantidad //que el cliente quiere comprar. if (cs == p && p.Cantidad >= cantidadCompra) { p.Cantidad -= cantidadCompra; //Si me quedo sin productos, elimino de la lista. if (p.Cantidad == 0) { cs -= p; } } else { throw new CantidadInexistenteException("La cantidad de productos en stock es insuficiente"); } }