/// <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); }
/// <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); } }
/// <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); }