diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index d379626b..34c8ddf0 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -4,6 +4,8 @@ using AyCode.Database.DbSets.Messages; using AyCode.Database.DbSets.Users; using AyCode.Models.Enums; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using System; using TIAM.Core; //using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DbContexts.Admins; @@ -251,7 +253,8 @@ namespace TIAM.Database.DataLayers.Admins #region ServiceProviders //14. (IserviceProviderDataService) Update service provider - public Task UpdateServiceProviderAsync(Company company) => TransactionAsync(ctx => ctx.UpdateServiceProvider(company)); + public Task UpdateServiceProviderAsync(Company company) => TransactionAsync(ctx => ctx.UpdateServiceProvider(company)); + //13. (IserviceProviderDataService) delete service provider public Task DeleteServiceProviderAsync(Guid id) => TransactionAsync(ctx => ctx.RemoveServiceProvider(id)); diff --git a/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs b/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs index 076c17d1..f7efce05 100644 --- a/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs +++ b/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs @@ -1,9 +1,12 @@ -using TIAM.Database.DbSets.Permissions; +using Microsoft.EntityFrameworkCore; +using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Products; +using TIAM.Database.DbSets.Transfers; using TIAM.Database.DbSets.Users; using TIAM.Entities.Permissions; using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Transfers; using TIAM.Entities.Users; namespace TIAM.Database.DbContexts.Admins @@ -123,16 +126,8 @@ namespace TIAM.Database.DbContexts.Admins return serviceProvider; } - public static Company UpdateServiceProvider(this IAdminDbContext ctx, Company serviceProvider) - { - if (serviceProvider == null) return null; - var existingServiceProvider = ctx.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); - if (existingServiceProvider == null) return null; - - existingServiceProvider.Name = serviceProvider.Name; - existingServiceProvider.OwnerId = serviceProvider.OwnerId; - return existingServiceProvider; - } + public static bool UpdateServiceProvider(this IAdminDbContext ctx, Company serviceProvider) + => ctx.ServiceProviders.Update(serviceProvider).State == EntityState.Modified; } } diff --git a/TIAM.Database/DbSets/ServiceProvider/ServiceProviderDbSetExtensions.cs b/TIAM.Database/DbSets/ServiceProvider/ServiceProviderDbSetExtensions.cs index 4f38d4aa..7b095931 100644 --- a/TIAM.Database/DbSets/ServiceProvider/ServiceProviderDbSetExtensions.cs +++ b/TIAM.Database/DbSets/ServiceProvider/ServiceProviderDbSetExtensions.cs @@ -1,5 +1,7 @@ using Microsoft.EntityFrameworkCore; +using TIAM.Database.DbSets.Transfers; using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Transfers; namespace TIAM.Database.DbSets.ServiceProvider; diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 631ebc4d..066c83ac 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -15,5 +15,6 @@ public class SignalRTags : AcSignalRTags public static readonly int GetCompaniesAsync = 8; public static readonly int UpdateCompanyAsync = 9; + public static readonly int CreateCompanyAsync = 10; } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 365e4e5e..8f33d017 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -277,12 +277,12 @@ } else { - var transferEditModel = (Company)e.EditModel; //TODO not valid cast - transferEditModel.Id = Guid.NewGuid(); - transferEditModel.AffiliateId = Guid.NewGuid(); - transferEditModel.Name = "Company name"; - transferEditModel.OwnerId = Guid.Empty; - transferEditModel.ProfileId = Guid.NewGuid(); + var companyEditModel = (Company)e.EditModel; //TODO not valid cast + companyEditModel.Id = Guid.NewGuid(); + companyEditModel.AffiliateId = Guid.NewGuid(); + companyEditModel.Name = "Company name"; + companyEditModel.OwnerId = Guid.Empty; + companyEditModel.ProfileId = Guid.NewGuid(); } } @@ -294,7 +294,7 @@ { //add new orderData to orderData array _logger.Info("New orderData added"); - //await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); + resultCompany = await serviceProviderDataService.CreateServiceProviderAsync((Company)e.EditModel); } else { @@ -302,18 +302,7 @@ resultCompany = await serviceProviderDataService.UpdateServiceProviderAsync((Company)e.EditModel); - } - //get transfer from TransferData by Id - - // foreach (var transferToModify in (List)TransferData) - // { - // myModel = (Transfer)e.EditModel; - - // if (transferToModify.Id == myModel.Id) - // { - // //transferToModify.Driver = myModel.Driver; - // } - // } + } if (resultCompany!=null) { diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index ef697e7a..a0913f7b 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -472,7 +472,7 @@ void ColumnChooserButton_Click() { - Grid2.ShowColumnChooser(); + Grid2.ShowColumnChooser(); } IGrid Grid2 { get; set; } diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 2193f501..a6f014e3 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -11,6 +11,9 @@ using TIAM.Entities.Users; using TIAMWebApp.Shared.Application.Models; using Product = TIAM.Entities.Products.Product; using TIAM.Entities.Transfers; +using System.Text.Json.Nodes; +using System.Text.Json; +using Newtonsoft.Json.Linq; namespace TIAMWebApp.Server.Controllers { @@ -30,36 +33,43 @@ namespace TIAMWebApp.Server.Controllers } //15. + [AllowAnonymous] [HttpPost] [Route(APIUrls.CreateServiceProviderRouteName)] [Tags("In-Progress", "ServiceProvider")] - [EndpointSummary("Create assigned user")] + [EndpointSummary("Create service provider")] public async Task CreateServiceProvider([FromBody] ServiceProviderModel serializedServiceProviderModel) { GlobalLogger.Info(@"CreateUser called"); + //if (serializedServiceProviderModel.GetArrayLength() == 0) if (serializedServiceProviderModel == null) { return BadRequest("SerializedLoginModel is required"); } else { - //ServiceProviderModel? serviceProvider = JObject.Parse(serializedServiceProviderModel.GetRawText()).ToObject(); + + //Company? serviceProvider = JObject.Parse(serializedServiceProviderModel.GetRawText()).ToObject(); var serviceProvider = serializedServiceProviderModel; - - if (serviceProvider != null) { - //add userModel to users array - //Array.Resize(ref users, users.Length + 1); - //users[users.Length - 1] = new UserModel(user.Email, user.PhoneNumber, user.Password); + var id = Guid.NewGuid(); - var name = serializedServiceProviderModel.Name; - var ownerId = serializedServiceProviderModel.OwnerId; + var name = serviceProvider.Name; + var commissionRate = serviceProvider.CommissionPercent; + Guid ownerId; + if(serviceProvider.OwnerId == Guid.Empty) + { + //no owner set yet + ownerId = serviceProvider.OwnerId; + } + else + { + ownerId = serviceProvider.OwnerId; + } - - - if (name is null || ownerId == Guid.Empty) + if (name is null) { return BadRequest("Invalid request"); } @@ -67,12 +77,27 @@ namespace TIAMWebApp.Server.Controllers { GlobalLogger.Info($@"ServiceProvider to be created: {id}, {name}, {ownerId}"); - - await _adminDal.CreateServiceProviderAsync(new Company(id, name, ownerId, Guid.NewGuid())); + Company toCreate = new Company(id, name, ownerId, Guid.NewGuid()); + toCreate.CommissionPercent = commissionRate; + var result = await _adminDal.CreateServiceProviderAsync(toCreate); + if (!result) + { + serviceProvider = null; + return BadRequest(result); + } + else + { + + return Ok(toCreate); + } } } - return Ok("yes"); + else { + + return BadRequest(); + + } } } @@ -101,10 +126,17 @@ namespace TIAMWebApp.Server.Controllers [Route(APIUrls.UpdateServiceProviderRouteName)] public async Task UpdateServiceProvider(Company companyToModify) { - GlobalLogger.Info($"UpdateServiceProvider called! + {Request.ReadFormAsync()}"); + GlobalLogger.Info($"UpdateServiceProvider called! + {companyToModify.Id}"); var result = await _adminDal.UpdateServiceProviderAsync(companyToModify); + if(result) + { + return companyToModify; - return result; + } + else + { + return null; + } } //17. diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index 2855b334..6f2a23cf 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -293,6 +293,7 @@ namespace TIAMWebApp.Server.Controllers } + [AllowAnonymous] [HttpPost] [Route(APIUrls.CreateTransfersRouteName)] @@ -405,7 +406,7 @@ namespace TIAMWebApp.Server.Controllers [Route(APIUrls.UpdateTransferRouteName)] public async Task UpdateTransfer(Transfer transferToModify) { - _logger.Info($"UpdateTransfer called! + {Request.ReadFormAsync()}"); + _logger.Info($"UpdateTransfer called! + {transferToModify.Id}"); await _adminDal.UpdateTransferAsync(transferToModify); return transferToModify; diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs index 55687320..8757d2b9 100644 --- a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs +++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs @@ -88,12 +88,19 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController } else if (messageTag == SignalRTags.UpdateCompanyAsync) { - var company = message!.MessagePackTo().PostData.JsonTo()!; + var company = message!.MessagePackTo>().PostData; await serviceProviderAPIController.UpdateServiceProvider(company); await ResponseToCaller(messageTag, new SignalResponseMessage(SignalResponseStatus.Success, company.ToJson()), requestId); } - return; + else if (messageTag == SignalRTags.CreateCompanyAsync) + { + //var company = message!.MessagePackTo>().PostData; + + //await serviceProviderAPIController.CreateServiceProvider(company); + //await ResponseToCaller(messageTag, new SignalResponseMessage(SignalResponseStatus.Success, company.ToJson()), requestId); + } + return; } catch (Exception ex) { diff --git a/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs b/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs index 2d085b5a..6b916623 100644 --- a/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs @@ -24,7 +24,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces public Task UpdateServiceProviderAsync(Company serviceProvider); //15. Create service provider - public Task CreateServiceProviderAsync(Company serviceProvider); + public Task CreateServiceProviderAsync(Company serviceProvider); //16. (IServiceProviderDataService) get all service providers public Task> GetServiceProvidersAsync(); diff --git a/TIAMWebApp/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index c98cbb65..ce782464 100644 --- a/TIAMWebApp/Shared/Models/APIUrls.cs +++ b/TIAMWebApp/Shared/Models/APIUrls.cs @@ -102,7 +102,7 @@ namespace TIAMWebApp.Shared.Application.Models public const string UpdateTransferDestination = TransferDataAPI + UpdateTransferDestinationRouteName; //serviceprovider - public const string CreateServiceProviderRouteName = "CreateServiceProvider"; + public const string CreateServiceProviderRouteName = "CreateServiceProvider/"; public const string CreateServiceProvider = ServiceProviderAPI+CreateServiceProviderRouteName; public const string GetServiceProviderByIdRouteName = "GetServiceProviderById"; diff --git a/TIAMWebApp/Shared/Models/ServiceProviderModel.cs b/TIAMWebApp/Shared/Models/ServiceProviderModel.cs index 35a87eef..99f724ac 100644 --- a/TIAMWebApp/Shared/Models/ServiceProviderModel.cs +++ b/TIAMWebApp/Shared/Models/ServiceProviderModel.cs @@ -11,12 +11,14 @@ namespace TIAMWebApp.Shared.Application.Models public Guid Id { get; set; } public string? Name { get; set; } public Guid OwnerId { get; set; } + public int CommissionPercent { get; set; } public ServiceProviderModel() { } - public ServiceProviderModel(Guid id, string name, Guid ownerId) + public ServiceProviderModel(Guid id, string name, Guid ownerId, int commissionPercent) { Id = id; Name = name; OwnerId = ownerId; + CommissionPercent = commissionPercent; } } } diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index ca8a4ef4..00b8010f 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -53,9 +53,28 @@ namespace TIAMWebApp.Shared.Application.Services } //15. - public Task CreateServiceProviderAsync(Company serviceProvider) + public async Task CreateServiceProviderAsync(Company serviceProvider) { - throw new NotImplementedException(); + var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateServiceProvider}"; + var response = await http.PostAsJsonAsync(url, serviceProvider); + if (response != null) + { + var resultCompany = await response.Content.ReadFromJsonAsync(typeof(Company)); + if(resultCompany != null) + { + + return (resultCompany as Company)!; + } + else + { + return null; + } + } + else + { + return null; + } + } //21.