TourIAm/TIAM.Database/DataLayers/Users/UserDal.cs

59 lines
2.2 KiB
C#

using AyCode.Database.DataLayers.Users;
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.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<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;
}
}
}