Compare commits

..

6 Commits

Author SHA1 Message Date
Adam 62e4ec82da bleh 2024-05-28 14:16:40 +02:00
Adam 7921cf5e95 Merge 2024-05-28 13:27:07 +02:00
Adam 61f6a49836 Not working createServiceProvider 2024-05-28 13:20:28 +02:00
Adam cf117ba079 updtaecompany 2024-05-27 21:53:32 +02:00
Adam 4184c08392 Merge 2024-05-27 21:53:24 +02:00
Adam d7188250e4 bleh 2024-05-27 21:47:40 +02:00
13 changed files with 176 additions and 130 deletions

View File

@ -4,12 +4,15 @@ using AyCode.Database.DbSets.Messages;
using AyCode.Database.DbSets.Users; using AyCode.Database.DbSets.Users;
using AyCode.Models.Enums; using AyCode.Models.Enums;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using TIAM.Core; using TIAM.Core;
//using TIAM.Database.DataLayers.ServiceProviders; //using TIAM.Database.DataLayers.ServiceProviders;
using TIAM.Database.DbContexts.Admins; using TIAM.Database.DbContexts.Admins;
using TIAM.Database.DbSets.Emails; using TIAM.Database.DbSets.Emails;
using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Permissions;
using TIAM.Database.DbSets.Products; using TIAM.Database.DbSets.Products;
using TIAM.Database.DbSets.ServiceProvider;
using TIAM.Database.DbSets.Transfers; using TIAM.Database.DbSets.Transfers;
using TIAM.Database.DbSets.Users; using TIAM.Database.DbSets.Users;
using TIAM.Entities.Addresses; using TIAM.Entities.Addresses;
@ -220,11 +223,7 @@ namespace TIAM.Database.DataLayers.Admins
#endregion EmailMessage #endregion EmailMessage
//15. (IServiceProviderDataService) Create service provider //15. (IServiceProviderDataService) Create service provider
public Task<bool> CreateServiceProviderAsync(Company serviceProvider) public Task<bool> CreateServiceProviderAsync(Company serviceProvider) => SessionAsync(ctx => ctx.AddServiceProvider(serviceProvider));
{
Context.CreateServiceProvider(serviceProvider);
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
}
public bool CreateProductAsync(Product product) public bool CreateProductAsync(Product product)
{ {
@ -234,21 +233,15 @@ namespace TIAM.Database.DataLayers.Admins
return result.Result > 0; return result.Result > 0;
} }
public Task<List<Company>> GetServiceProvidersAsync() public Task<List<Company>> GetServiceProvidersAsync() => SessionAsync(ctx => ctx.GetServiceProviders().ToList());
{
return SessionAsync(ctx => ctx.ServiceProviders.ToList());
}
public Task<string> GetServiceProvidersJsonAsync() public Task<string> GetServiceProvidersJsonAsync()
{ {
return SessionAsync(ctx => ctx.ServiceProviders.ToJson()); return SessionAsync(ctx => ctx.ServiceProviders.ToJson());
} }
public virtual Task<Company?> GetServiceProviderByIdAsync(Guid id)
{ public virtual Task<Company?> GetServiceProviderByIdAsync(Guid id) => SessionAsync(ctx => ctx.GetServiceProviderById(id));
GlobalLogger.Info($@"Getting serviceProvider from db {id}");
return Context.ServiceProviders.SingleOrDefaultAsync(x => x.Id == id);
}
//public Task<UserProductMapping> CreateUserProductMappingAsync(UserProductMapping userProductMapping) //public Task<UserProductMapping> CreateUserProductMappingAsync(UserProductMapping userProductMapping)
//{ //{
@ -260,64 +253,12 @@ namespace TIAM.Database.DataLayers.Admins
#region ServiceProviders #region ServiceProviders
//14. (IserviceProviderDataService) Update service provider //14. (IserviceProviderDataService) Update service provider
public Task<bool> UpdateServiceProviderAsync(Company serviceProvider) public Task<bool> UpdateServiceProviderAsync(Company company) => TransactionAsync(ctx => ctx.UpdateServiceProvider(company));
{
var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id);
if (dbServiceProvider != null)
{
dbServiceProvider = serviceProvider;
Context.ServiceProviders.Update(dbServiceProvider);
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
}
else
{
throw new Exception("ServiceProvider not found");
}
}
//13. (IserviceProviderDataService) delete service provider //13. (IserviceProviderDataService) delete service provider
public Task<bool> DeleteServiceProviderAsync(Guid id) public Task<bool> DeleteServiceProviderAsync(Guid id) => TransactionAsync(ctx => ctx.RemoveServiceProvider(id));
{
using (var transaction = Context.Database.BeginTransaction())
{
var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == id);
if (dbServiceProvider != null)
{
//get products for this provider
var products = Context.Products.Where(x => x.ServiceProviderId == id).ToList();
/*foreach (var productItem in products)
{
//delete products
var permissionContextMappings = Context.PermissionContextMappings.Where(x => x.ContextId == productItem.Id).ToList();
//iterate through every row
foreach (var item in permissionContextMappings)
{
if (item.SubjectType == (int)PermissionContextMappingSubjectType.Group)
{
//get users in the permissiongroup
var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == item.Id).ToList();
//remove every row (users) from permissiongroup
foreach (var user in permissionGroupUserMapping)
{
Context.PermissionGroupUserMappings.Remove(user);
}
}
}
//remove permissioncontextmappings
Context.PermissionContextMappings.RemoveRange(permissionContextMappings);
}*/
Context.Products.RemoveRange(products);
Context.ServiceProviders.Remove(dbServiceProvider);
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
}
else
{
return Task.FromResult(false);
}
}
}
//17. (IServiceProviderDataService) get service provider by ownerId //17. (IServiceProviderDataService) get service provider by ownerId
public Task<List<Company>> GetServiceProvidersByOwnerIdAsync() public Task<List<Company>> GetServiceProvidersByOwnerIdAsync()

