diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 040eeb84..d36256e2 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -35,6 +35,10 @@ namespace TIAM.Database.DataLayers.Admins #region Car public Car? GetCarById(Guid carId) => Session(ctx => ctx.Cars.FirstOrDefault(x => x.Id == carId)); public List GetCarByUserProductMappingId(Guid userProductMappingId) => Session(ctx => ctx.Cars.Where(x => x.UserProductMappingId == userProductMappingId).ToList()); + public Task AddCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Add(car).State == EntityState.Added); + public Task UpdateCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Update(car).State == EntityState.Modified); + public Task RemoveCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Remove(car).State == EntityState.Deleted); + #endregion Car #region Transfer diff --git a/TIAM.Services.Server/MessageSenderService.cs b/TIAM.Services.Server/MessageSenderService.cs index 3332ca57..5b8f0bcb 100644 --- a/TIAM.Services.Server/MessageSenderService.cs +++ b/TIAM.Services.Server/MessageSenderService.cs @@ -58,7 +58,7 @@ namespace TIAM.Services.Server if (message.SenderId == Guid.Empty) { - + message.EmailAddress = "noreply@anataworld.com"; from = new EmailAddress("noreply@anataworld.com", "TourIAm mailservice"); } else @@ -90,8 +90,8 @@ namespace TIAM.Services.Server { Console.WriteLine($"{response.StatusCode}, {response.Body.ReadAsStringAsync()}"); } - - adminDal.AddEmailMessageAsync(message).Forget(); + //message.Id = Guid.NewGuid(); + //adminDal.AddEmailMessageAsync(message).Forget(); } catch(Exception ex) { diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 5afd561a..4892f025 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -40,4 +40,14 @@ public class SignalRTags : AcSignalRTags public const int UpdateProfile = 38; //public const int AddAddress = 39; //public const int RemoveAddress = 40; + + public const int CreateUserProductMapping = 27; + public const int UpdateUserProductMapping = 28; + public const int DeleteUserProductMapping = 29; //set permissions to 0 + + public const int GetCarsForUserProductMapping = 30; + public const int CreateCar = 31; + public const int UpdateCar = 32; + public const int DeleteCar = 33; +} } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs index 0d55b5a7..b263bb03 100644 --- a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs +++ b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs @@ -116,7 +116,7 @@ namespace TIAMSharedUI.Pages.Components _logger.Info("Hellooooo " + type.AssemblyQualifiedName); var propertyList = type.GetProperties(); - var length = propertyList.Length - IgnoreReflection.Count; + //var length = propertyList.Length - IgnoreReflection.Count; //var propertyList = typeof(TestUserData).GetProperties(); formLayoutBuilder.OpenComponent(0); @@ -484,7 +484,7 @@ namespace TIAMSharedUI.Pages.Components layoutItemBuilder.AddAttribute(i++, "Click", EventCallback.Factory.Create(this, OnNext)); layoutItemBuilder.AddAttribute(i++, "SubmitFormOnClick", false); layoutItemBuilder.AddAttribute(i++, "CssClass", "btn btn-primary mt-3"); - if (!(k < length - 1)) + if (!(k < FormSteps.Count - 1)) { layoutItemBuilder.AddAttribute(i++, "disabled", "true"); @@ -520,7 +520,7 @@ namespace TIAMSharedUI.Pages.Components editor.AddAttribute(i++, "type", "submit"); editor.AddAttribute(i++, "class", "btn btn-primary mt-3 w-100"); editor.AddAttribute(i++, "style", "margin: 0 auto"); - if (CurrentStep < length - 1) + if (CurrentStep < FormSteps.Count - 1) { editor.AddAttribute(i++, "disabled", "true"); diff --git a/TIAMSharedUI/Pages/Formula1.razor b/TIAMSharedUI/Pages/Formula1.razor index 25018e36..67292617 100644 --- a/TIAMSharedUI/Pages/Formula1.razor +++ b/TIAMSharedUI/Pages/Formula1.razor @@ -409,7 +409,7 @@ new HeroSliderItem public List TransferIgnorList = new List { - "Id", + "Id", "UserId", "Destination", "PickupAddress", @@ -434,9 +434,9 @@ new HeroSliderItem public async Task SubmitForm(object result) { var orderModel = result as TransferWizardModel; - + //check if user exists - if (sessionService.IsAuthenticated && sessionService.User != null ) + if (sessionService.IsAuthenticated && sessionService.User != null) { //Basic settings orderModel.UserId = sessionService.User.UserModelDto.Id; @@ -453,7 +453,7 @@ new HeroSliderItem if (user != null) { orderModel.UserId = user.Id; - + orderModel.ProductId = user.Products.FirstOrDefault()?.Id; } else @@ -507,6 +507,35 @@ new HeroSliderItem public async Task> ProcessTransfers(TransferWizardModel orderModel) { List transferList = new List(); + double _transferPrice = 0.0f; + if(orderModel.NumberOfPassengers < 5) { + switch (transferList.Count) + { + case (1): + _transferPrice = 119/2; + break; + case (2): + _transferPrice = 199 / 4; + break; + case (3): + _transferPrice = 269 / 6; + break; + } + }else if (orderModel.NumberOfPassengers > 5 && orderModel.NumberOfPassengers < 8) { + switch (transferList.Count) + { + case (1): + _transferPrice = 219f /2; + break; + case (2): + _transferPrice = 359 / 4; + break; + case (3): + _transferPrice = 489 / 6; + break; + } + } + foreach (var date in OrderDates) { @@ -517,6 +546,9 @@ new HeroSliderItem // Outbound trip transfer.PickupAddress = OrderLocation; transfer.Destination = "Hungaroring"; + transfer.PhoneNumber = orderModel.PhoneNumber; + transfer.EmailAddress = orderModel.EmailAddress; + transfer.Price = _transferPrice; transferList.Add(transfer); // Return trip @@ -526,6 +558,7 @@ new HeroSliderItem transfer.Destination = OrderLocation; transfer.PhoneNumber = orderModel.PhoneNumber; transfer.EmailAddress = orderModel.EmailAddress; + transfer.Price = _transferPrice; transferList.Add(transfer); } diff --git a/TIAMSharedUI/Todo.txt b/TIAMSharedUI/Todo.txt new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/TIAMSharedUI/Todo.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/MessageAPIController.cs b/TIAMWebApp/Server/Controllers/MessageAPIController.cs index ad95eca6..af00deed 100644 --- a/TIAMWebApp/Server/Controllers/MessageAPIController.cs +++ b/TIAMWebApp/Server/Controllers/MessageAPIController.cs @@ -51,8 +51,10 @@ namespace TIAMWebApp.Server.Controllers var messageElement = message.Message; Console.WriteLine(message.Message); var result = await _messageSenderService.SendMessageAsync(messageElement, (int)message.MessageType); - //_adminDal.AddEmailMessageAsync((TIAM.Entities.Emails.EmailMessage)SerializedMessageSenderModel.Message); - Console.WriteLine("SendEmail result: " + result); + //_adminDal.AddEmailMessageAsync((TIAM.Entities.Emails.EmailMessage)SerializedMessageSenderModel.Message); + messageElement.EmailAddress = "noreply@anataworld.com"; + _adminDal.AddEmailMessageAsync(messageElement).Forget(); + Console.WriteLine("SendEmail result: " + result); return Ok(result); } diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index dbbdaa5c..609cce54 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -169,17 +169,16 @@ namespace TIAMWebApp.Server.Controllers [Route(APIUrls.CreateUserProductMappingRouteName)] [Tags("Finished", "ServiceProvider")] [EndpointSummary("Create assigned user to product")] - public async Task CreateUserProductMapping(CreateUserProductMappingModel createUserProductMappingModel) + [SignalR(SignalRTags.CreateUserProductMapping)] + public async Task CreateUserProductMapping(UserProductMapping userProductMapping) { - if(createUserProductMappingModel.ContextId == Guid.Empty || createUserProductMappingModel.UserId == Guid.Empty) + if(userProductMapping.ProductId == Guid.Empty || userProductMapping.UserId == Guid.Empty) { return BadRequest("Invalid request"); } else { - _logger.Info($@"CreateUserProductMappings called with ownerId: {createUserProductMappingModel.ContextId}, {createUserProductMappingModel.ContextId}"); - - var userProductMapping = new UserProductMapping(createUserProductMappingModel.ContextId, createUserProductMappingModel.ContextId); + _logger.Info($@"CreateUserProductMappings called with ownerId: {userProductMapping.ProductId}, {userProductMapping.UserId}"); var result = await adminDal.AddUserProductMappingAsync(userProductMapping); @@ -187,6 +186,32 @@ namespace TIAMWebApp.Server.Controllers } } + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.UpdateUserProductMappingRouteName)] + [SignalR(SignalRTags.UpdateUserProductMapping)] + public async Task UpdateUserProductMapping(UserProductMapping userProductMapping) + { + _logger.Info($"UpdateUserProductMapping called! + {userProductMapping.Id}"); + + var result = await adminDal.UpdateUserProductMappingAsync(userProductMapping); + + return result ? userProductMapping.ToJson() : string.Empty; + } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.DeleteUserProductMappingRouteName)] + [SignalR(SignalRTags.DeleteUserProductMapping)] + public async Task DeleteUserProductMapping(UserProductMapping userProductMapping) + { + _logger.Info($"UpdateUserProductMapping called! + {userProductMapping.Id}"); + + var result = await adminDal.RemoveUserProductMappingAsync(userProductMapping.Id); + + return result ? userProductMapping.ToJson() : string.Empty; + } + //23. [AllowAnonymous] [HttpPost] @@ -203,6 +228,85 @@ namespace TIAMWebApp.Server.Controllers //put serviceprovider id and name into a dictionary return myServiceproviders; + } + + [AllowAnonymous] + [HttpGet] + [Route(APIUrls.GetCarsForUserProductMappingRouteName + "/{userProductMappingId}")] + [SignalR(SignalRTags.GetCarsForUserProductMapping)] + public async Task> GetCarsForUserProductMapping(string userProductMappingId) + { + _logger.Info($@"GetCarsForUserProductMapping called with userProductMappingId: {userProductMappingId}"); + + var cars = adminDal.GetCarByUserProductMappingId(Guid.Parse(userProductMappingId)); + + return cars; + } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.CreateCarRouteName)] + [Tags("Finished", "Cars")] + [EndpointSummary("Create car")] + [SignalR(SignalRTags.CreateCar)] + public async Task CreateCar(Car car) + { + if (car.UserProductMappingId == Guid.Empty || car.LicencePlate == null) + { + return BadRequest("Invalid request"); + } + else + { + _logger.Info($@"CreateCar called with ownerId: {car.UserProductMappingId}, {car.LicencePlate}"); + + var result = await adminDal.AddCarAsync(car); + + return Ok(car); + } + } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.UpdateCarRouteName)] + [Tags("Finished", "Cars")] + [EndpointSummary("Update car")] + [SignalR(SignalRTags.UpdateCar)] + public async Task UpdateCar(Car car) + { + if (car.UserProductMappingId == Guid.Empty || car.LicencePlate == null) + { + return BadRequest("Invalid request"); + } + else + { + _logger.Info($@"CreateCar called with ownerId: {car.UserProductMappingId}, {car.LicencePlate}"); + + var result = await adminDal.UpdateCarAsync(car); + + return Ok(car); + } + } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.DeleteCarRouteName)] + [Tags("Finished", "Cars")] + [EndpointSummary("Delete car")] + [SignalR(SignalRTags.DeleteCar)] + public async Task DeleteCar(Car car) + { + if (car.UserProductMappingId == Guid.Empty || car.LicencePlate == null) + { + return BadRequest("Invalid request"); + } + else + { + _logger.Info($@"CreateCar called with ownerId: {car.UserProductMappingId}, {car.LicencePlate}"); + + var result = await adminDal.RemoveCarAsync(car); + + return Ok(car); + } } [HttpPost] diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index 94cd20ac..d88efd4a 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -299,23 +299,23 @@ namespace TIAMWebApp.Server.Controllers [AllowAnonymous] [HttpPost] [Route(APIUrls.CreateTransfersRouteName)] - public async Task CreateTransfers([FromBody] JsonElement serializedTransferModel) + public async Task CreateTransfers([FromBody] JsonElement serializedTransferList) { _logger.Info(@"CreateTransfers called!"); - if (string.IsNullOrEmpty(serializedTransferModel.GetRawText())) + if (string.IsNullOrEmpty(serializedTransferList.GetRawText())) { return BadRequest("SerializedTramsferDestinationWizardModel is required"); } else { - _logger.Info($@"Serialized model: {serializedTransferModel.GetRawText()}"); + _logger.Info($@"Serialized model: {serializedTransferList.GetRawText()}"); var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; - List? transfers = JsonConvert.DeserializeObject>(serializedTransferModel.GetRawText(), settings); + List? transfers = JsonConvert.DeserializeObject>(serializedTransferList.GetRawText(), settings); //List? transfers = JObject.Parse(serializedTransferModel.GetRawText()).ToObject>(); List createdTransfers = new List(); diff --git a/TIAMWebApp/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index a74063fd..0700ced5 100644 --- a/TIAMWebApp/Shared/Models/APIUrls.cs +++ b/TIAMWebApp/Shared/Models/APIUrls.cs @@ -131,18 +131,35 @@ namespace TIAMWebApp.Shared.Application.Models public const string CreateUserProductMappingRouteName = "CreateUserProductMapping"; public const string CreateUserProductMapping = ServiceProviderAPI + CreateUserProductMappingRouteName; + public const string UpdateUserProductMappingRouteName = "UpdateUserProductMapping"; + public const string UpdateUserProductMapping = ServiceProviderAPI + UpdateUserProductMappingRouteName; + + public const string DeleteUserProductMappingRouteName = "DeleteUserProductMapping"; + public const string DeleteUserProductMapping = ServiceProviderAPI + DeleteUserProductMappingRouteName; + public const string GetServiceProvidersRouteName = "GetServiceProviders"; public const string GetServiceProviders = ServiceProviderAPI + GetServiceProvidersRouteName; public const string GetUserProductMappingsForProductRouteName = "GetUserProductMappingsForProduct"; public const string GetUserProductMappingsForProduct = ServiceProviderAPI + GetUserProductMappingsForProductRouteName; + public const string GetCarsForUserProductMappingRouteName = "GetCarsForUserProductMapping"; + public const string GetCarsForUserProductMapping = ServiceProviderAPI + GetCarsForUserProductMappingRouteName; + + public const string CreateCarRouteName = "CreateCar"; + public const string CreateCar = ServiceProviderAPI + CreateCarRouteName; + + public const string UpdateCarRouteName = "UpdateCar"; + public const string UpdateCar = ServiceProviderAPI + UpdateCarRouteName; + + public const string DeleteCarRouteName = "DeleteCar"; + public const string DeleteCar = ServiceProviderAPI + DeleteCarRouteName; //AssingedUsers - public const string CreateAssignedUserRouteName = "CreateAssignedUser"; - public const string CreateAssignedUser = ServiceProviderAPI + CreateAssignedUserRouteName; - public const string GetAssignedUsersForServiceProviderRouteName = "GetAssignedUsersForServiceProvider"; - public const string GetAssignedUsersForServiceProvider = ServiceProviderAPI + GetAssignedUsersForServiceProviderRouteName; + //public const string CreateAssignedUserRouteName = "CreateAssignedUser"; + //public const string CreateAssignedUser = ServiceProviderAPI + CreateAssignedUserRouteName; + //public const string GetAssignedUsersForServiceProviderRouteName = "GetAssignedUsersForServiceProvider"; + //public const string GetAssignedUsersForServiceProvider = ServiceProviderAPI + GetAssignedUsersForServiceProviderRouteName; //permissions //1 diff --git a/TIAMWebApp/Shared/Models/CreateAssignedUserModel.cs b/TIAMWebApp/Shared/Models/CreateAssignedUserModel.cs index 79c13ca2..4d5acf85 100644 --- a/TIAMWebApp/Shared/Models/CreateAssignedUserModel.cs +++ b/TIAMWebApp/Shared/Models/CreateAssignedUserModel.cs @@ -7,5 +7,7 @@ public Guid UserId { get; set; } + public int? Permission { get; set; } + } }