コード例 #1
0
        /// <summary>
        /// Rozpoczęcie procesowania pliku xml
        /// Stworzenie listy do zwrócenia a następnie generowanie uczestników
        /// </summary>
        /// <param name="xmlfile"></param>
        /// <returns></returns>
        public static List <Uczestnik_Model> Get_Lista_Uczestnikow(XElement xmlfile)
        {
            var piramida = new List <Uczestnik_Model>();

            foreach (var uczestnik in xmlfile.Elements("uczestnik"))
            {
                uint poziom_piramidy = 0;
                if (!uint.TryParse(uczestnik.Attribute("id").Value, out uint uczestnik_id))
                {
                    Console.WriteLine("Błąd podczas odczytu uczestnika!");
                    Console.WriteLine("Błąd podczas konwersji atrybutu 'id' ");
                    Console.WriteLine($"Uczestnik : id : { uczestnik.Attribute("id").Value } ");
                    Console.WriteLine("======================= !!! =======================");
                    Console.WriteLine();
                    continue;
                }

                var uczestnik_add = new Uczestnik_Model
                {
                    Id = uczestnik_id,
                    Poziom_Piramidy = poziom_piramidy
                };
                Get_Uczestnik(uczestnik, uczestnik_add, poziom_piramidy + 1, piramida);
                piramida.Add(uczestnik_add);
            }

            return(piramida);
        }
コード例 #2
0
        /// <summary>
        /// generowanie uczestników których są podwładnymi przynajmniej jednego uczestnika
        /// </summary>
        /// <param name="uczestnik_element"></param>
        /// <param name="uczestnik_przelozony"></param>
        /// <param name="poziom_piramidy"></param>
        /// <param name="piramida"></param>
        static void Get_Uczestnik(XElement uczestnik_element, Uczestnik_Model uczestnik_przelozony, uint poziom_piramidy, List <Uczestnik_Model> piramida)
        {
            uczestnik_przelozony.List_Podwladni = new List <Uczestnik_Model>();

            foreach (var uczestnik in uczestnik_element.Elements("uczestnik"))
            {
                if (!uint.TryParse(uczestnik.Attribute("id").Value, out uint uczestnik_id))
                {
                    Console.WriteLine("Błąd podczas odczytu uczestnika!");
                    Console.WriteLine("Błąd podczas konwersji atrybutu 'id' ");
                    Console.WriteLine($"Uczestnik : id : { uczestnik.Attribute("id").Value } ");
                    Console.WriteLine("======================= !!! =======================");
                    Console.WriteLine();
                    continue;
                }
                var uczestnik_add = new Uczestnik_Model
                {
                    Id              = uczestnik_id,
                    Przelozony      = uczestnik_przelozony,
                    Poziom_Piramidy = poziom_piramidy
                };
                Get_Uczestnik(uczestnik, uczestnik_add, poziom_piramidy + 1, piramida);
                uczestnik_przelozony.List_Podwladni.Add(uczestnik_add);
                piramida.Add(uczestnik_add);
            }
        }
コード例 #3
0
        /// <summary>
        /// Generowanie prowizji zaczynając od 1 stopnia piramidy a kończąc na przełożonym uczestnika który wpłacił kwotę
        /// </summary>
        /// <param name="pracownik"></param>
        /// <param name="przelew"></param>
        /// <returns></returns>
        public static double Generate_Prowizje(Uczestnik_Model pracownik, Przelew_Model przelew)
        {
            var    przelozony = pracownik.Przelozony;
            double prowizja   = przelew.Kwota;

            if (przelozony != null)
            {
                prowizja = Generate_Prowizje(przelozony, przelew);
            }
            if (przelew.Od == pracownik.Id)
            {
                if (pracownik.Poziom_Piramidy == 0)
                {
                    pracownik.Prowizja += prowizja;
                    return(0);
                }
                pracownik.Przelozony.Prowizja += prowizja;
                return(0);
            }
            pracownik.Prowizja += Math.Round(prowizja / 2, 0);
            prowizja           -= Math.Round(prowizja / 2, 0);
            return(prowizja);
        }