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" }
}
};
}
}
}