using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AyCode.Database.DataLayers; using AyCode.Database.DataLayers.Users; using AyCode.Database.DbSets.Users; using AyCode.Entities.Users; using Microsoft.EntityFrameworkCore; using TIAM.Database.DbContexts.Users; using TIAM.Database.DbSets.Users; using TIAM.Entities.Addresses; 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 UserModelDtoDetail? GetUserModelDtoDetailById(Guid userId, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed)); public Task GetUserModelDtoDetailByIdAsync(Guid userId, bool onlyConfirmed) => SessionAsync(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed)); public UserModelDtoDetail? GetUserModelDtoDetailByEmail(string email, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailByEmail(email, onlyConfirmed)); public TUserModelDto? GetUserModelDtoById(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase => Session(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); public Task GetUserModelDtoByIdAsync(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase => SessionAsync(ctx => ctx.GetUserModelDtoById(userId, onlyConfirmed)); public Task GetUserModelDtoByEmailAsync(string email, bool onlyConfirmed) => SessionAsync(x => x.GetUserModelDtoByEmail(email, onlyConfirmed)); public Task> GetAllUsersModelDtoAsync() => SessionAsync(x => x.GetAllUsersModelDto().ToList()); public Task> GetAllUsersModelDtoDetailAsync() => SessionAsync(x => x.GetAllUsersModelDetailDto().ToList()); public async Task CreateUserAsync(User user) { Context.Users.Add(user); Console.WriteLine($@"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}"); return await Context.SaveChangesAsync() > 0; } public async Task 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"); } } } }