diff --git a/NuGet.Config b/NuGet.Config
new file mode 100644
index 0000000..3f0e003
--- /dev/null
+++ b/NuGet.Config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Wallet.Data/Seeders/Seed.cs b/Wallet.Data/Seeders/Seed.cs
new file mode 100644
index 0000000..867881b
--- /dev/null
+++ b/Wallet.Data/Seeders/Seed.cs
@@ -0,0 +1,82 @@
+namespace Wallet.Data.Seeders
+{
+ public class Seed
+ {
+ public List Roles { get; set; } = new();
+
+ public List Genders { get; set; } = new();
+
+ public List UserTypes { get; set; } = new();
+
+ public List TransactionTypes { get; set; } = new();
+
+ public List TransactionModes { get; set; } = new();
+
+ public List Bills { get; set; } = new();
+
+ public List BillModes { get; set; } = new();
+
+ public List Menus { get; set; } = new();
+
+ public List StampDutyCharges { get; set; } = new();
+
+ public SeedAdminUser AdminUser { get; set; } = new();
+ }
+
+ public class SeedAdminUser
+ {
+ public string FirstName { get; set; } = string.Empty;
+
+ public string LastName { get; set; } = string.Empty;
+
+ public string Email { get; set; } = string.Empty;
+
+ public string UserName { get; set; } = string.Empty;
+
+ public string PhoneNumber { get; set; } = string.Empty;
+
+ public string Password { get; set; } = string.Empty;
+
+ public string Role { get; set; } = string.Empty;
+
+ public string UserType { get; set; } = string.Empty;
+
+ public string Gender { get; set; } = string.Empty;
+ }
+
+ public class SeedBill
+ {
+ public string Id { get; set; } = string.Empty;
+
+ public string Name { get; set; } = string.Empty;
+
+ public decimal Amount { get; set; }
+ }
+
+ public class SeedBillMode
+ {
+ public string Id { get; set; } = string.Empty;
+
+ public string Name { get; set; } = string.Empty;
+
+ public string BillId { get; set; } = string.Empty;
+ }
+
+ public class SeedStampDutyCharge
+ {
+ public string Id { get; set; } = string.Empty;
+
+ public string Name { get; set; } = string.Empty;
+
+ public decimal Amount { get; set; }
+ }
+
+ public class SeedMenu
+ {
+ public string Id { get; set; } = string.Empty;
+
+ public string Name { get; set; } = string.Empty;
+
+ public int OrderId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Wallet.Data/Seeders/SeedApplicationData.cs b/Wallet.Data/Seeders/SeedApplicationData.cs
new file mode 100644
index 0000000..d24c4ef
--- /dev/null
+++ b/Wallet.Data/Seeders/SeedApplicationData.cs
@@ -0,0 +1,247 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Storage;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Wallet.Data.Seeders;
+using Wallet.Entities.Models.Context;
+using Wallet.Entities.Models.Domain;
+
+namespace WalletApi.Data.Seeders
+{
+ public static class SeedApplicationData
+ {
+ public static IServiceCollection BindSeedConfig(this IServiceCollection services, IConfiguration configuration)
+ {
+ Seed seed = new();
+
+ configuration.GetSection("Seed").Bind(seed);
+
+ services.AddSingleton(seed);
+
+ return services;
+ }
+
+ public static async Task EnsurePopulated(IApplicationBuilder app)
+ {
+ using var scope = app.ApplicationServices.CreateScope();
+
+ Seed seed = scope.ServiceProvider.GetRequiredService();
+ WalletDbContext context = scope.ServiceProvider.GetRequiredService();
+ UserManager userManager = scope.ServiceProvider.GetRequiredService>();
+ RoleManager roleManager = scope.ServiceProvider.GetRequiredService>();
+
+ await context.Database.MigrateAsync();
+
+ var strategy = context.Database.CreateExecutionStrategy();
+
+ await strategy.ExecuteAsync(async () =>
+ {
+ await using IDbContextTransaction transaction = await context.Database.BeginTransactionAsync();
+
+ try
+ {
+ await SeedIfEmptyAsync(context.Genders, seed.Genders.Select(name => new Gender
+ {
+ Name = name,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.UserTypes, seed.UserTypes.Select(name => new UserType
+ {
+ Name = name,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.TransactionTypes, seed.TransactionTypes.Select(name => new TransactionType
+ {
+ Name = name,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.TransactionModes, seed.TransactionModes.Select(name => new TransactionMode
+ {
+ Name = name,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.Bills, seed.Bills.Select(bill => new Bill
+ {
+ Id = bill.Id,
+ Name = bill.Name,
+ Amount = bill.Amount,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.BillModes, seed.BillModes.Select(billMode => new BillMode
+ {
+ Id = billMode.Id,
+ Name = billMode.Name,
+ BillId = billMode.BillId,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.StampDutyCharges, seed.StampDutyCharges.Select(stampDutyCharge => new StampDutyCharge
+ {
+ Id = stampDutyCharge.Id,
+ Name = stampDutyCharge.Name,
+ Amount = stampDutyCharge.Amount,
+ Active = true
+ }),
+ context);
+
+ await SeedIfEmptyAsync(context.Menus, seed.Menus.Select(menu => new Menu
+ {
+ Id = menu.Id,
+ Name = menu.Name,
+ OrderId = menu.OrderId,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ }),
+ context);
+
+ await SeedRolesAsync(roleManager, seed);
+
+ await SeedAdminUserAsync(context, userManager, seed);
+
+ await transaction.CommitAsync();
+ }
+ catch
+ {
+ await transaction.RollbackAsync();
+ throw;
+ }
+ });
+ }
+
+ private static async Task SeedIfEmptyAsync(DbSet dbSet, IEnumerable entities, WalletDbContext context) where T : class
+ {
+ if (await dbSet.AnyAsync())
+ return;
+
+ List items = entities.ToList();
+
+ if (!items.Any())
+ return;
+
+ await dbSet.AddRangeAsync(items);
+
+ //await context.SaveChangesAsync();
+ }
+
+ private static async Task SeedRolesAsync(RoleManager roleManager, Seed seed)
+ {
+ foreach (string role in seed.Roles)
+ {
+ if (await roleManager.RoleExistsAsync(role))
+ continue;
+
+ ApplicationRole applicationRole = new ApplicationRole
+ {
+ Name = role,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ };
+
+ IdentityResult result = await roleManager.CreateAsync(applicationRole);
+
+ if (!result.Succeeded)
+ {
+ throw new InvalidOperationException(
+ string.Join(", ", result.Errors.Select(x => x.Description)));
+ }
+ }
+ }
+
+ private static async Task SeedAdminUserAsync(WalletDbContext context, UserManager userManager, Seed seed)
+ {
+ if (await userManager.Users.AnyAsync())
+ return;
+
+ SeedAdminUser adminSeed = seed.AdminUser;
+
+ UserType userType = await context.UserTypes.FirstOrDefaultAsync(x => x.Name == adminSeed.UserType);
+
+ if (userType == null)
+ throw new InvalidOperationException($"User type '{adminSeed.UserType}' was not found.");
+
+ ApplicationUser user = new ApplicationUser
+ {
+ FirstName = adminSeed.FirstName,
+ LastName = adminSeed.LastName,
+ Email = adminSeed.Email,
+ UserName = adminSeed.UserName,
+ PhoneNumber = adminSeed.PhoneNumber,
+ UserTypeId = userType.Id,
+ Active = true,
+ EmailConfirmed = true,
+ PhoneNumberConfirmed = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ };
+
+ IdentityResult createUser = await userManager.CreateAsync(user, adminSeed.Password);
+
+ if (!createUser.Succeeded)
+ {
+ throw new InvalidOperationException(
+ string.Join(", ", createUser.Errors.Select(x => x.Description)));
+ }
+
+ IdentityResult addToRole = await userManager.AddToRoleAsync(user, adminSeed.Role);
+
+ if (!addToRole.Succeeded)
+ {
+ throw new InvalidOperationException(
+ string.Join(", ", addToRole.Errors.Select(x => x.Description)));
+ }
+
+ await SeedAdminStaffAsync(context, user, adminSeed);
+ }
+
+ private static async Task SeedAdminStaffAsync(WalletDbContext context, ApplicationUser user, SeedAdminUser adminSeed)
+ {
+ if (await context.Staff.AnyAsync(x => x.UserId == user.Id))
+ return;
+
+ Gender gender = await context.Genders.FirstOrDefaultAsync(x => x.Name == adminSeed.Gender);
+
+ if (gender == null)
+ throw new InvalidOperationException($"Gender '{adminSeed.Gender}' was not found.");
+
+ context.Staff.Add(new Staff
+ {
+ Id = Guid.NewGuid().ToString(),
+ UserId = user.Id,
+ Email = user.Email ?? string.Empty,
+ PhoneNumber = user.PhoneNumber ?? string.Empty,
+ Gender = gender,
+ Active = true,
+ CreatedBy = "seed",
+ UpdatedBy = "seed"
+ });
+
+ await context.SaveChangesAsync();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Wallet.Data/Wallet.Data.csproj b/Wallet.Data/Wallet.Data.csproj
index d9cf544..649ec5a 100644
--- a/Wallet.Data/Wallet.Data.csproj
+++ b/Wallet.Data/Wallet.Data.csproj
@@ -8,7 +8,14 @@
-
+
+
+
+
+
+
+
+
diff --git a/Wallet.Entities/Data/AirTimeSeed.cs b/Wallet.Entities/Data/AirTimeSeed.cs
deleted file mode 100644
index ff2e75e..0000000
--- a/Wallet.Entities/Data/AirTimeSeed.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using System;
-using Wallet.Entities.Models.Domain;
-
-namespace Wallet.Entities.Data
-{
- class AirTimeSeed : IEntityTypeConfiguration
- {
- public void Configure(EntityTypeBuilder builder)
- {
- builder.HasData(
- new AirTime
- {
- Id = Guid.Parse("1DA5EB5F-04CC-4F0E-AFA6-52B3C78BEDF9"),
- NetworkProvider = "Mtn",
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- },
- new AirTime
- {
- Id = Guid.Parse("D584F98C-4A22-482D-BC9E-C1899AEDCC57"),
- NetworkProvider = "Airtel",
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- });
- }
- }
-}
diff --git a/Wallet.Entities/Data/BillPaymentSeed.cs b/Wallet.Entities/Data/BillPaymentSeed.cs
deleted file mode 100644
index bb9fdb3..0000000
--- a/Wallet.Entities/Data/BillPaymentSeed.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using System;
-using Wallet.Entities.Models.Domain;
-
-namespace Wallet.Entities.Data
-{
- class BillPaymentSeed : IEntityTypeConfiguration
- {
- public void Configure(EntityTypeBuilder builder)
- {
- builder.HasData(
- new Bill
- {
- Id = Guid.Parse("F1179901-AF52-4774-B8E5-76E76B55C8C5"),
- BillName = "DSTV",
- Amount = 6500,
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- },
- new Bill
- {
- Id = Guid.Parse("637C3058-F4C2-45AA-A30C-301CC5D2D101"),
- BillName = "GOTV",
- Amount = 3000,
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- });
- }
- }
-}
diff --git a/Wallet.Entities/Data/DataSeed.cs b/Wallet.Entities/Data/DataSeed.cs
deleted file mode 100644
index fa47809..0000000
--- a/Wallet.Entities/Data/DataSeed.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using System;
-
-namespace Wallet.Entities.Data
-{
- public class DataSeed : IEntityTypeConfiguration
- {
- public void Configure(EntityTypeBuilder builder)
- {
- builder.HasData(
- new Models.Domain.NetworkData
- {
- Id = Guid.Parse("CE185A95-533E-425C-ADF4-A5770766564B"),
- NetworkProvider = "Mtn",
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- },
- new Models.Domain.NetworkData
- {
- Id = Guid.Parse("9806F26B-E013-4DFF-812A-AFBA47D2FBE0"),
- NetworkProvider = "Airtel",
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- });
- }
- }
-}
diff --git a/Wallet.Entities/Data/RoleSeed.cs b/Wallet.Entities/Data/RoleSeed.cs
deleted file mode 100644
index 39e735b..0000000
--- a/Wallet.Entities/Data/RoleSeed.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using System;
-using Wallet.Entities.Models.Domain;
-
-namespace Wallet.Entities.Data
-{
- public class RoleSeed : IEntityTypeConfiguration
- {
- public void Configure(EntityTypeBuilder builder)
- {
- builder.HasData(
- new Role
- {
- Name = "Admin",
- NormalizedName = "ADMIN",
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- },
- new Role
- {
- Name = "Manager",
- NormalizedName = "MANAGER",
- CreatedAt = DateTime.Now,
- UpdatedAt = DateTime.Now
- });
- }
- }
-}
diff --git a/Wallet.Entities/Dto/Request/DepositTransactionDto.cs b/Wallet.Entities/Dto/Request/DepositTransactionDto.cs
index 32ec9fc..fee3cff 100644
--- a/Wallet.Entities/Dto/Request/DepositTransactionDto.cs
+++ b/Wallet.Entities/Dto/Request/DepositTransactionDto.cs
@@ -7,15 +7,13 @@ namespace Wallet.Entities.Dto.Request
{
public class DepositTransactionDto
{
- public TransactionType TransactionType { get; set; }
- public TransactionMode TransactionMode { get; set; }
public string NetworkProvider { get; set; }
public string BillName { get; set; }
public string UserId { get; set; }
public string PhoneNumber { get; set; }
[ForeignKey(nameof(UserId))]
- public User User { get; set; }
+ public ApplicationUser User { get; set; }
[Column(TypeName = "decimal(38,2)")]
public decimal Amount { get; set; }
@@ -26,4 +24,4 @@ public class DepositTransactionDto
public string SenderWalletId { get; set; }
public DateTime TimeStamp { get; set; }
}
-}
+}
\ No newline at end of file
diff --git a/Wallet.Entities/Mapper/MappingProfile.cs b/Wallet.Entities/Mapper/MappingProfile.cs
index aae3a9b..e0967ea 100644
--- a/Wallet.Entities/Mapper/MappingProfile.cs
+++ b/Wallet.Entities/Mapper/MappingProfile.cs
@@ -11,26 +11,20 @@ public class MappingProfile : Profile
public MappingProfile()
{
//Create User
- CreateMap();
+ CreateMap();
+
-
CreateMap();
- CreateMap();
+ CreateMap();
CreateMap();
- CreateMap();
- CreateMap();
-
- CreateMap();
+
+ CreateMap();
CreateMap();
- CreateMap();
- CreateMap();
CreateMap();
- CreateMap();
- CreateMap();
+ CreateMap();
+ CreateMap();
CreateMap();
- CreateMap();
- CreateMap();
-
+
//CreateMap()
// .ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.User.Email));
@@ -39,23 +33,21 @@ public MappingProfile()
.ForPath(dest => dest.User.Email, opt => opt.MapFrom(src => src.Email));
// Update Staff and Customer by Put
- CreateMap ();
+ CreateMap();
// Get all staff and Get staff by Id
- CreateMap ()
- .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.LastName} {src.FirstName}"))
+ CreateMap()
+ .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.User.LastName} {src.User.FirstName}"))
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.User.Email))
.ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.PhoneNumber))
- .ForMember(dest => dest.Address, opt => opt.MapFrom(src =>
- $"{src.Address.PlotNo} {src.Address.StreetName} {src.Address.State} {src.Address.Nationality}"));
+ .ForMember(dest => dest.Address, opt => opt.MapFrom(src => $"{src.Address.PlotNo} {src.Address.StreetName} {src.Address.State} {src.Address.Nationality}"));
// Get Staff by Email
- CreateMap()
- .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.Staff.LastName} {src.Staff.FirstName}"))
+ CreateMap()
+ .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.Staff.User.LastName} {src.Staff.User.FirstName}"))
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.Email))
.ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.Staff.PhoneNumber))
- .ForMember(dest => dest.Address, opt => opt.MapFrom(src =>
- $"{src.Staff.Address.PlotNo} {src.Staff.Address.StreetName} {src.Staff.Address.State} {src.Staff.Address.Nationality}"));
+ .ForMember(dest => dest.Address, opt => opt.MapFrom(src => $"{src.Staff.Address.PlotNo} {src.Staff.Address.StreetName} {src.Staff.Address.State} {src.Staff.Address.Nationality}"));
// Uodate Customer by Patch
CreateMap()
@@ -63,35 +55,26 @@ public MappingProfile()
// Get all Customer and Get Customer by Id
CreateMap()
- .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.LastName} {src.FirstName}"))
+ .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.User.LastName} {src.User.FirstName}"))
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.User.Email))
.ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.PhoneNumber))
- .ForMember(dest => dest.WalletNo, opt => opt.MapFrom(src => src.Wallet.WalletNo))
- .ForMember(dest => dest.WalletBalance, opt => opt.MapFrom(src => src.Wallet.Balance))
- .ForMember(dest => dest.Address, opt => opt.MapFrom(src =>
- $"{src.Address.PlotNo} {src.Address.StreetName} {src.Address.State} {src.Address.Nationality}"));
+ .ForMember(dest => dest.Address, opt => opt.MapFrom(src => $"{src.Address.PlotNo} {src.Address.StreetName} {src.Address.State} {src.Address.Nationality}"));
// Get Customer by Email
- CreateMap()
- .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.Customer.LastName} {src.Customer.FirstName}"))
+ CreateMap()
+ .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.Customer.User.LastName} {src.Customer.User.FirstName}"))
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.Email))
.ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.Customer.PhoneNumber))
- .ForMember(dest => dest.WalletNo, opt => opt.MapFrom(src => src.Customer.Wallet.WalletNo))
- .ForMember(dest => dest.WalletBalance, opt => opt.MapFrom(src => src.Customer.Wallet.Balance))
- .ForMember(dest => dest.Address, opt => opt.MapFrom(src =>
- $"{src.Customer.Address.PlotNo} {src.Customer.Address.StreetName} {src.Customer.Address.State} {src.Customer.Address.Nationality}"));
+ .ForMember(dest => dest.Address, opt => opt.MapFrom(src => $"{src.Customer.Address.PlotNo} {src.Customer.Address.StreetName} {src.Customer.Address.State} {src.Customer.Address.Nationality}"));
// Get Customer by Walletno
CreateMap()
- .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.Customer.LastName} {src.Customer.FirstName}"))
- .ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.Customer.User.Email))
- .ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.Customer.PhoneNumber))
- .ForMember(dest => dest.WalletNo, opt => opt.MapFrom(src => src.WalletNo))
- .ForMember(dest => dest.WalletBalance, opt => opt.MapFrom(src => src.Balance))
- .ForMember(dest => dest.Address, opt => opt.MapFrom(src =>
- $"{src.Customer.Address.PlotNo} {src.Customer.Address.StreetName} {src.Customer.Address.State} {src.Customer.Address.Nationality}"));
-
-
+ .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.User.LastName} {src.User.FirstName}"))
+ .ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.User.Email))
+ .ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.User.PhoneNumber))
+ .ForMember(dest => dest.WalletNo, opt => opt.MapFrom(src => src.WalletNumber))
+ .ForMember(dest => dest.WalletBalance, opt => opt.MapFrom(src => src.Balance));
+ //.ForMember(dest => dest.Address, opt => opt.MapFrom(src => $"{.Address.PlotNo} {src.Customer.Address.StreetName} {src.Customer.Address.State} {src.User.Address.Nationality}"));
}
}
-}
+}
\ No newline at end of file
diff --git a/Wallet.Entities/Models/Context/WalletDbContext.cs b/Wallet.Entities/Models/Context/WalletDbContext.cs
index 2deb095..ebfb74c 100644
--- a/Wallet.Entities/Models/Context/WalletDbContext.cs
+++ b/Wallet.Entities/Models/Context/WalletDbContext.cs
@@ -1,39 +1,36 @@
-using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System;
using System.Threading;
using System.Threading.Tasks;
-using Wallet.Entities.Data;
using Wallet.Entities.Interfaces;
using Wallet.Entities.Models.Domain;
namespace Wallet.Entities.Models.Context
{
- public class WalletDbContext : IdentityDbContext
+ public class WalletDbContext : IdentityDbContext, ApplicationRoleClaim, IdentityUserToken>
{
public WalletDbContext(DbContextOptions options) : base(options)
{
}
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- base.OnModelCreating(modelBuilder);
- //modelBuilder.ApplyConfiguration(new RoleSeed());
- //modelBuilder.ApplyConfiguration(new AirTimeSeed());
- //modelBuilder.ApplyConfiguration(new DataSeed());
- //modelBuilder.ApplyConfiguration(new BillPaymentSeed());
-
- modelBuilder.Entity()
- .HasOne(a => a.Address)
- .WithOne(b => b.Staff)
- .OnDelete(DeleteBehavior.Cascade);
-
- modelBuilder.Entity()
- .HasOne(a => a.Address)
- .WithOne(b => b.Customer)
- .OnDelete(DeleteBehavior.Cascade);
- }
+ public DbSet Address { get; set; }
+ public DbSet Bills { get; set; }
+ public DbSet Customers { get; set; }
+ public DbSet Transactions { get; set; }
+ public DbSet Staff { get; set; }
+ public DbSet