diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index d669d65b..aaacd18e 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -41,6 +41,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/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 3b19f2d0..75650c45 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -29,6 +29,16 @@ public class SignalRTags : AcSignalRTags public const int GetProfileById = 22; public const int UpdateProfile = 23; - //public const int AddAddress = 24; - //public const int RemoveAddress = 25; + //public const int AddProfile = 24; + //public const int RemoveProfile = 25; + + public const int GetUserProductMappingsForProduct = 26; + 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/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/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 71a998dd..1c6707e6 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -18,6 +18,8 @@ using AyCode.Utils.Extensions; using TIAM.Services; using TIAMWebApp.Server.Services; using TIAM.Entities.Transfers; +using TIAMWebApp.Shared.Application.Services; +using TIAM.Entities.Drivers; namespace TIAMWebApp.Server.Controllers { @@ -173,17 +175,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); @@ -191,6 +192,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] @@ -207,6 +234,90 @@ 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 userProductMappingDictionary = new Dictionary(); + + var serviceProviders = adminDal.GetCarByUserProductMappingId(Guid.Parse(userProductMappingId)); + + var myServiceproviders = serviceProviders.Where(x => x.Id == Guid.Parse(userProductMappingId)).ToDictionary(x => x.Id, x => x.Name); + //put serviceprovider id and name into a dictionary + + return myServiceproviders; + } + + [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/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index a74063fd..96a3b2b0 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 = "GetCarsForUserProductMapping"; + public const string CreateCar = ServiceProviderAPI + CreateCarRouteName; + + public const string UpdateCarRouteName = "GetCarsForUserProductMapping"; + public const string UpdateCar = ServiceProviderAPI + UpdateCarRouteName; + + public const string DeleteCarRouteName = "GetCarsForUserProductMapping"; + 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 a866a8e4..886d7078 100644 --- a/TIAMWebApp/Shared/Models/CreateAssignedUserModel.cs +++ b/TIAMWebApp/Shared/Models/CreateAssignedUserModel.cs @@ -13,5 +13,7 @@ namespace TIAMWebApp.Shared.Application.Models public Guid UserId { get; set; } + public int? Permission { get; set; } + } }