This commit is contained in:
Adam 2024-03-27 12:39:18 +01:00
commit b727faaa5b
11 changed files with 135 additions and 43 deletions

View File

@ -0,0 +1,8 @@
namespace TIAM.Core.Enums;
public enum SeatNumberPriceType : byte
{
Price1SeatNum = 0,
Price2SeatNum = 4,
Price3SeatNum = 8,
}

View File

@ -83,32 +83,33 @@ namespace TIAM.Database.DbContexts.Admins
//modelBuilder.Entity<Car>().HasNoKey(); //modelBuilder.Entity<Car>().HasNoKey();
//modelBuilder.Entity<UserProductToCar>().HasNoKey(); //modelBuilder.Entity<UserProductToCar>().HasNoKey();
modelBuilder.Entity<UserProductMapping>().OwnsOne( //JSONMODEL - J.
userToProduct => userToProduct.JsonDetailModel, builderUserProductJsonDetail => //modelBuilder.Entity<UserProductMapping>().OwnsOne(
{ // userToProduct => userToProduct.JsonDetailModel, builderUserProductJsonDetail =>
builderUserProductJsonDetail.ToJson(); // {
//builderUserProductJsonDetail.Property(nameof(UserProductMapping.JsonDetailModel)).HasColumnName("JsonDetailModel"); // builderUserProductJsonDetail.ToJson();
// //builderUserProductJsonDetail.Property(nameof(UserProductMapping.JsonDetailModel)).HasColumnName("JsonDetailModel");
builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars, builderUserProductToCar => // builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars, builderUserProductToCar =>
{ // {
//builderUserProductToCar.ToJson(); // //builderUserProductToCar.ToJson();
//builderUserProductToCar.Ignore(x => x.UserProductToCarId); // //builderUserProductToCar.Ignore(x => x.UserProductToCarId);
//builderUserProductToCar.Ignore(x => x.Created); // //builderUserProductToCar.Ignore(x => x.Created);
//builderUserProductToCar.Ignore(x => x.Modified); // //builderUserProductToCar.Ignore(x => x.Modified);
builderUserProductToCar.OwnsOne(userProductToCar => userProductToCar.Car, builderCar => // builderUserProductToCar.OwnsOne(userProductToCar => userProductToCar.Car, builderCar =>
{ // {
//builderCar.ToJson(); // //builderCar.ToJson();
//builderCar.Ignore(x => x.Id); // //builderCar.Ignore(x => x.Id);
//builderCar.Ignore(x => x.Created); // //builderCar.Ignore(x => x.Created);
//builderCar.Ignore(x => x.Modified); // //builderCar.Ignore(x => x.Modified);
}); // });
}); // });
//builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars2); // //builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars2);
}); // });
//modelBuilder.Entity<UserProductToCar>().OwnsOne( //modelBuilder.Entity<UserProductToCar>().OwnsOne(
// userToProduct => userToProduct.Car, ownedNavigationBuilder => // userToProduct => userToProduct.Car, ownedNavigationBuilder =>

View File

@ -83,20 +83,20 @@ namespace TIAM.Database.DbContexts.Users
//modelBuilder.Entity<Product>().BuildProductToServiceProviderRelation(); //modelBuilder.Entity<Product>().BuildProductToServiceProviderRelation();
//new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>()); //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>());
modelBuilder.Entity<UserProductMapping>().OwnsOne( //modelBuilder.Entity<UserProductMapping>().OwnsOne(
userToProduct => userToProduct.JsonDetailModel, builderUserProductJsonDetail => // userToProduct => userToProduct.JsonDetailModel, builderUserProductJsonDetail =>
{ // {
builderUserProductJsonDetail.ToJson(); // builderUserProductJsonDetail.ToJson();
builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars, builderUserProductToCar => // builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars, builderUserProductToCar =>
{ // {
builderUserProductToCar.OwnsOne(userProductToCar => userProductToCar.Car, builderCar => // builderUserProductToCar.OwnsOne(userProductToCar => userProductToCar.Car, builderCar =>
{ // {
}); // });
}); // });
//builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars2); // //builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars2);
}); // });
} }
} }
} }

View File

