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, IDalBase { public UserDal() : base() { } public UserDal(UserDbContext context) { } public Task> GetUserModelDtoEmailsAsync() => SessionAsync(ctx => ctx.Users.Select(x => new UserModelDtoEmail(x)).ToList()); public override Task UpdateUserAsync(User user) => base.UpdateSafeAsync(user); public async Task 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.Id, false); } public async Task AddUserModelDtoDetailAsync(UserModelDtoDetail userModelDtoDetail) { var user = new User(); userModelDtoDetail.CopyUserDtoValuesToUser(user); return await AddUserAsync(user) ? await GetUserModelDtoByIdAsync(userModelDtoDetail.Id, false) : null; } public async Task 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; } } }