66 lines
2.5 KiB
C#
66 lines
2.5 KiB
C#
using AyCode.Database.DataLayers.Users;
|
|
using AyCode.Database.DbSets.Messages;
|
|
using AyCode.Database.DbSets.Users;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using TIAM.Database.DbContexts.Users;
|
|
using TIAM.Entities.Addresses;
|
|
using TIAM.Entities.Emails;
|
|
using TIAM.Entities.Profiles;
|
|
using TIAM.Entities.ServiceProviders;
|
|
using TIAM.Entities.Users;
|
|
using TIAM.Models;
|
|
using TIAM.Models.Dtos.Users;
|
|
|
|
namespace TIAM.Database.DataLayers.Users
|
|
{
|
|
public class UserDal : AcUserDalBase<UserDbContext, User, Profile, UserToken, Company, UserToCompany, Address, EmailMessage>, IDalBase<UserDbContext>
|
|
{
|
|
|
|
public UserDal() : base()
|
|
{
|
|
}
|
|
|
|
public UserDal(UserDbContext context)
|
|
{
|
|
}
|
|
|
|
//public Task<SiteViewModel> GetSiteViewModelByUserId(Guid userId) => SessionAsync(ctx =>
|
|
//{
|
|
// ctx.GetEmailMessagesByUserIdOrUpmId<EmailMessage, EmailRecipient>(userId,
|
|
//}));
|
|
|
|
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.CopyUserDtoValuesToUser(user);
|
|
|
|
return await UpdateUserAsync(user) == null ? null : await GetUserModelDtoByIdAsync<UserModelDtoDetail>(userModelDtoDetail.Id, false);
|
|
}
|
|
|
|
public async Task<UserModelDtoDetail?> AddUserModelDtoDetailAsync(UserModelDtoDetail userModelDtoDetail)
|
|
{
|
|
var user = new User();
|
|
userModelDtoDetail.CopyUserDtoValuesToUser(user);
|
|
|
|
return await AddUserAsync(user) ? await GetUserModelDtoByIdAsync<UserModelDtoDetail>(userModelDtoDetail.Id, false) : null;
|
|
}
|
|
|
|
public async Task<bool> CreateUserAsync(User user)
|
|
{
|
|
Context.Users.Add(user);
|
|
Profile profile = new Profile();
|
|
profile.Id = Guid.NewGuid();
|
|
var parts = user.EmailAddress.Split('@');
|
|
profile.Name = parts[0];
|
|
Context.Profiles.Add(profile);
|
|
Console.WriteLine($@"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}");
|
|
return await Context.SaveChangesAsync() > 0;
|
|
}
|
|
}
|
|
}
|