示例#1
0
        public decimal EsPodenFer(Estoc estoc, Recepta recepta)
        {
            decimal quantiatMin = Decimal.MaxValue;
            decimal quantiatAct = 0;

            if (ReceptaOriginal.PrimaryKey != new Recepta().PrimaryKey)
            {
                try {
                    foreach (Ingredient ingredient in recepta)
                    {
                        quantiatAct = estoc[ingredient.Producte.PrimaryKey].QuantitatTotal / ingredient.Quantitat;
                        if (quantiatAct < quantiatMin)
                        {
                            quantiatMin = quantiatAct;
                        }
                    }
                } catch {
                    quantiatMin = 0;
                }
            }
            else
            {
                quantiatMin = 0;
            }
            return(quantiatMin);
        }
示例#2
0
        public override bool Equals(object obj)
        {
            Estoc other = obj as Estoc;
            bool  iguals = other != null;
            IEnumerator <Producte> productes, productesOther;
            bool potPrimer = true, potSegon = false;

            if (iguals)
            {
                productes      = GetEnumerator();
                productesOther = other.GetEnumerator();
                while (iguals && potPrimer)
                {
                    potPrimer = productes.MoveNext();
                    potSegon  = productesOther.MoveNext();
                    if (potSegon.Equals(potPrimer))
                    {
                        if (potSegon)
                        {
                            iguals = productesOther.Current.Equals(productes.Current);
                        }
                    }
                    else
                    {
                        iguals = false;
                    }
                }
                if (iguals)
                {
                    iguals = productes.MoveNext().Equals(productesOther.MoveNext());
                }
            }
            return(iguals);
        }
示例#3
0
        public override dynamic Restaurar()
        {
            Estoc estocDessat = new Estoc();

            try
            {
                BaseDeDades.Desconecta();
                BaseDeDades.Conecta();
                Recepta[]        receptes  = Recepta.ReceptesDessades(BaseDeDades);
                Producte[]       productes = Producte.ProductesDessats(BaseDeDades, receptes);
                UnitatProducte[] unitats   = UnitatProducte.UnitatsDessades(BaseDeDades, receptes, productes);
                estocDessat.Afegir(productes);
                //poso els objectes en el control!
                Afegir(receptes);
                for (int i = 0; i < receptes.Length; i++)
                {
                    foreach (Ingredient ingredient in receptes[i])
                    {
                        Afegir(ingredient);
                    }
                }
                Afegir(productes);
                Afegir(unitats);
            }
            catch { }
            return(estocDessat);
        }
示例#4
0
        public static UnitatProducte[] FabricaElMax(Producte producte, Estoc estoc, Recepta recepta)
        {
            List <UnitatProducte> unitatsFetes = new List <UnitatProducte>();
            UnitatProducte        unitatFeta   = Fabrica(producte, estoc, recepta);

            while (unitatFeta != null)
            {
                unitatsFetes.Add(unitatFeta);
                unitatFeta = Fabrica(producte, estoc, recepta);
            }
            return(unitatsFetes.ToArray <UnitatProducte>());
        }
示例#5
0
        static void Main(string[] args)
        {
            BaseDeDadesMySQL bd = new BaseDeDadesMySQL();

            bd.Conecta();
            ControlObjectesSql control = new Control(bd);

            var estoc = control.Restaurar();

            Estoc.Estoc estocAct = new Estoc.Estoc();
            control.Reset();
            Producte       producte = new Producte("ProvaIDProducte", "ProvaCategoria", "ProvaUnitat", new TimeSpan(4, 3, 2, 1), new TimeSpan(1, 0, 0, 0), new TimeSpan(1, 2, 3, 4), new Recepta(), 5, 100);
            UnitatProducte unitat   = new UnitatProducte(producte);
            UnitatProducte unitat2  = new UnitatProducte(producte);

            unitat2.Recepta = new Recepta("Altre");
            control.Afegir((ObjecteSql)unitat2.Recepta);
            unitat2.Recepta.Afegir(new Ingredient(producte, 100M));
            control.Afegir((IEnumerable <Ingredient>)unitat2.Recepta);
            unitat2.Quantitat = 12.3M;
            unitat.Quantitat  = 10;
            control.Afegir((ObjecteSql)producte.ReceptaOriginal);
            control.Afegir((ObjecteSql)producte);
            control.Afegir(unitat);
            control.Afegir(unitat2);
            control.ComprovaActualitzacions();
            estocAct.Afegir(producte);
            if (estocAct.Equals(estoc))
            {
                Console.WriteLine("Funciona");                //si esta bien!!
            }
            else
            {
                Console.WriteLine("No funciona");
            }


            estoc = control.Restaurar();
            if (estocAct.Equals(estoc))
            {
                Console.WriteLine("Funciona");                //si esta bien!!
            }
            else
            {
                Console.WriteLine("No funciona");
            }
            //Console.WriteLine(unitat2);
            //Console.WriteLine(unitat2.Recepta);
            //Console.WriteLine(producte);
            //Console.WriteLine(estoc);
            //Console.WriteLine(control);
            Console.ReadKey();
        }
