diff --git a/TIAM.Database.Test/AdminDalTest.cs b/TIAM.Database.Test/AdminDalTest.cs index 8e0c9937..3430e11f 100644 --- a/TIAM.Database.Test/AdminDalTest.cs +++ b/TIAM.Database.Test/AdminDalTest.cs @@ -325,7 +325,23 @@ namespace TIAM.Database.Test //Assert.IsNotNull(user.UserProductMappings[0].Product, "Product is null"); } + [DataTestMethod] + //[DataRow("273EFE3C-D19F-4C2A-BF19-7397DC835C60")] + //[DataRow("814b5495-c2e9-4f1d-a73f-37cd5d353078")] + [DataRow(["814b5495-c2e9-4f1d-a73f-37cd5d353078", "273EFE3C-D19F-4C2A-BF19-7397DC835C60"])] + public void GetTransferDestionationToProductById_ReturnsTransferDestinationToProduct_WhenHasTransferDestinationRelation(string[] productIdTransferDestinationIdString) + { + var productId = Guid.Parse(productIdTransferDestinationIdString[0]); + var transferDestinationId = Guid.Parse(productIdTransferDestinationIdString[1]); + var transferDestinationToProduct = Dal.GetTransferDestinationToProduct(productId, transferDestinationId); + + Assert.IsNotNull(transferDestinationToProduct); + Assert.IsNotNull(transferDestinationToProduct.TransferDestination); + + Assert.IsTrue(transferDestinationToProduct.TransferDestination.Id == transferDestinationId, "transferDestinationToProduct.TransferDestination.Id != transferDestinationId"); + } + [DataTestMethod] [DataRow(["8f38f8e3-a92c-4979-88b1-dc812a82245f", "814b5495-c2e9-4f1d-a73f-37cd5d353078", "71392CFD-FB9C-45C1-9540-7BE3782CF26A"])] public async Task TransferCrudTest(string[] transferIdProductIdUserProductIdStrings) @@ -406,9 +422,9 @@ namespace TIAM.Database.Test Name = name, Description = name + "description", Price = 15000, - Price2 = 21000, - Price3 = 23000, - PriceType = PriceType.Fix, + //Price2 = 21000, + //Price3 = 23000, + //PriceType = PriceType.Fix, Address = new Address { Id = addressId, diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 5e2daa9c..146c91b7 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -28,9 +28,6 @@ namespace TIAM.Database.DataLayers.Admins } #region Transfer - public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.GetTransferDestinationById(transferDestinationId)); - public string? GetTransferDestinationJsonById(Guid transferDestinationId) => Session(ctx => ctx.GetTransferDestinationById(transferDestinationId)?.ToJson()); - public Transfer? GetTransferById(Guid transferId, bool autoInclude = false) => Session(ctx => ctx.GetTransferById(transferId, autoInclude)); public string? GetTransferJsonById(Guid transferId, bool autoInclude = false) => Session(ctx => ctx.GetTransferById(transferId, autoInclude)?.ToJson()); @@ -41,13 +38,28 @@ namespace TIAM.Database.DataLayers.Admins #endregion Transfer #region TransferDestination + public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.GetTransferDestinationById(transferDestinationId)); + public string? GetTransferDestinationJsonById(Guid transferDestinationId) => Session(ctx => ctx.GetTransferDestinationById(transferDestinationId)?.ToJson()); + public Task AddTransferDestinationAsync(TransferDestination transferDestination) => TransactionAsync(ctx => ctx.AddTransferDestination(transferDestination)); public Task UpdateTransferDestinationAsync(TransferDestination transferDestination) => TransactionAsync(ctx => ctx.UpdateTransferDestination(transferDestination)); public Task RemoveTransferDestinationAsync(TransferDestination transferDestination, bool removeAddress = false) => TransactionAsync(ctx => ctx.RemoveTransferDestination(transferDestination, removeAddress)); public Task RemoveTransferDestinationAsync(Guid transferDestinationId, bool removeAddress = false) => TransactionAsync(ctx => ctx.RemoveTransferDestination(transferDestinationId, removeAddress)); - #endregion TransferDestination + #region TransferDestinationToProduct + public TransferDestinationToProduct? GetTransferDestinationToProductById(Guid transferDestinationToProductId) => Session(ctx=>ctx.GetTransferDestinationToProductById(transferDestinationToProductId)); + public string? GetTransferDestinationToProductJsonById(Guid transferDestinationToProductId) => Session(ctx => ctx.GetTransferDestinationToProductById(transferDestinationToProductId)?.ToJson()); + + public TransferDestinationToProduct? GetTransferDestinationToProduct(Guid productId, Guid transferDestinationId) => Session(ctx=>ctx.GetTransferDestinationToProduct(productId, transferDestinationId)); + public string? GetTransferDestinationToProductJson(Guid productId, Guid transferDestinationId) => Session(ctx => ctx.GetTransferDestinationToProduct(productId, transferDestinationId)?.ToJson()); + + public Task AddTransferDestinationToProductAsync(TransferDestinationToProduct transferDestinationToProduct) => TransactionAsync(ctx => ctx.AddTransferDestinationToProduct(transferDestinationToProduct)); + public Task UpdateTransferDestinationToProductAsync(TransferDestinationToProduct transferDestinationToProduct) => TransactionAsync(ctx => ctx.UpdateTransferDestinationToProduct(transferDestinationToProduct)); + public Task RemoveTransferDestinationToProductAsync(TransferDestinationToProduct transferDestinationToProduct) => TransactionAsync(ctx => ctx.RemoveTransferDestinationToProduct(transferDestinationToProduct)); + public Task RemoveTransferDestinationToProductAsync(Guid transferDestinationToProductId) => TransactionAsync(ctx => ctx.RemoveTransferDestinationToProduct(transferDestinationToProductId)); + #endregion TransferDestinationToProduct + public User? GetUserById(Guid userId, bool autoInclude = false) => Session(ctx => ctx.GetUserById(userId, autoInclude)); public User? GetUserByEmail(string email, bool autoInclude = false) => Session(ctx => ctx.GetUserByEmail(email, autoInclude)); diff --git a/TIAM.Database/DbContexts/Admins/AdminDbContext.cs b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs index e599e43c..8aa0ae2c 100644 --- a/TIAM.Database/DbContexts/Admins/AdminDbContext.cs +++ b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs @@ -25,6 +25,7 @@ namespace TIAM.Database.DbContexts.Admins { public DbSet Users { get; set; } public DbSet TransferDestinations { get; set; } + public DbSet TransferDestinationToProducts { get; set; } public DbSet Transfers { get; set; } public DbSet ServiceProviders { get; set; } @@ -69,6 +70,9 @@ namespace TIAM.Database.DbContexts.Admins new TransferEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); + modelBuilder.Entity().HasOne(e => e.TransferDestination); + modelBuilder.Entity().Navigation(e => e.TransferDestination).AutoInclude(true); + new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); //modelBuilder.Entity().Ignore(x => x.Id); diff --git a/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs index 018dc2a5..c0ab2b20 100644 --- a/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs +++ b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs @@ -24,6 +24,7 @@ namespace TIAM.Database.DbContexts.ServiceProviders { public DbSet
Addresses { get; set; } public DbSet TransferDestinations { get; set; } + public DbSet TransferDestinationToProducts { get; set; } public DbSet Users { get; set; } public DbSet UserProductMappings { get; set; } @@ -67,8 +68,8 @@ namespace TIAM.Database.DbContexts.ServiceProviders new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); - new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); - modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); + //modelBuilder.Entity().HasOne(e => e.TransferDestination); + //modelBuilder.Entity().Navigation(e => e.TransferDestination).AutoInclude(true); } } } diff --git a/TIAM.Database/DbContexts/Users/UserDbContext.cs b/TIAM.Database/DbContexts/Users/UserDbContext.cs index 31fca820..7c4c7b12 100644 --- a/TIAM.Database/DbContexts/Users/UserDbContext.cs +++ b/TIAM.Database/DbContexts/Users/UserDbContext.cs @@ -34,6 +34,8 @@ namespace TIAM.Database.DbContexts.Users public DbSet
Addresses { get; set; } public DbSet Transfers { get; set; } + public DbSet TransferDestinationToProducts { get; set; } + public DbSet EmailMessages { get; set; } public DbSet TransferDestinations { get; set; } @@ -74,6 +76,9 @@ namespace TIAM.Database.DbContexts.Users new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); + //modelBuilder.Entity().HasOne(e => e.TransferDestination); + //modelBuilder.Entity().Navigation(e => e.TransferDestination).AutoInclude(true); + //modelBuilder.Entity().BuildProductToServiceProviderRelation(); //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); diff --git a/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs b/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs index 614900bf..370c290a 100644 --- a/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs +++ b/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs @@ -1,12 +1,12 @@ using Microsoft.EntityFrameworkCore; +using TIAM.Database.DbSets.Addresses; using TIAM.Entities.Addresses; using TIAM.Entities.Products; using TIAM.Entities.Transfers; namespace TIAM.Database.DbSets.Transfers; -public interface ITransferDestinationDbSet +public interface ITransferDestinationDbSet : IAddressDbSet, ITransferDestinationToProductDbSet { public DbSet TransferDestinations { get; set; } - public DbSet
Addresses { get; set; } } \ No newline at end of file diff --git a/TIAM.Database/DbSets/Transfers/ITransferDestinationToProductDbSet.cs b/TIAM.Database/DbSets/Transfers/ITransferDestinationToProductDbSet.cs new file mode 100644 index 00000000..9de28fd6 --- /dev/null +++ b/TIAM.Database/DbSets/Transfers/ITransferDestinationToProductDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Transfers; + +namespace TIAM.Database.DbSets.Transfers; + +public interface ITransferDestinationToProductDbSet +{ + public DbSet TransferDestinationToProducts { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Transfers/TransferDbSetExtensions.cs b/TIAM.Database/DbSets/Transfers/TransferDbSetExtensions.cs index 43de0d1b..e745cd2d 100644 --- a/TIAM.Database/DbSets/Transfers/TransferDbSetExtensions.cs +++ b/TIAM.Database/DbSets/Transfers/TransferDbSetExtensions.cs @@ -55,6 +55,30 @@ public static class TransferDbSetExtensions var transferDestination = ctx.GetTransferDestinationById(transferDestinationId); return transferDestination == null || ctx.RemoveTransferDestination(transferDestination, removeAddress); } - #endregion TransferDestination + + #region TransferDestinationToProduct + public static TransferDestinationToProduct? GetTransferDestinationToProductById(this ITransferDestinationToProductDbSet ctx, Guid transferDestinationToProductId) + => ctx.TransferDestinationToProducts.FirstOrDefault(x => x.Id == transferDestinationToProductId); + + public static TransferDestinationToProduct? GetTransferDestinationToProduct(this ITransferDestinationToProductDbSet ctx, Guid productId, Guid transferDestinationId) + => ctx.TransferDestinationToProducts.FirstOrDefault(x => x.ProductId == productId && x.TransferDestinationId == transferDestinationId); + + public static bool AddTransferDestinationToProduct(this ITransferDestinationToProductDbSet ctx, TransferDestinationToProduct transferDestinationToProduct) + => ctx.TransferDestinationToProducts.Add(transferDestinationToProduct).State == EntityState.Added; + + public static bool UpdateTransferDestinationToProduct(this ITransferDestinationToProductDbSet ctx, TransferDestinationToProduct transferDestinationToProduct) + => ctx.TransferDestinationToProducts.Update(transferDestinationToProduct).State == EntityState.Modified; + + public static bool RemoveTransferDestinationToProduct(this ITransferDestinationToProductDbSet ctx, TransferDestinationToProduct transferDestinationToProduct) + { + return ctx.TransferDestinationToProducts.Remove(transferDestinationToProduct).State == EntityState.Deleted; + } + + public static bool RemoveTransferDestinationToProduct(this ITransferDestinationToProductDbSet ctx, Guid transferDestinationToProductId) + { + var transferDestinationToProduct = ctx.GetTransferDestinationToProductById(transferDestinationToProductId); + return transferDestinationToProduct == null || ctx.RemoveTransferDestinationToProduct(transferDestinationToProduct); + } + #endregion TransferDestinationToProduct } \ No newline at end of file diff --git a/TIAM.Entities/Transfers/Transfer.cs b/TIAM.Entities/Transfers/Transfer.cs index 2f8b3c84..ce39efd9 100644 --- a/TIAM.Entities/Transfers/Transfer.cs +++ b/TIAM.Entities/Transfers/Transfer.cs @@ -2,9 +2,7 @@ using AyCode.Interfaces.TimeStampInfo; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Text.Json.Serialization; using TIAM.Core.Enums; -using TIAM.Entities.Drivers; using TIAM.Entities.Products; using TIAM.Entities.Users; diff --git a/TIAM.Entities/Transfers/TransferDestination.cs b/TIAM.Entities/Transfers/TransferDestination.cs index bbec5c17..92b530c6 100644 --- a/TIAM.Entities/Transfers/TransferDestination.cs +++ b/TIAM.Entities/Transfers/TransferDestination.cs @@ -17,14 +17,15 @@ namespace TIAM.Entities.Transfers [ForeignKey(nameof(AddressId))] public virtual Address Address { get; set; } + //public virtual List Products { get; set; } + //public virtual List TransferDestinationToProducts { get; set; } + public string Name { get; set; } public string Description { get; set; } - public PriceType PriceType { get; set; } + //public PriceType PriceType { get; set; } public double Price { get; set; } - public double Price2 { get; set; } - public double Price3 { get; set; } //TEMPORARY!!! public string? AddressString { get; set; } diff --git a/TIAM.Entities/Transfers/TransferDestinationToProduct.cs b/TIAM.Entities/Transfers/TransferDestinationToProduct.cs new file mode 100644 index 00000000..beee31b6 --- /dev/null +++ b/TIAM.Entities/Transfers/TransferDestinationToProduct.cs @@ -0,0 +1,33 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using TIAM.Core.Enums; +using TIAM.Entities.Products; + +namespace TIAM.Entities.Transfers +{ + [Table(nameof(TransferDestinationToProduct))] + public class TransferDestinationToProduct : IEntityGuid, ITimeStampInfo, IProductForeignKey + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] + public Guid Id { get; set; } + + public Guid ProductId { get; set; } + //public virtual Product Product { get; set; } + + public Guid TransferDestinationId { get; set; } + public virtual TransferDestination TransferDestination { get; set; } + + //public PriceType PriceType { get; set; } + public double Price { get; set; } + public double? Price2 { get; set; } + public double? Price3 { get; set; } + + public double? ExtraPrice { get; set; } + public bool? ExtraPriceType { get; set; } + + public DateTime Created { get; set; } + public DateTime Modified { get; set; } + } +} \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index 0f59c310..134ee884 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -102,8 +102,8 @@ namespace TIAMWebApp.Server.Controllers Console.WriteLine($"TransferDestination to be created: {transferDestination.AddressId}"); Console.WriteLine($"TransferDestination to be created: {transferDestination.Name}"); Console.WriteLine($"TransferDestination to be created: {transferDestination.Price}"); - Console.WriteLine($"TransferDestination to be created: {transferDestination.Price2}"); - Console.WriteLine($"TransferDestination to be created: {transferDestination.Price3}"); + //Console.WriteLine($"TransferDestination to be created: {transferDestination.Price2}"); + //Console.WriteLine($"TransferDestination to be created: {transferDestination.Price3}"); Console.WriteLine($"TransferDestination to be created: {transferDestination.PriceType}"); Console.WriteLine($"TransferDestination to be created: {transferDestination.AddressString}"); Console.WriteLine($"TransferDestination to be created: {transferDestination.Description}"); @@ -160,8 +160,8 @@ namespace TIAMWebApp.Server.Controllers Console.WriteLine($"TransferDestination to be updated: {transferDestination.Id}"); Console.WriteLine($"TransferDestination to be updated new name: {transferDestination.Name}"); Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price}"); - Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price2}"); - Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price3}"); + //Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price2}"); + //Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price3}"); Console.WriteLine($"TransferDestination to be updated new priceType: {transferDestination.PriceType}"); Console.WriteLine($"TransferDestination to be updated new address: {transferDestination.AddressString}"); Console.WriteLine($"TransferDestination to be updated new description: {transferDestination.Description}"); diff --git a/TIAMWebApp/Shared/Models/ClientSide/UI/WizardModels/TransferDestinationWizardModel.cs b/TIAMWebApp/Shared/Models/ClientSide/UI/WizardModels/TransferDestinationWizardModel.cs index 6120bf0c..a2d29a81 100644 --- a/TIAMWebApp/Shared/Models/ClientSide/UI/WizardModels/TransferDestinationWizardModel.cs +++ b/TIAMWebApp/Shared/Models/ClientSide/UI/WizardModels/TransferDestinationWizardModel.cs @@ -81,8 +81,8 @@ namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels destination.Description = model.Description; destination.AddressString = model.AddressString; destination.Price = model.Price; - destination.Price2 = model.Price; - destination.Price3 = model.Price; + //destination.Price2 = model.Price; + //destination.Price3 = model.Price; destination.PriceType = model.PriceType; destination.Address = model.Address;