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

89 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using TIAM.Database.DbContexts;
using TIAM.Entities.Users;
namespace TIAM.Database.DataLayers.Users
{
public class UserDal : TiamDalBase<UserDbContext>
{
public UserDal() : base()
{
}
public UserDal(UserDbContext _object)
{
}
public Task<List<User>> GetUsersAsync()
{
return Ctx.Users.ToListAsync();
}
public virtual Task<User?> GetUserByEmailAsync(string email)
{
Console.WriteLine($"Getting user from db {email}");
var emailLower = email.ToLower();
return Ctx.Users.SingleOrDefaultAsync(x=>x.Email.ToLower() == emailLower);
}
public virtual Task<User?> GetUserByPhoneNumberAsync(string phoneNumber)
{
Console.WriteLine($"Getting user from db {phoneNumber}");
var phoneNumberLower = phoneNumber.ToLower();
return Ctx.Users.SingleOrDefaultAsync(x=>x.PhoneNumber.ToLower() == phoneNumberLower);
}
public virtual Task<User?> GetUserByEmailOrPhoneNumberAsync(string emailOrPhoneNumber)
{
Console.WriteLine($"Getting user from db {emailOrPhoneNumber}");
var emailOrPhoneNumberLower = emailOrPhoneNumber.ToLower();
return Ctx.Users.SingleOrDefaultAsync(x=>x.Email.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 Ctx.Users.SingleOrDefaultAsync(x=>x.Id == id);
}
public Task<bool> CreateUserAsync(User user)
{
user.Created = DateTime.UtcNow;
user.Modified = DateTime.UtcNow;
Ctx.Users.Add(user);
Console.WriteLine($"Saving user to db {user.Id}, {user.Email}, {user.PhoneNumber}, {user.Password}");
return Ctx.SaveChangesAsync().ContinueWith(x=>x.Result > 0);
}
public Task<bool> UpdateUserAsyncOld(User user)
{
user.Modified = DateTime.UtcNow;
Ctx.Users.Update(user);
return Ctx.SaveChangesAsync().ContinueWith(x=>x.Result > 0);
}
public Task<bool> UpdateUserAsync(User user)
{
var existingUser = Ctx.Users.FirstOrDefault(u => u.Email == user.Email);
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;
Ctx.Users.Update(existingUser);
return Ctx.SaveChangesAsync().ContinueWith(x => x.Result > 0);
}
else
{
throw new Exception("User not found");
}
}
}
}