ManageUser update; etc...

This commit is contained in:
Loretta 2024-07-06 15:05:20 +02:00
parent 4beae9c801
commit b05145b571
6 changed files with 85 additions and 74 deletions

View File

@ -214,7 +214,7 @@ namespace TIAM.Database.DataLayers.Admins
public string GetUsersJson() => Session(ctx => ctx.Users.ToJson());
public Task<bool> AddUserAsync(User user) => TransactionAsync(ctx => ctx.AddUser(user));
public Task<bool> UpdateUserAsync(User user) => TransactionAsync(ctx => ctx.UpdateUser(user));
public Task<User?> UpdateUserAsync(User user) => UpdateSafeAsync(user);
public Task<bool> RemoveUserAsync(Guid userId) => TransactionAsync(ctx => ctx.RemoveUser(userId));
#region Product

View File

@ -1,4 +1,5 @@
using AyCode.Database.DataLayers.Users;
using AyCode.Database.DbSets.Users;
using Microsoft.EntityFrameworkCore;
using TIAM.Database.DbContexts.Users;
using TIAM.Entities.Addresses;
@ -23,6 +24,18 @@ namespace TIAM.Database.DataLayers.Users
public Task<List<UserModelDtoEmail>> GetUserModelDtoEmailsAsync() => SessionAsync(ctx => ctx.Users.Select(x => new UserModelDtoEmail(x)).ToList());
public override Task<User?> UpdateUserAsync(User user) => base.UpdateSafeAsync(user);
public async Task<UserModelDtoDetail?> UpdateUserModelDtoDetailAsync(UserModelDtoDetail userModelDtoDetail)
{
var user = GetUserById(userModelDtoDetail.UserDto.Id, false);
if (user == null) return null;
userModelDtoDetail.CopyMainValuesToUser(user);
return await UpdateUserAsync(user) == null ? null : await GetUserModelDtoByIdAsync<UserModelDtoDetail>(userModelDtoDetail.Id, false);
}
public async Task<bool> CreateUserAsync(User user)
{
Context.Users.Add(user);
@ -34,21 +47,5 @@ namespace TIAM.Database.DataLayers.Users
Console.WriteLine($@"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}");
return await Context.SaveChangesAsync() > 0;
}
public async Task<bool> UpdateUserAsync(User user)
{
var existingUser = await Context.Users.CountAsync(u => u.EmailAddress == user.EmailAddress);
if (existingUser == 1)
{
//user.Modified = DateTime.UtcNow; //ezt nem kell megadni, a háttérben ezt magától megcsinálja a DbContextBase - J.
Context.Users.Update(user);
return await Context.SaveChangesAsync() > 0;
}
else
{
throw new Exception("User not found");
}
}
}
}

View File

@ -50,6 +50,16 @@ namespace TIAM.Models.Dtos.Users
}
}
public void CopyMainValuesToUser(User user)
{
user.AffiliateId = UserDto.AffiliateId;
user.EmailAddress = UserDto.EmailAddress;
user.EmailConfirmed = UserDto.EmailConfirmed;
user.PhoneNumber = UserDto.PhoneNumber;
user.RefferalId = UserDto.RefferalId;
}
public virtual User CreateMainEntity()
{
//TODO: Models... - J.

View File

@ -105,6 +105,8 @@ public class SignalRTags : AcSignalRTags
public const int GetAllUsers = 120;
public const int GetAllUserModelDtoDetails = 121;
public const int GetAllUserModelDtoEmails = 125;
public const int UpdateUser = 130;
public const int UpdateUserModelDtoDetail = 131;
public const int GetAllLogItemsByFilterText = 1000;
}

View File

