using friaLabbar.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace friaLabbar { public class RandomPersonGenerator { Random rnd = new Random(); string[] streetAddresses = new string[] { "Stensvedsgatan 7", "Rydsvägen 332B", "Kläppen 12", "Barkaby 98", "Myrbacka 18" }; string[] cities = new string[] { "Borlänge", "Linköping", "Leksand", "Dala-Järna", "Sälen", "Stockholm" }; string[] states = new string[] { "Dalarna", "Östergötland", "Värmland", "Skåne", "Uppland" }; string[] zipCodes = new string[] { "42314", "58330", "79330", "44231" }; string[] firstNames = new string[] { "Sten", "Sture", "Bertil", "Greta", "Lisa", "Fia", "Sven" }; string[] lastNames = new string[] { "Karlsson", "Svensson", "Rödluva", "Ekdal", "Melander" }; bool[] aliveStatuses = new bool[] { true, false }; DateTime lowEndDate = new DateTime(1943, 1, 1); int daysFromLowDate; public RandomPersonGenerator() { daysFromLowDate = (DateTime.Today - lowEndDate).Days; } public List GetPeople(int total = 10) { List result = new List(); for (int i = 0; i < total; i++) { result.Add(GetPerson(i + 1)); } return result; } private PersonModel GetPerson(int id) { PersonModel result = new PersonModel(); result.PersonId = id; result.FirstName = GetRandomItem(firstNames); result.LastName = GetRandomItem(lastNames); result.IsAlive = GetRandomItem(aliveStatuses); result.DateOfBirth = GetRandomDate(); result.Age = GetAgeInYears(result.DateOfBirth); result.AccountBalance = ((decimal)rnd.Next(1, 1000000) / 100); int addressCount = rnd.Next(1, 5); for (int i = 0; i < addressCount; i++) { result.Addresses.Add(GetAddress(((id - 1) * 5) + i + 1)); } return result; } private AddressModel GetAddress(int id) { AddressModel result = new AddressModel(); result.AddressId = id; result.StreetAddress = GetRandomItem(streetAddresses); result.City = GetRandomItem(cities); result.State = GetRandomItem(states); result.ZipCode = GetRandomItem(zipCodes); return result; } private T GetRandomItem(T[] obj) { return obj[rnd.Next(0, obj.Length)]; } private DateTime GetRandomDate() { return lowEndDate.AddDays(rnd.Next(daysFromLowDate)); } private int GetAgeInYears(DateTime birthday) { DateTime now = DateTime.Today; int age = now.Year - birthday.Year; if (now < birthday.AddYears(age)) { age--; } return age; } } }