示例#6
0
        public void ErrorFabricaProductesInsuficients()
        {
            Producte       pa             = new Producte("Pa");
            Producte       formatge       = new Producte("Formatge");
            Recepta        receptaBocata  = new Recepta("BocataFormatge");
            Producte       bocataFormatge = new Producte("Bocata de Formatge");
            UnitatProducte unitatPa       = new UnitatProducte(pa, 10);
            UnitatProducte unitatFormatge = new UnitatProducte(formatge, 15);
            UnitatProducte unitatBocata;

            Estoc.Estoc estoc = new Estoc.Estoc();
            receptaBocata.Afegir(new Ingredient(pa, 1.5M));
            receptaBocata.Afegir(new Ingredient(formatge, 50));
            estoc.Afegir(new Producte[] { pa, formatge, bocataFormatge });
            unitatBocata = Producte.Fabrica(bocataFormatge, receptaBocata, new Producte[] { pa, formatge });//por cambiar...se tiene que hacer...
            Assert.AreEqual(null, unitatBocata);
        }
示例#7
0
        public void FabricaElMaximDeProducteAmbProductesDeEstoc()
        {
            Producte       pa             = new Producte("Pa");
            Producte       formatge       = new Producte("Formatge");
            Recepta        receptaBocata  = new Recepta("BocataFormatge");
            Producte       bocataFormatge = new Producte("Bocata de Formatge");
            UnitatProducte unitatPa       = new UnitatProducte(pa, 10);
            UnitatProducte unitatFormatge = new UnitatProducte(formatge, 15);

            UnitatProducte[] unitatsBocata;
            Estoc.Estoc      estoc = new Estoc.Estoc();
            receptaBocata.Afegir(new Ingredient(pa, 1.5M));
            receptaBocata.Afegir(new Ingredient(formatge, 6));
            estoc.Afegir(new Producte[] { pa, formatge, bocataFormatge });
            unitatsBocata = Producte.FabricaElMax(bocataFormatge, estoc, receptaBocata);
            Assert.AreNotEqual(new UnitatProducte[] {}, unitatsBocata);
        }
示例#8
0
        public void FabricaProducteAmbReceptaOriginal()
        {
            Producte       pa             = new Producte("Pa");
            Producte       formatge       = new Producte("Formatge");
            Recepta        receptaBocata  = new Recepta("BocataFormatge");
            Producte       bocataFormatge = new Producte("Bocata de Formatge");
            UnitatProducte unitatPa       = new UnitatProducte(pa, 10);
            UnitatProducte unitatFormatge = new UnitatProducte(formatge, 15);
            UnitatProducte unitatBocata;

            Estoc.Estoc estoc = new Estoc.Estoc();
            bocataFormatge.ReceptaOriginal = receptaBocata;
            receptaBocata.Afegir(new Ingredient(pa, 1));
            receptaBocata.Afegir(new Ingredient(formatge, 4));
            estoc.Afegir(new Producte[] { pa, formatge, bocataFormatge });
            unitatBocata = Producte.Fabrica(bocataFormatge, estoc);
            Assert.AreNotEqual(null, unitatBocata);
        }
示例#9
0
        public void FabricaProducteAmbReceptaOriginal()
        {
            Producte pa = new Producte("Pa");
            Producte formatge = new Producte("Formatge");
            Recepta receptaBocata = new Recepta("BocataFormatge");
            Producte bocataFormatge = new Producte("Bocata de Formatge");
            UnitatProducte unitatPa = new UnitatProducte(pa, 10);
            UnitatProducte unitatFormatge = new UnitatProducte(formatge, 15);
            UnitatProducte unitatBocata;
            Estoc.Estoc estoc = new Estoc.Estoc();
            bocataFormatge.ReceptaOriginal = receptaBocata;
            receptaBocata.Afegir(new Ingredient(pa, 1));
            receptaBocata.Afegir(new Ingredient(formatge, 4));
            estoc.Afegir(new Producte[] { pa, formatge, bocataFormatge });
            unitatBocata = Producte.Fabrica(bocataFormatge, estoc);
            Assert.AreNotEqual(null, unitatBocata);


        }