View File

@ -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.Products;
using TIAM.Database.DbSets.Transfers;
using TIAM.Database.DbSets.Users; using TIAM.Database.DbSets.Users;
using TIAM.Entities.Permissions; using TIAM.Entities.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders; using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Transfers;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.Admins namespace TIAM.Database.DbContexts.Admins
@ -123,16 +126,8 @@ namespace TIAM.Database.DbContexts.Admins
return serviceProvider; 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); public static bool UpdateServiceProvider(this IAdminDbContext ctx, Company serviceProvider)
if (existingServiceProvider == null) return null; => ctx.ServiceProviders.Update(serviceProvider).State == EntityState.Modified;
existingServiceProvider.Name = serviceProvider.Name;
existingServiceProvider.OwnerId = serviceProvider.OwnerId;
return existingServiceProvider;
}
} }
} }

View File

@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore;
using TIAM.Database.DbSets.Transfers;
using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Transfers;
namespace TIAM.Database.DbSets.ServiceProvider;
public static class ServiceProviderDbSetExtensions
{
#region Add, Update, Remove
public static bool AddServiceProvider(this IServiceProviderDbSet ctx, Company company)
=> ctx.ServiceProviders.Add(company).State == EntityState.Added;
public static bool RemoveServiceProvider(this IServiceProviderDbSet ctx, Company company)
=> ctx.ServiceProviders.Remove(company).State == EntityState.Deleted;
public static bool RemoveServiceProvider(this IServiceProviderDbSet ctx, Guid companyId)
{
var company = ctx.GetServiceProviderById(companyId);
return company == null || ctx.RemoveServiceProvider(company);
}
#endregion Add, Update, Remove
public static Company? GetServiceProviderById(this IServiceProviderDbSet ctx, Guid companyId)
=> ctx.ServiceProviders.FirstOrDefault(x => x.Id == companyId);
public static IQueryable<Company> GetServiceProviders(this IServiceProviderDbSet ctx)
=> ctx.ServiceProviders;
public static List<Company> GetServiceProvidersByOwnerId(this IServiceProviderDbSet ctx, Guid ownerId)
=> ctx.ServiceProviders.Where(x => x.OwnerId == ownerId).ToList();
}

View File

