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.Entities.Users; using Microsoft.EntityFrameworkCore; using TIAM.Database.DbContexts; using TIAM.Entities.Users; namespace TIAM.Database.DataLayers.Users { public class UserDal : UserDalBase { public UserDal() : base() { } public UserDal(UserDbContext _object) { } public Task> GetUsersAsync() { return Context.Users.ToListAsync(); } //public Task GetUserByEmailAsync(string email) //{ // Console.WriteLine($"Getting user from db {email}"); // //var emailLower = email.ToLower(); // return Context.GetUserByEmail(email); // //return Context.Users.SingleOrDefaultAsync(x=>x.Email.ToLower() == emailLower); //} public Task GetUserByPhoneNumberAsync(string phoneNumber) { Console.WriteLine($"Getting user from db {phoneNumber}"); var phoneNumberLower = phoneNumber.ToLower(); return Context.Users.SingleOrDefaultAsync(x=>x.PhoneNumber.ToLower() == phoneNumberLower); } public Task GetUserByEmailOrPhoneNumberAsync(string emailOrPhoneNumber) { Console.WriteLine($"Getting user from db {emailOrPhoneNumber}"); var emailOrPhoneNumberLower = emailOrPhoneNumber.ToLower(); return Context.Users.SingleOrDefaultAsync(x=>x.EmailAddress.ToLower() == emailOrPhoneNumberLower || x.PhoneNumber.ToLower() == emailOrPhoneNumberLower); } //get user by Id public virtual Task GetUserByIdAsync(Guid id) { Console.WriteLine($"Getting user from db {id}"); return Context.Users.SingleOrDefaultAsync(x=>x.Id == id); } public Task CreateUserAsync(User user) { user.Created = DateTime.UtcNow; user.Modified = DateTime.UtcNow; Context.Users.Add(user); Console.WriteLine($"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}"); return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0); } public Task UpdateUserAsyncOld(User user) { user.Modified = DateTime.UtcNow; Context.Users.Update(user); return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0); } public Task UpdateUserAsync(User user) { var existingUser = Context.Users.FirstOrDefault(u => u.EmailAddress == user.EmailAddress); if (existingUser != null) { //user.Modified = DateTime.UtcNow; //ezt nem kell megadni, a háttérben ezt magától megcsinálja a DbContextBase - J. existingUser = user; Context.Users.Update(existingUser); return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); } else { throw new Exception("User not found"); } } } }