示例#10
0
		static void Main(string[] args)
		{
			BaseDeDadesMySQL bd = new BaseDeDadesMySQL();
			bd.Conecta();
			ControlObjectesSql control = new Control(bd);
			
			var estoc = control.Restaurar();
			Estoc.Estoc estocAct = new Estoc.Estoc();
			control.Reset();
			Producte producte = new Producte("ProvaIDProducte", "ProvaCategoria", "ProvaUnitat", new TimeSpan(4, 3, 2, 1), new TimeSpan(1, 0, 0, 0), new TimeSpan(1, 2, 3, 4), new Recepta(), 5, 100);
			UnitatProducte unitat = new UnitatProducte(producte);
			UnitatProducte unitat2 = new UnitatProducte(producte);
			unitat2.Recepta = new Recepta("Altre");
			control.Afegir((ObjecteSql)unitat2.Recepta);
			unitat2.Recepta.Afegir(new Ingredient(producte, 100M));
			control.Afegir((IEnumerable<Ingredient>)unitat2.Recepta);
			unitat2.Quantitat = 12.3M;
			unitat.Quantitat = 10;
			control.Afegir((ObjecteSql)producte.ReceptaOriginal);
			control.Afegir((ObjecteSql)producte);
			control.Afegir(unitat);
			control.Afegir(unitat2);
			control.ComprovaActualitzacions();
			estocAct.Afegir(producte);
			if (estocAct.Equals(estoc))
				Console.WriteLine("Funciona");//si esta bien!!
			else
				Console.WriteLine("No funciona");

			
			estoc = control.Restaurar();
			if (estocAct.Equals(estoc))
				Console.WriteLine("Funciona");//si esta bien!!
			else
				Console.WriteLine("No funciona");
			//Console.WriteLine(unitat2);
			//Console.WriteLine(unitat2.Recepta);
			//Console.WriteLine(producte);
			//Console.WriteLine(estoc);
			//Console.WriteLine(control);
			Console.ReadKey();
			
		}
示例#11
0
        public static UnitatProducte Fabrica(Producte producte, Estoc estoc, Recepta recepta)
        {
            List <Producte> productesRecepta = new List <Producte>();
            Producte        producteR        = null;

            try {
                if (recepta.PrimaryKey == new Recepta().PrimaryKey)
                {
                    throw new Exception();
                }
                foreach (Ingredient ingredient in recepta)
                {
                    producteR = estoc[ingredient.Producte.PrimaryKey];
                    if (producteR == null)
                    {
                        throw new Exception();
                    }
                    productesRecepta.Add(producteR);
                }
            } catch {
                return(null);
            }
            return(Fabrica(producte, recepta, productesRecepta));
        }
示例#12
0
        public void ErrorFabricaProductesFaltants()
        {
            Producte pa = new Producte("Pa");
            Producte formatge = new Producte("Formatge");
            Recepta receptaBocata = new Recepta("BocataFormatge");
            Producte bocataFormatge = new Producte("Bocata de Formatge");
            Producte oli = new Producte("Oli");
            UnitatProducte unitatOli = new UnitatProducte(oli, 100);
            UnitatProducte unitatPa = new UnitatProducte(pa, 10);
            UnitatProducte unitatFormatge = new UnitatProducte(formatge, 15);
            UnitatProducte unitatBocata;
            Estoc.Estoc estoc = new Estoc.Estoc();
            receptaBocata.Afegir(new Ingredient(pa, 1.5M));
            receptaBocata.Afegir(new Ingredient(formatge, 50));
            receptaBocata.Afegir(new Ingredient(oli,10));
            estoc.Afegir(new Producte[] { pa, formatge, bocataFormatge,oli });
            unitatBocata = Producte.Fabrica(bocataFormatge, receptaBocata, new Producte[] { pa, formatge });//por cambiar...se tiene que hacer...
            Assert.AreEqual(null, unitatBocata);


        }
示例#13
0
        public void FabricaElMaximDeProducteAmbProductesDeEstoc()
        {
            Producte pa = new Producte("Pa");
            Producte formatge = new Producte("Formatge");
            Recepta receptaBocata = new Recepta("BocataFormatge");
            Producte bocataFormatge = new Producte("Bocata de Formatge");
            UnitatProducte unitatPa = new UnitatProducte(pa, 10);
            UnitatProducte unitatFormatge = new UnitatProducte(formatge, 15);
            UnitatProducte[] unitatsBocata;
            Estoc.Estoc estoc = new Estoc.Estoc();
            receptaBocata.Afegir(new Ingredient(pa, 1.5M));
            receptaBocata.Afegir(new Ingredient(formatge, 6));
            estoc.Afegir(new Producte[] { pa, formatge, bocataFormatge });
            unitatsBocata = Producte.FabricaElMax(bocataFormatge, estoc,receptaBocata);
            Assert.AreNotEqual(new UnitatProducte[]{}, unitatsBocata);


        }
示例#14
0
 public decimal EsPodenFer(Estoc estoc)
 {
     return(EsPodenFer(estoc, ReceptaOriginal));
 }
示例#15
0
 public static UnitatProducte Fabrica(Producte producte, Estoc estoc)
 {
     return(Fabrica(producte, estoc, producte.ReceptaOriginal));
 }
示例#16
0
 public decimal MaximQuePotHaver(Estoc estoc, Recepta recepta)
 {
     return(QuantitatTotal + EsPodenFer(estoc, recepta));
 }
示例#17
0
 public decimal MaximQuePotHaver(Estoc estoc)
 {
     return(MaximQuePotHaver(estoc, ReceptaOriginal));
 }