69 lines
3.1 KiB
C#
69 lines
3.1 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.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<UserDbContext, User, Profile, UserToken, TiamServiceProvider, UserToServiceProvider, Address>, IDalBase<UserDbContext>
|
|
{
|
|
|
|
public UserDal() : base()
|
|
{
|
|
}
|
|
|
|
public UserDal(UserDbContext context)
|
|
{
|
|
}
|
|
|
|
public UserModelDtoDetail? GetUserModelDtoDetailById(Guid userId, bool onlyConfirmed) => Session(ctx => ctx.GetUserModelDtoDetailById(userId, onlyConfirmed));
|
|
public Task<UserModelDtoDetail?> 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<TUserModelDto>(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase
|
|
=> Session(ctx => ctx.GetUserModelDtoById<TUserModelDto>(userId, onlyConfirmed));
|
|
public Task<TUserModelDto?> GetUserModelDtoByIdAsync<TUserModelDto>(Guid userId, bool onlyConfirmed) where TUserModelDto : class, IUserModelDtoMinBase
|
|
=> SessionAsync(ctx => ctx.GetUserModelDtoById<TUserModelDto>(userId, onlyConfirmed));
|
|
|
|
public Task<UserModelDto?> GetUserModelDtoByEmailAsync(string email, bool onlyConfirmed) => SessionAsync(x => x.GetUserModelDtoByEmail(email, onlyConfirmed));
|
|
public Task<List<UserModelDto>> GetAllUsersModelDtoAsync() => SessionAsync(x => x.GetAllUsersModelDto().ToList());
|
|
public Task<List<UserModelDtoDetail>> GetAllUsersModelDtoDetailAsync() => SessionAsync(x => x.GetAllUsersModelDetailDto().ToList());
|
|
|
|
public async Task<bool> 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<bool> 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");
|
|
}
|
|
}
|
|
}
|
|
}
|