From e13a951dedc15d382919e4d86f43cb6d37f21ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Stawujak?= Date: Mon, 3 Dec 2018 21:36:11 +0100 Subject: [PATCH] SKE-39 add competitions to database --- .../Domain/Competition.cs | 34 ++++++++++ .../Domain/CompetitionCategory.cs | 14 ++++ .../Seed/CompetitionBuilder.cs | 64 ++++++++++++++++++ .../EntityFrameworkCore/Seed/SeedHelper.cs | 1 + .../SystemKonkursowDbContext.cs | 6 ++ .../SystemKonkursowDbContextModelSnapshot.cs | 66 +++++++++++++++++++ 6 files changed, 185 insertions(+) create mode 100644 SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/Competition.cs create mode 100644 SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/CompetitionCategory.cs create mode 100644 SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/CompetitionBuilder.cs diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/Competition.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/Competition.cs new file mode 100644 index 0000000..672dbf0 --- /dev/null +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/Competition.cs @@ -0,0 +1,34 @@ +using Abp.Domain.Entities.Auditing; +using System; +using System.ComponentModel.DataAnnotations.Schema; +using SystemKonkursow.Authorization.Users; + +namespace SystemKonkursow.Domain +{ + [Table("Competitions")] + public class Competition : FullAuditedEntity + { + public Competition() + { + CreationTime = DateTime.Now; + } + + public string Name { get; set; } + + public int CompetitionCategoryId { get; set; } + + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + + public string Description { get; set; } + + public string Prize { get; set; } + + [ForeignKey(nameof(CompetitionCategoryId))] + public virtual CompetitionCategory CompetitionCategory { get; set; } + + [ForeignKey(nameof(CreatorUserId))] + public virtual User Creator { get; set; } + } +} diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/CompetitionCategory.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/CompetitionCategory.cs new file mode 100644 index 0000000..c06aa9d --- /dev/null +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Core/Domain/CompetitionCategory.cs @@ -0,0 +1,14 @@ +using Abp.Domain.Entities; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SystemKonkursow.Domain +{ + [Table("CompetitionCategories")] + public class CompetitionCategory : Entity + { + public string Name { get; set; } + + public virtual ICollection Competitions { get; set; } + } +} diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/CompetitionBuilder.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/CompetitionBuilder.cs new file mode 100644 index 0000000..418f36c --- /dev/null +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/CompetitionBuilder.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace SystemKonkursow.EntityFrameworkCore.Seed +{ + public class CompetitionBuilder + { + private const int CompetitionsNumber = 10; + private readonly SystemKonkursowDbContext _context; + + public CompetitionBuilder(SystemKonkursowDbContext context) + { + _context = context; + } + + public void Create() + { + if (null != _context.CompetitionCategories.FirstOrDefault()) + return; + + CreateOneCategory("Matematyka"); + CreateOneCategory("Biologia"); + CreateOneCategory("Chemia"); + CreateOneCategory("Fizyka"); + CreateOneCategory("Geografia"); + CreateOneCategory("Język polski"); + CreateOneCategory("Język angielski"); + CreateOneCategory("Język niemiecki"); + CreateOneCategory("Historia"); + CreateOneCategory("Informatyka"); + + } + + private void CreateOneCategory(string name) + { + Random rnd = new Random(); + + var competitions = new List { }; + + for (int competitionId = 1; competitionId < CompetitionsNumber; competitionId++) + { + competitions.Add(new Domain.Competition + { + CreatorUserId = 3, + Name = name + " : konkurs nr " + competitionId, + StartDate = new DateTime(2019, rnd.Next(1, 4), rnd.Next(1, 29)), + EndDate = new DateTime(2019, rnd.Next(4, 7), rnd.Next(1, 31)), + Description = "Opis konkursu nr " + competitionId + " z kategorii: " + name, + Prize = "Opis nagród dla konkursu nr " + competitionId + " z kategorii: " + name + }); + } + + var exampleCategory = new Domain.CompetitionCategory() + { + Name = name, + Competitions = competitions + }; + + _context.CompetitionCategories.Add(exampleCategory); + _context.SaveChanges(); + } + } +} diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs index d2b4638..d577800 100644 --- a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/Seed/SeedHelper.cs @@ -28,6 +28,7 @@ namespace SystemKonkursow.EntityFrameworkCore.Seed new DefaultTenantBuilder(context).Create(); new TenantRoleAndUserBuilder(context, 1).Create(); new UserBuilder(context).Create(); + new CompetitionBuilder(context).Create(); } private static void WithDbContext(IIocResolver iocResolver, Action contextAction) diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/SystemKonkursowDbContext.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/SystemKonkursowDbContext.cs index 9859511..8a6674b 100644 --- a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/SystemKonkursowDbContext.cs +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/EntityFrameworkCore/SystemKonkursowDbContext.cs @@ -13,6 +13,12 @@ namespace SystemKonkursow.EntityFrameworkCore public SystemKonkursowDbContext(DbContextOptions options) : base(options) { + } + + public DbSet CompetitionCategories { get; set; } + + public DbSet Competitions { get; set; } + } } diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/Migrations/SystemKonkursowDbContextModelSnapshot.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/Migrations/SystemKonkursowDbContextModelSnapshot.cs index 79fa7eb..0512071 100644 --- a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/Migrations/SystemKonkursowDbContextModelSnapshot.cs +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.EntityFrameworkCore/Migrations/SystemKonkursowDbContextModelSnapshot.cs @@ -1008,6 +1008,60 @@ namespace SystemKonkursow.Migrations b.ToTable("AbpUsers"); }); + modelBuilder.Entity("SystemKonkursow.Domain.Competition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("CompetitionCategoryId"); + + b.Property("CreationTime"); + + b.Property("CreatorUserId"); + + b.Property("DeleterUserId"); + + b.Property("DeletionTime"); + + b.Property("Description"); + + b.Property("EndDate"); + + b.Property("IsDeleted"); + + b.Property("LastModificationTime"); + + b.Property("LastModifierUserId"); + + b.Property("Name"); + + b.Property("Prize"); + + b.Property("StartDate"); + + b.HasKey("Id"); + + b.HasIndex("CompetitionCategoryId"); + + b.HasIndex("CreatorUserId"); + + b.ToTable("Competitions"); + }); + + modelBuilder.Entity("SystemKonkursow.Domain.CompetitionCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("CompetitionCategories"); + }); + modelBuilder.Entity("SystemKonkursow.MultiTenancy.Tenant", b => { b.Property("Id") @@ -1209,6 +1263,18 @@ namespace SystemKonkursow.Migrations .HasForeignKey("LastModifierUserId"); }); + modelBuilder.Entity("SystemKonkursow.Domain.Competition", b => + { + b.HasOne("SystemKonkursow.Domain.CompetitionCategory", "CompetitionCategory") + .WithMany("Competitions") + .HasForeignKey("CompetitionCategoryId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SystemKonkursow.Authorization.Users.User", "Creator") + .WithMany() + .HasForeignKey("CreatorUserId"); + }); + modelBuilder.Entity("SystemKonkursow.MultiTenancy.Tenant", b => { b.HasOne("SystemKonkursow.Authorization.Users.User", "CreatorUser")