@ -1,15 +1,20 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using TIAM.Core.Enums; using TIAM.Core.Enums;
using TIAM.Entities.Users;
namespace TIAM.Entities.Drivers namespace TIAM.Entities.Drivers
{ {
public class Car : IEntityGuid//, ITimeStampInfo, ITimeStampDisableAutoSet [Table(nameof(Car))]
public class Car : IEntityGuid, ITimeStampInfo, IUserProductMappingForeignKey//, ITimeStampDisableAutoSet
{ {
//[NotMapped] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } = Guid.NewGuid(); public Guid Id { get; set; } = Guid.NewGuid();
public Guid UserProductMappingId { get; set; }
public int CountryCode { get; set; } = 36; public int CountryCode { get; set; } = 36;
public string LicencePlate { get; set; } = "JGH452"; public string LicencePlate { get; set; } = "JGH452";
@ -18,10 +23,13 @@ namespace TIAM.Entities.Drivers
public string CarModel { get; set; } = "Mondeo"; public string CarModel { get; set; } = "Mondeo";
public int YearOfMake { get; set; } = 2021; public int YearOfMake { get; set; } = 2021;
public int SeatNumber { get; set; } = 5; public byte SeatNumber { get; set; } = 5;
public CarMotorType CarMotorType { get; set; } = CarMotorType.Diesel; public CarMotorType CarMotorType { get; set; } = CarMotorType.Diesel;
//public string Tulajdonos { get; set; }
//public string Üzembentartó { get; set; }
public DateTime Created { get; set; } = DateTime.UtcNow; public DateTime Created { get; set; } = DateTime.UtcNow;
public DateTime Modified { get; set; } = DateTime.UtcNow; public DateTime Modified { get; set; } = DateTime.UtcNow;
} }

View File

@ -1,10 +1,12 @@
namespace TIAM.Entities.Drivers; using System.ComponentModel.DataAnnotations.Schema;
namespace TIAM.Entities.Drivers;
public class UserProductJsonDetailModel public class UserProductJsonDetailModel
{ {
//public string Value { get; set; } = "ANYÁD!!!"; //public string Value { get; set; } = "ANYÁD!!!";
//[NotMapped] [NotMapped]
public List<UserProductToCar>? Cars { get; set; } public List<UserProductToCar>? Cars { get; set; }
//public List<UserProductToCarTest>? Cars2 { get; set; } //public List<UserProductToCarTest>? Cars2 { get; set; }

View File

@ -16,7 +16,7 @@ public class UserProductToCar //: IEntityGuid//, ITimeStampInfo, ITimeStampDisab
/// </summary> /// </summary>
public Guid UserProductCarId { get; set; } public Guid UserProductCarId { get; set; }
//[NotMapped, JsonIgnore] [NotMapped]
//public Guid UserProductMappingId { get; set; } //public Guid UserProductMappingId { get; set; }
public Car Car { get; set; } public Car Car { get; set; }

View File

@ -9,7 +9,7 @@ using TIAM.Entities.Users;
namespace TIAM.Entities.Transfers; namespace TIAM.Entities.Transfers;
[Table(nameof(Transfer))] [Table(nameof(Transfer))]
public class Transfer: IEntityGuid, ITimeStampInfo, IProductForeignKey, IUserProductMappingRelation<Guid?> public class Transfer: IEntityGuid, ITimeStampInfo, IProductForeignKey, IUserProductMappingRelation<Guid?>, IUserForeignKey
{ {
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } public Guid Id { get; set; }
@ -17,6 +17,7 @@ public class Transfer: IEntityGuid, ITimeStampInfo, IProductForeignKey, IUserPro
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OrderId { get; } public int OrderId { get; }
public Guid UserId { get; set; }
public Guid ProductId { get; set; } public Guid ProductId { get; set; }
public Guid? UserProductMappingId { get; set; } public Guid? UserProductMappingId { get; set; }
public Guid? UserProductToCarId { get; set; } public Guid? UserProductToCarId { get; set; }
@ -36,8 +37,8 @@ public class Transfer: IEntityGuid, ITimeStampInfo, IProductForeignKey, IUserPro
[MaxLength(200)] public string? ToAddress { get; set; } [MaxLength(200)] public string? ToAddress { get; set; }
[MaxLength(250)] public string? Comment { get; set; } [MaxLength(250)] public string? Comment { get; set; }
[Column("ReferralProductId")] //[Column("ReferralProductId")]
public Guid? ReferralProductId { get; set; } public Guid? ReferralId { get; set; }
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }

View File

@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo;
using TIAM.Entities.Users;
namespace TIAM.Entities.Transfers;
[Table(nameof(TransferToDriver))]
public class TransferToDriver : IEntityGuid, ITimeStampInfo, IUserProductMappingForeignKey
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public Guid TransferId { get; set; }
public Guid UserProductMappingId { get; set; }
public Guid CarId { get; set; }
public string LicencePlate { get; set; }
public double Price { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}

View File

@ -30,6 +30,7 @@ public class UserProductMapping : IEntityGuid, IUserRelation, IProductRelation,
//private string? JsonDetails { get; set; } //private string? JsonDetails { get; set; }
//[Column("JsonDetailModel")] //[Column("JsonDetailModel")]
[NotMapped]
public UserProductJsonDetailModel? JsonDetailModel { get; set; } = null; public UserProductJsonDetailModel? JsonDetailModel { get; set; } = null;
public DateTime Created { get; set; } public DateTime Created { get; set; }

View File

@ -11,6 +11,7 @@ using TIAM.Database.DataLayers.Admins;
using TIAM.Database.DataLayers.TransferDestinations; using TIAM.Database.DataLayers.TransferDestinations;
using TIAM.Database.DataLayers.Users; using TIAM.Database.DataLayers.Users;
using TIAM.Database.DbContexts; using TIAM.Database.DbContexts;
using TIAM.Entities.Products;
using TIAM.Entities.Transfers; using TIAM.Entities.Transfers;
using TIAM.Entities.Users; using TIAM.Entities.Users;
using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models;
@ -47,6 +48,51 @@ namespace TIAMWebApp.Server.Controllers
_adminDal = adminDal; _adminDal = adminDal;
} }
public double GetTransferPrice(Guid productId, Guid fromTransferDestinationId, Guid toTranferDestinationId)
{
throw new NotImplementedException();
}
public double GetTransferPrice(Guid productId, TransferDestination fromTransferDestination, TransferDestination toTransferDestination, in byte seatNumber)
{
var product = _adminDal.GetProductById(productId);
if (product == null) return -1;
return GetTransferPrice(product, fromTransferDestination, toTransferDestination, in seatNumber);
}
public double GetTransferPrice(Product product, TransferDestination fromTransferDestination, TransferDestination toTransferDestination, in byte seatNumber)
{
var baseDestination = product.Profile.AddressId == fromTransferDestination.AddressId ? toTransferDestination : fromTransferDestination;
var transferDestinationToProduct = _adminDal.GetTransferDestinationToProduct(product.Id, baseDestination.Id);
var tranferDestinationPrice = transferDestinationToProduct ?? baseDestination as ITransfeDestinationPrices;
var price = GetSeatNumberPrice(in tranferDestinationPrice, seatNumber);
//TODO: ExtraPrice - J.
return price;
}
public double GetSeatNumberPrice(in ITransfeDestinationPrices transfeDestinationPrices, in byte seatNumber)
=> GetSeatNumberPrice(transfeDestinationPrices.Price, transfeDestinationPrices.Price2, transfeDestinationPrices.Price3, seatNumber);
public double GetSeatNumberPrice(in double price, in double? price2, in double? price3, in byte seatNumber)
{
if (seatNumber >= (byte)SeatNumberPriceType.Price3SeatNum)
return price3 ?? price; //TODO: *seatnum percent - J.
if (seatNumber >= (byte)SeatNumberPriceType.Price2SeatNum)
return price2 ?? price; //TODO: *seatnum percent - J.
return price;
}
//public double GetExtraPrice(bool? extraPriceType){}
[AllowAnonymous] [AllowAnonymous]
[HttpGet] [HttpGet]
[Route(APIUrls.GetTransferDestinationsRouteName)] [Route(APIUrls.GetTransferDestinationsRouteName)]

View File

@ -19,6 +19,7 @@ namespace TIAMWebApp.Shared.Application.Services
this.logToBrowserConsole = logToBrowserConsole; this.logToBrowserConsole = logToBrowserConsole;
} }
public async Task<List<TransferDestination>> GetDestinationsAsync() public async Task<List<TransferDestination>> GetDestinationsAsync()
{ {