@ -18,7 +18,6 @@
<Folder Include="DataLayers\Permissions\" /> <Folder Include="DataLayers\Permissions\" />
<Folder Include="DataLayers\Products\" /> <Folder Include="DataLayers\Products\" />
<Folder Include="DbSets\Addresses\" /> <Folder Include="DbSets\Addresses\" />
<Folder Include="DbSets\ServiceProvider\" />
<Folder Include="Extensions\" /> <Folder Include="Extensions\" />
<Folder Include="ModelBuilders\Emails\" /> <Folder Include="ModelBuilders\Emails\" />
<Folder Include="ModelBuilders\Profiles\" /> <Folder Include="ModelBuilders\Profiles\" />

View File

@ -15,4 +15,6 @@ public class SignalRTags : AcSignalRTags
public const int AddTransferAsync = 8; public const int AddTransferAsync = 8;
public const int DeleteTransferAsync = 9; public const int DeleteTransferAsync = 9;
public const int GetCompaniesAsync = 10; public const int GetCompaniesAsync = 10;
public const int UpdateCompanyAsync = 11;
public const int CreateCompanyAsync = 12;
} }

View File

@ -198,7 +198,7 @@
SetOwnerPopupVisible = true; SetOwnerPopupVisible = true;
} }
async Task<bool> SetOwner(Guid CompanyId) async Task<Company> SetOwner(Guid CompanyId)
{ {
//get user id from DB //get user id from DB
var userModelDto = await userDataService.GetUserByEmailAsync(UpdateOwnerIdText); var userModelDto = await userDataService.GetUserByEmailAsync(UpdateOwnerIdText);
@ -207,7 +207,7 @@
var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyId); var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyId);
if (target == null) if (target == null)
{ {
return false; return null;
} }
else else
{ {
@ -277,45 +277,34 @@
} }
else else
{ {
var transferEditModel = (Company)e.EditModel; //TODO not valid cast var companyEditModel = (Company)e.EditModel; //TODO not valid cast
transferEditModel.Id = Guid.NewGuid(); companyEditModel.Id = Guid.NewGuid();
transferEditModel.AffiliateId = Guid.NewGuid(); companyEditModel.AffiliateId = Guid.NewGuid();
transferEditModel.Name = "Company name"; companyEditModel.Name = "Company name";
transferEditModel.OwnerId = Guid.Empty; companyEditModel.OwnerId = Guid.Empty;
transferEditModel.ProfileId = Guid.NewGuid(); companyEditModel.ProfileId = Guid.NewGuid();
} }
} }
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{ {
bool success = false; Company resultCompany = null;
if (e.IsNew) if (e.IsNew)
{ {
//add new orderData to orderData array //add new orderData to orderData array
_logger.Info("New orderData added"); _logger.Info("New orderData added");
//await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); resultCompany = await serviceProviderDataService.CreateServiceProviderAsync((Company)e.EditModel);
} }
else else
{ {
_logger.Info("orderData updated at id " + ((Company)e.EditModel).Id); _logger.Info("orderData updated at id " + ((Company)e.EditModel).Id);
success = await serviceProviderDataService.UpdateServiceProviderAsync((Company)e.EditModel); resultCompany = await serviceProviderDataService.UpdateServiceProviderAsync((Company)e.EditModel);
} }
//get transfer from TransferData by Id
// foreach (var transferToModify in (List<Transfer>)TransferData) if (resultCompany!=null)
// {
// myModel = (Transfer)e.EditModel;
// if (transferToModify.Id == myModel.Id)
// {
// //transferToModify.Driver = myModel.Driver;
// }
// }
if (success)
{ {
//TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J. //TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync(); await UpdateDataAsync();

View File

@ -10,6 +10,10 @@ using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users; using TIAM.Entities.Users;
using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models;
using Product = TIAM.Entities.Products.Product; 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 namespace TIAMWebApp.Server.Controllers
{ {
@ -29,36 +33,43 @@ namespace TIAMWebApp.Server.Controllers
} }
//15. //15.
[AllowAnonymous]
[HttpPost] [HttpPost]
[Route(APIUrls.CreateServiceProviderRouteName)] [Route(APIUrls.CreateServiceProviderRouteName)]
[Tags("In-Progress", "ServiceProvider")] [Tags("In-Progress", "ServiceProvider")]
[EndpointSummary("Create assigned user")] [EndpointSummary("Create service provider")]
public async Task<IActionResult> CreateServiceProvider([FromBody] ServiceProviderModel serializedServiceProviderModel) public async Task<IActionResult> CreateServiceProvider([FromBody] ServiceProviderModel serializedServiceProviderModel)
{ {
GlobalLogger.Info(@"CreateUser called"); GlobalLogger.Info(@"CreateUser called");
//if (serializedServiceProviderModel.GetArrayLength() == 0)
if (serializedServiceProviderModel == null) if (serializedServiceProviderModel == null)
{ {
return BadRequest("SerializedLoginModel is required"); return BadRequest("SerializedLoginModel is required");
} }
else else
{ {
//ServiceProviderModel? serviceProvider = JObject.Parse(serializedServiceProviderModel.GetRawText()).ToObject<ServiceProviderModel>();
//Company? serviceProvider = JObject.Parse(serializedServiceProviderModel.GetRawText()).ToObject<Company>();
var serviceProvider = serializedServiceProviderModel; var serviceProvider = serializedServiceProviderModel;
if (serviceProvider != null) 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 id = Guid.NewGuid();
var name = serializedServiceProviderModel.Name; var name = serviceProvider.Name;
var ownerId = serializedServiceProviderModel.OwnerId; 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)
if (name is null || ownerId == Guid.Empty)
{ {
return BadRequest("Invalid request"); return BadRequest("Invalid request");
} }
@ -66,12 +77,27 @@ namespace TIAMWebApp.Server.Controllers
{ {
GlobalLogger.Info($@"ServiceProvider to be created: {id}, {name}, {ownerId}"); GlobalLogger.Info($@"ServiceProvider to be created: {id}, {name}, {ownerId}");
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
{
await _adminDal.CreateServiceProviderAsync(new Company(id, name, ownerId, Guid.NewGuid())); return Ok(toCreate);
}
} }
} }
return Ok("yes"); else {
return BadRequest();
}
} }
} }
@ -95,6 +121,24 @@ namespace TIAMWebApp.Server.Controllers
return await _adminDal.GetServiceProviderByIdAsync(id); return await _adminDal.GetServiceProviderByIdAsync(id);
} }
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.UpdateServiceProviderRouteName)]
public async Task<Company> UpdateServiceProvider(Company companyToModify)
{
GlobalLogger.Info($"UpdateServiceProvider called! + {companyToModify.Id}");
var result = await _adminDal.UpdateServiceProviderAsync(companyToModify);
if(result)
{
return companyToModify;
}
else
{
return null;
}
}
//17. //17.
[Authorize] [Authorize]
[HttpPost] [HttpPost]

