using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Entity; namespace PersonalFinance { /// /// Create DB context for entities /// public class EntityContext : DbContext { public DbSet Payments { get; set; } public DbSet ScheduledItems { get; set; } public DbSet Users { get; set; } } /// /// Initialization of Conxtext (temporary Alway, in production will IfModelChanges) /// public class EntityContextInit : DropCreateDatabaseAlways { protected override void Seed(EntityContext context) { //chyba se týkala toho, že uživatel má povinný parametr login... //dá se zjistit přes context.GetValidationErrors() List userList = GetInitUserList(); context.Users.AddRange(userList); List paymentList = GetInitPaymentList(userList); context.Payments.AddRange(paymentList); List scheduledList = GetInitScheduledItemList(paymentList); context.ScheduledItems.AddRange(scheduledList); context.SaveChanges(); } /// /// Predefined users (used for Moq too) /// /// List of Usesr public List GetInitUserList() { return new List(){ new User() { UserId = 1, Login = "Tonda", Name = "Antonín", Lastname = "Neumann", Sex = Sex.Male}, new User() { UserId = 2, Login = "Ivetka", Name = "Iveta", Lastname = "Dobrá", Sex = Sex.Female }, new User() { UserId = 3, Login = "Honzík", Name = "Jan", Lastname = "Novák", Sex = Sex.Male }, new User() { UserId = 4, Login = "Andy", Name = "Andrea", Lastname = "Nováková", Sex = Sex.Female }, new User() { UserId = 5, Login = "ĚŠČŘŽÝÁÍÉÚŮěščřžýáíéúů", Name = "John", Lastname = "Doe", Sex = Sex.Male } }; } /// /// Predefined ScheduledItems (used for Moq too) /// /// List of Payments /// List of ScheduledItems public List GetInitScheduledItemList(List paymentList) { Payment[] payment = paymentList.ToArray(); return new List() { new ScheduledItem() { ScheduledItemId= 1, Frequency = Frequency.Monthly, LastUse = DateTime.Now, Payment = payment[0] }, new ScheduledItem() { ScheduledItemId= 2, Frequency = Frequency.Monthly, LastUse = DateTime.Now, Payment = payment[3] }, new ScheduledItem() { ScheduledItemId= 3, Frequency = Frequency.Quarterly, LastUse = DateTime.Now, Payment = payment[4] } }; } /// /// Predefined Payments (used for Moq too) /// /// List of users /// List of Paments public List GetInitPaymentList(List userList) { User[] user = userList.ToArray(); return new List() { new Payment(user[0])//0 { PaymentId = 1, Currency = PaymentCurrency.CZK, Date = DateTime.Now, Price = 1700, Purpose = "Elektřina", Group = PaymentGroup.Family, Paid = true, Tags = new List { "CEZ", "elektrika", "test" } }, new Payment(user[0])//1 { PaymentId = 2, Currency = PaymentCurrency.EUR, Date = DateTime.Now, Price = 85, Purpose = "Telefon", Group = PaymentGroup.Personal, Paid = false, Tags = new List { "mobil", "T-Com", "test" } }, new Payment(user[0])//2 { PaymentId = 3, Currency = PaymentCurrency.USD, Date = DateTime.Now, Price = 150, Purpose = "Dárek", Note = "Dárek by měl dorazit XX.YY.", Group = PaymentGroup.Private, Paid = true, Tags = new List { "ebay", "darek", "test" } }, new Payment(user[1])//3 { PaymentId = 4, Currency = PaymentCurrency.CZK, Date = DateTime.Now, Price = 2200, Purpose = "Elektřina", Group = PaymentGroup.Family, Paid = true, Tags = new List { "CEZ", "elektrika", "test" } }, new Payment(user[1])//4 { PaymentId = 5, Currency = PaymentCurrency.CZK, Date = DateTime.Now, Price = 1200, Purpose = "Povinné ručení", Group = PaymentGroup.Personal, Paid = true, Tags = new List { "auto", "pojisteni", "test" } } }; } } }