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

94 lines
3.2 KiB
C#

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<UserDbContext, User, UserTokenBase>
{
public UserDal() : base()
{
}
public UserDal(UserDbContext _object)
{
}
public Task<List<User>> GetUsersAsync()
{
return Context.Users.ToListAsync();
}
//public Task<User?> 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<User?> 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<User?> 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<User?> GetUserByIdAsync(Guid id)
{
Console.WriteLine($"Getting user from db {id}");
return Context.Users.SingleOrDefaultAsync(x=>x.Id == id);
}
public Task<bool> 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<bool> UpdateUserAsyncOld(User user)
{
user.Modified = DateTime.UtcNow;
Context.Users.Update(user);
return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0);
}
public Task<bool> 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");
}
}
}
}