View File

@ -293,6 +293,7 @@ namespace TIAMWebApp.Server.Controllers
} }
[AllowAnonymous] [AllowAnonymous]
[HttpPost] [HttpPost]
[Route(APIUrls.CreateTransfersRouteName)] [Route(APIUrls.CreateTransfersRouteName)]

View File

@ -84,6 +84,14 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await serviceProviderAPIController.GetServiceProviders()), requestId); await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await serviceProviderAPIController.GetServiceProviders()), requestId);
return; return;
case SignalRTags.CreateCompanyAsync:
//var company = message!.MessagePackTo<SignalPostJsonDataMessage<Company>>().PostData;
//await serviceProviderAPIController.CreateServiceProvider(company);
//await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, company.ToJson()), requestId);
return;
default: default:
_logger.Error($"Server OnReceiveMessage; messageTag not found! messageTag: {messageTag}"); _logger.Error($"Server OnReceiveMessage; messageTag not found! messageTag: {messageTag}");
break; break;

View File

@ -21,10 +21,10 @@ namespace TIAMWebApp.Shared.Application.Interfaces
public Task DeleteServiceProviderAsync(Guid serviceProviderId); public Task DeleteServiceProviderAsync(Guid serviceProviderId);
//14 Update service provider //14 Update service provider
public Task<bool> UpdateServiceProviderAsync(Company serviceProvider); public Task<Company> UpdateServiceProviderAsync(Company serviceProvider);
//15. Create service provider //15. Create service provider
public Task<bool> CreateServiceProviderAsync(Company serviceProvider); public Task<Company> CreateServiceProviderAsync(Company serviceProvider);
//16. (IServiceProviderDataService) get all service providers //16. (IServiceProviderDataService) get all service providers
public Task<List<Company>> GetServiceProvidersAsync(); public Task<List<Company>> GetServiceProvidersAsync();