@ -12,6 +12,7 @@
@using AyCode.Services.Loggers
@using AyCode.Core
@using AyCode.Core.Consts
@using AyCode.Core.Extensions
@using AyCode.Core.Helpers
@using TIAMWebApp.Shared.Application.Services
@layout AdminLayout
@ -123,19 +124,19 @@
</DetailRowTemplate>
<EditFormTemplate Context="EditFormContext">
<EditFormTemplate Context="editFormContext">
@{
var transfer2 = (UserModelDtoDetail)EditFormContext.EditModel;
var transfer2 = (UserModelDtoDetail)editFormContext.EditModel;
}
<DxFormLayout CssClass="w-100 form-control">
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.EmailAddress")
@editFormContext.GetEditor("UserDto.EmailAddress")
</DxFormLayoutItem>
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.ConfirmEmail) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.EmailConfirmed")
@editFormContext.GetEditor("UserDto.EmailConfirmed")
</DxFormLayoutItem>
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.PhoneNumber) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.PhoneNumber")
@editFormContext.GetEditor("UserDto.PhoneNumber")
</DxFormLayoutItem>
</DxFormLayout>
@ -160,7 +161,7 @@
private LoggerClient<ManageUsers> _logger;
//public UserModelDtoDetail UserModelDtoDetail = new();
public List<UserModelDtoDetail> UserData { get; set; }
public List<UserModelDtoDetail> UserData { get; set; } = null!;
bool PopupVisible { get; set; } = false;
@ -269,50 +270,38 @@
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
var userModelDtoDetail = ((UserModelDtoDetail)e.EditModel);
var userModelDtoDetailEditModel = ((UserModelDtoDetail)e.EditModel);
if (e.IsNew)
{
var registration = new RegistrationModel();
//TODO: Refractor to userDataService
// var random = new Random();
// const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
// var password = new string(Enumerable.Repeat(chars, 10)
// .Select(s => s[random.Next(s.Length)]).ToArray());
registration.Email = userModelDtoDetail.UserDto.EmailAddress;
registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber;
registration.Email = userModelDtoDetailEditModel.UserDto.EmailAddress;
registration.PhoneNumber = userModelDtoDetailEditModel.UserDto.PhoneNumber;
//registration.Password = password;
registration.Password = AcCharsGenerator.NewPassword(AcConst.MinPasswordLength, 16);
registration.ReferralId = null;
await UserDataService.CreateGuestUser(registration);
_logger.Info("New user created added");
return;
}
else
{
_logger.Info("UserData updated at id " + userModelDtoDetail.Id);
//await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel);
//modify transferData where transferData.Id == e.EditModel.Id
}
//get transfer from TransferData by Id
_logger.Info("UserData updated at id " + userModelDtoDetailEditModel.Id);
// foreach (var transferToModify in (List<Transfer>)TransferData)
// {
// myModel = (Transfer)e.EditModel;
var updateUserModelDtoDetail = await AdminSignalRClient.PostDataAsync(SignalRTags.UpdateUserModelDtoDetail, userModelDtoDetailEditModel);
if (updateUserModelDtoDetail == null) return;
// if (transferToModify.Id == myModel.Id)
// {
// //transferToModify.Driver = myModel.Driver;
// }
// }
//TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync();
UserData.UpdateCollection(updateUserModelDtoDetail, false);
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)

View File

@ -15,6 +15,7 @@ using TIAM.Entities.Addresses;
using TIAM.Services.Server.Logins;
using ILogger = TIAM.Core.Loggers.ILogger;
using AyCode.Core.Helpers;
using AyCode.Entities;
using AyCode.Services.SignalRs;
using TIAM.Services;
@ -233,40 +234,42 @@ namespace TIAMWebApp.Server.Controllers
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.UpdateUser)]
public async Task<IActionResult> UpdateUser([FromBody] JsonElement SerializedUserModel)
[SignalR(SignalRTags.UpdateUser)]
public async Task<User?> UpdateUser([FromBody] User user)
{
_logger.Info("UpdateUser called");
if (string.IsNullOrEmpty(SerializedUserModel.GetRawText()))
{
return BadRequest("SerializedUserModel is required");
}
else
{
var user = JObject.Parse(SerializedUserModel.GetRawText()).ToObject<UserModelDtoDetail>();
return await userDal.UpdateUserAsync(user);
//if (string.IsNullOrEmpty(serializedUserModel.GetRawText()))
//{
// return BadRequest("SerializedUserModel is required");
//}
//else
//{
// var user = JObject.Parse(serializedUserModel.GetRawText()).ToObject<UserModelDtoDetail>();
if (user != null)
{
var userId = user.Id;
var email = user.UserDto.EmailAddress;
var phoneNumber = user.UserDto.PhoneNumber;
// if (user != null)
// {
// var userId = user.Id;
// var email = user.UserDto.EmailAddress;
// var phoneNumber = user.UserDto.PhoneNumber;
if (email is null || phoneNumber is null)
{
return BadRequest("Invalid request");
}
else
{
_logger.Info($"User to be updated: {userId}");
_logger.Info($"User to be updated: {email}");
_logger.Info($"User to be updated: {phoneNumber}");
// if (email is null || phoneNumber is null)
// {
// return BadRequest("Invalid request");
// }
// else
// {
// _logger.Info($"User to be updated: {userId}");
// _logger.Info($"User to be updated: {email}");
// _logger.Info($"User to be updated: {phoneNumber}");
await userDal.UpdateUserAsync(new User(userId, email, phoneNumber));
}
}
// await userDal.UpdateUserAsync(new User(userId, email, phoneNumber));
// }
// }
return Ok("yes");
}
// return Ok("yes");
//}
}
@ -383,6 +386,16 @@ namespace TIAMWebApp.Server.Controllers
return await userDal.GetUserModelDtoEmailsAsync();
}
[NonAction]
[SignalR(SignalRTags.UpdateUserModelDtoDetail)]
public async Task<UserModelDtoDetail?> UpdateUserModelDtoDetail(UserModelDtoDetail userModelDtoDetail)
{
_logger.Info("UpdateUserModelDtoDetail called");
var result = await userDal.UpdateUserModelDtoDetailAsync(userModelDtoDetail);
return result;
}
[AllowAnonymous]
[HttpGet]
[Route(APIUrls.GetUserByEmailRouteName + "/{email}")]