Hallo,
basierend auf diesem Thread habe ich nun die erste Methode zum Laden von Daten aus der DB erstellt und wollte nachfragen, ob dies die richtige Vorgehensweise ist oder ob es sinnvoller/eleganter/einfacher geht.
Vorab hier die Seed Methode (speichern der Daten in die DB):
Seeding
und so hole ich die Daten einer bestimmten Person anhand der LogInDaten wieder aus der DB:
Loading
Im Grunde müsste es etwas veralgemeinert werden, denn es gibt 4 Arten von Personen
1. Organisations Verwalter = PersonCategoryEnum.OrganizationAdmin
2. Event Verantwortlicher = PersonCategoryEnum.EventResponsible
3. Verkäufer = PersonCategoryEnum.EventSeller
4. Event Verantwortlicher der gleichzeitig auch Verkäufer sein kann = PersonCategoryEnum.EventResponsibleSeller
Je nachdem, wer sich anmeldet, müssen unterschiedle Daten geladen werden.
Hier hab ich noch keine Idee wie ich das hin bekomme.
Danke Euch
basierend auf diesem Thread habe ich nun die erste Methode zum Laden von Daten aus der DB erstellt und wollte nachfragen, ob dies die richtige Vorgehensweise ist oder ob es sinnvoller/eleganter/einfacher geht.
Vorab hier die Seed Methode (speichern der Daten in die DB):
C#-Quellcode
- public void Seed()
- {
- using (var context = new BazaarManagementDbContext())
- {
- if (!context.Organizations.Any())
- {
- List<Person> testPersons = new List<Person>();
- testPersons.Add(new Person()
- {
- FirstName = "Organisation",
- LastName = "Admin",
- Email = "admin@organisation.de",
- PersonCategory = PersonCategoryEnum.OrganizationAdmin,
- AccessData = new LogInData()
- {
- UserName = "admin",
- EncryptedPassword = GetMD5Hash("admin#2019"),
- IsInitialPassword = true,
- IsActive = true,
- Role = LogInDataRoleEnum.OrganisationAdmin
- }
- });
- testPersons.Add(new Person()
- {
- FirstName = "Verantwortlicher",
- LastName = "Basar",
- Email = "verantwortlicher@basar.de",
- PersonCategory = PersonCategoryEnum.EventResponsible,
- AccessData = new LogInData()
- {
- UserName = "responsible",
- EncryptedPassword = GetMD5Hash("res.ponsible#2019"),
- IsInitialPassword = true,
- Role = LogInDataRoleEnum.EventAdmin,
- IsActive = true
- }
- });
- testPersons.Add(new Person()
- {
- FirstName = "Helga",
- LastName = "Muster",
- Email = "claudia@muster.de",
- PersonCategory = PersonCategoryEnum.EventSeller,
- SellerNumber = 1,
- AccessData = new LogInData()
- {
- UserName = "cmuster",
- EncryptedPassword = "c.muster#2019",
- IsInitialPassword = true,
- IsActive = true,
- Role = LogInDataRoleEnum.Seller
- },
- Articles = new List<Article>()
- {
- new Article()
- {
- ArticleNumber = 123,
- Description = "Spiel - Schnappt Hubi",
- Price = 2.5m,
- Quantity = 1,
- Sold = false
- }
- }
- });
- context.Persons.AddRange(testPersons);
- Organization newOrg = new Organization()
- {
- Name = "KiTa Kunterbunt e.V.",
- License = LicenseTypeEnum.Light,
- OrganizationPersons = new List<Person>()
- };
- BazaarEvent firstEvent = new BazaarEvent()
- {
- EventName = "Kleider Basar Musterhausen",
- EventDate = DateTime.Now.AddDays(14),
- Provision = 20,
- MinProvision = 5m,
- Sellers = new List<PersonBazaarEvent>()
- };
- firstEvent.Sellers.Add(new PersonBazaarEvent() { BazaarEvent = firstEvent, Person = context.Persons.Local.Last() });
- firstEvent.Organization = newOrg;
- firstEvent.ResponsiblePerson = context.Persons.Local.ToList()[1];
- firstEvent.MaxSellerNumber = (int)newOrg.License;
- context.BazaarEvents.Add(firstEvent);
- newOrg.OrganizationPersons.Add(context.Persons.Local.ToList()[0]);
- newOrg.OrganizationPersons.Add(context.Persons.Local.ToList()[1]);
- newOrg.OrganizationPersons.Add(context.Persons.Local.ToList()[2]);
- context.Organizations.Add(newOrg);
- if (context.SaveChanges() < 1) throw new Exception("Unerwarteter Rückgabewert beim spiechern...");
- }
- }
- }
und so hole ich die Daten einer bestimmten Person anhand der LogInDaten wieder aus der DB:
C#-Quellcode
- public void LoadingData(string user, string pass)
- {
- //BazaarEvents abrufen und zugehörige Daten laden (Organisation,Verantwortlicher, Verkäufer und deren Artikel)
- using (var context = new BazaarManagementDbContext())
- {
- var bazaarEvent = context.BazaarEvents
- .Include(o => o.Organization) //includieren, damit Zugriff auf die Organization Details besteht (Name usw.)
- .Include(rp => rp.ResponsiblePerson) //includieren, damit Zugriff auf die Details besteht (LogIn Daten, Name usw.)
- .Include(pe => pe.Sellers) //Sellers ist vom Typ ICollection<PersonBazaarEvent>, muss includiert werden um an die Verkäufer ran zu kommen
- .ThenInclude(p => p.Person) //von den Verkäufern includieren um auf die Details Zugriff zu bekommen (Name, Verkäufernummer usw.)
- .ThenInclude(a => a.Articles) //wiederum von der Person der Sellers includieren um auf desen Artikel Details zu kommen (Artikelnr., Beschreibung usw.)
- .Single(p => p.ResponsiblePerson.AccessData.UserName == user && p.ResponsiblePerson.AccessData.EncryptedPassword.Equals(GetMD5Hash(pass))); //hier nur die Daten zurückgeben, deren Logindaten es sind.
- System.Console.WriteLine($"Organisation: {bazaarEvent.Organization.Name}");
- System.Console.WriteLine($"Name: {bazaarEvent.ResponsiblePerson.FirstName} {bazaarEvent.ResponsiblePerson.LastName}");
- System.Console.WriteLine($"Event: {bazaarEvent.EventName}");
- foreach (var item in bazaarEvent.Sellers)
- {
- System.Console.WriteLine($"VerkäuferNr. {item.Person.SellerNumber}");
- System.Console.WriteLine($"Name: {item.Person.FirstName} {item.Person.LastName}");
- System.Console.WriteLine($"Anzahl Artikel: {item.Person.Articles.Count}");
- foreach (var art in item.Person.Articles)
- {
- System.Console.WriteLine($"Artikelnr. {art.ArticleNumber}");
- System.Console.WriteLine($"Artikel: {art.Description}");
- System.Console.WriteLine($"Preis: {art.Price.ToString("0.00")}");
- }
- }
- };
- }
Im Grunde müsste es etwas veralgemeinert werden, denn es gibt 4 Arten von Personen
1. Organisations Verwalter = PersonCategoryEnum.OrganizationAdmin
2. Event Verantwortlicher = PersonCategoryEnum.EventResponsible
3. Verkäufer = PersonCategoryEnum.EventSeller
4. Event Verantwortlicher der gleichzeitig auch Verkäufer sein kann = PersonCategoryEnum.EventResponsibleSeller
Je nachdem, wer sich anmeldet, müssen unterschiedle Daten geladen werden.
Hier hab ich noch keine Idee wie ich das hin bekomme.
Danke Euch
"Hier könnte Ihre Werbung stehen..."