View File

@ -102,7 +102,7 @@ namespace TIAMWebApp.Shared.Application.Models
public const string UpdateTransferDestination = TransferDataAPI + UpdateTransferDestinationRouteName; public const string UpdateTransferDestination = TransferDataAPI + UpdateTransferDestinationRouteName;
//serviceprovider //serviceprovider
public const string CreateServiceProviderRouteName = "CreateServiceProvider"; public const string CreateServiceProviderRouteName = "CreateServiceProvider/";
public const string CreateServiceProvider = ServiceProviderAPI+CreateServiceProviderRouteName; public const string CreateServiceProvider = ServiceProviderAPI+CreateServiceProviderRouteName;
public const string GetServiceProviderByIdRouteName = "GetServiceProviderById"; public const string GetServiceProviderByIdRouteName = "GetServiceProviderById";
@ -111,6 +111,11 @@ namespace TIAMWebApp.Shared.Application.Models
public const string GetServiceProvidersByOwnerIdRouteName = "GetServiceProvidersByOwnerId"; public const string GetServiceProvidersByOwnerIdRouteName = "GetServiceProvidersByOwnerId";
public const string GetServiceProvidersByOwnerId = ServiceProviderAPI+GetServiceProvidersByOwnerIdRouteName; public const string GetServiceProvidersByOwnerId = ServiceProviderAPI+GetServiceProvidersByOwnerIdRouteName;
public const string UpdateServiceProviderRouteName = "UpdateServiceProvider";
public const string UpdateServiceProviderUrl = ServiceProviderAPI + UpdateServiceProviderRouteName;
public const string GetQrCodeByProductIdRouteName = "GetQRCodeByProductId"; public const string GetQrCodeByProductIdRouteName = "GetQRCodeByProductId";
public const string GetQrCodeByProductId = ServiceProviderAPI+GetQrCodeByProductIdRouteName; public const string GetQrCodeByProductId = ServiceProviderAPI+GetQrCodeByProductIdRouteName;

View File

@ -11,12 +11,14 @@ namespace TIAMWebApp.Shared.Application.Models
public Guid Id { get; set; } public Guid Id { get; set; }
public string? Name { get; set; } public string? Name { get; set; }
public Guid OwnerId { get; set; } public Guid OwnerId { get; set; }
public int CommissionPercent { get; set; }
public ServiceProviderModel() { } public ServiceProviderModel() { }
public ServiceProviderModel(Guid id, string name, Guid ownerId) public ServiceProviderModel(Guid id, string name, Guid ownerId, int commissionPercent)
{ {
Id = id; Id = id;
Name = name; Name = name;
OwnerId = ownerId; OwnerId = ownerId;
CommissionPercent = commissionPercent;
} }
} }
} }

View File

@ -18,6 +18,8 @@ using TIAMWebApp.Shared.Application.Models.ClientSide;
using TIAMWebApp.Shared.Application.Utility; using TIAMWebApp.Shared.Application.Utility;
using TIAM.Services; using TIAM.Services;
using System.Linq; using System.Linq;
using TIAM.Entities.Transfers;
using System.Net.WebSockets;
namespace TIAMWebApp.Shared.Application.Services namespace TIAMWebApp.Shared.Application.Services
{ {
@ -51,9 +53,28 @@ namespace TIAMWebApp.Shared.Application.Services
} }
//15. //15.
public Task<bool> CreateServiceProviderAsync(Company serviceProvider) public async Task<Company> 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. //21.
@ -144,9 +165,10 @@ namespace TIAMWebApp.Shared.Application.Services
} }
//14. //14.
public Task<bool> UpdateServiceProviderAsync(Company serviceProvider) public async Task<Company> UpdateServiceProviderAsync(Company company)
{ {
throw new NotImplementedException(); var result = await _devAdminSignalClient.PostDataAsync(SignalRTags.UpdateCompanyAsync, company);
return result;
} }
public async Task<string> GetQRCodeByProductIdAsync(Guid productId) public async Task<string> GetQRCodeByProductIdAsync(Guid productId)