163 lines
5.1 KiB
C#
163 lines
5.1 KiB
C#
using WatchIt.Database.Model.Accounts;
|
|
using WatchIt.DTO.Models.Controllers.Accounts.Account;
|
|
using WatchIt.DTO.Models.Controllers.Accounts.AccountBackgroundPicture;
|
|
using WatchIt.DTO.Models.Controllers.Accounts.AccountEmail;
|
|
using WatchIt.DTO.Models.Controllers.Accounts.AccountPassword;
|
|
using WatchIt.DTO.Models.Controllers.Accounts.AccountProfileInfo;
|
|
using WatchIt.DTO.Models.Controllers.Accounts.AccountUsername;
|
|
using WatchIt.DTO.Models.Controllers.Genders;
|
|
using WatchIt.DTO.Models.Generics.Image;
|
|
|
|
namespace WatchIt.DTO.Models.Controllers.Accounts;
|
|
|
|
public static class AccountsMappers
|
|
{
|
|
#region PUBLIC METHODS
|
|
|
|
#region Account
|
|
|
|
public static Database.Model.Accounts.Account ToEntity(this AccountRequest request, Func<string, PasswordData> passwordGenFunc)
|
|
{
|
|
PasswordData generatedPassword = passwordGenFunc(request.Password);
|
|
return new Database.Model.Accounts.Account
|
|
{
|
|
Username = request.Username,
|
|
Email = request.Email,
|
|
Password = generatedPassword.PasswordHash,
|
|
LeftSalt = generatedPassword.LeftSalt,
|
|
RightSalt = generatedPassword.RightSalt,
|
|
};
|
|
}
|
|
|
|
public static AccountResponse ToResponse(this Database.Model.Accounts.Account account) => new AccountResponse
|
|
{
|
|
Id = account.Id,
|
|
Username = account.Username,
|
|
Email = account.Email,
|
|
IsAdmin = account.IsAdmin,
|
|
JoinDate = account.JoinDate,
|
|
ActiveDate = account.ActiveDate,
|
|
Description = account.Description,
|
|
Gender = account.Gender?.ToResponse(),
|
|
ProfilePicture = account.ProfilePicture?.ToResponse(),
|
|
};
|
|
|
|
public static void UpdateActiveDate(this Database.Model.Accounts.Account account)
|
|
{
|
|
account.ActiveDate = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region AccountUsername
|
|
|
|
public static void UpdateWithRequest(this Database.Model.Accounts.Account account, AccountUsernameRequest request)
|
|
{
|
|
account.Username = request.Username;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region AccountEmail
|
|
|
|
public static void UpdateWithRequest(this Database.Model.Accounts.Account account, AccountEmailRequest request)
|
|
{
|
|
account.Email = request.Email;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region AccountPassword
|
|
|
|
public static void UpdateWithRequest(this Database.Model.Accounts.Account account, AccountPasswordRequest request, Func<string, PasswordData> passwordGenFunc)
|
|
{
|
|
PasswordData generatedPassword = passwordGenFunc(request.Password);
|
|
account.Password = generatedPassword.PasswordHash;
|
|
account.LeftSalt = generatedPassword.LeftSalt;
|
|
account.RightSalt = generatedPassword.RightSalt;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region AccountProfileInfo
|
|
|
|
public static void UpdateWithRequest(this Database.Model.Accounts.Account account, AccountProfileInfoRequest request)
|
|
{
|
|
account.Description = request.Description;
|
|
account.GenderId = request.GenderId;
|
|
}
|
|
|
|
public static AccountProfileInfoRequest ToProfileInfoRequest(this AccountResponse response) => new AccountProfileInfoRequest
|
|
{
|
|
Description = response.Description,
|
|
GenderId = response.Gender?.Id
|
|
};
|
|
|
|
#endregion
|
|
|
|
#region AccountProfilePicture
|
|
|
|
public static AccountProfilePicture ToEntity(this ImageRequest request, long accountId) => new AccountProfilePicture
|
|
{
|
|
AccountId = accountId,
|
|
Image = request.Image,
|
|
MimeType = request.MimeType,
|
|
};
|
|
|
|
#endregion
|
|
|
|
#region AccountBackgroundPicture
|
|
|
|
public static Database.Model.Accounts.AccountBackgroundPicture ToEntity(this AccountBackgroundPictureRequest request, long accountId) => new Database.Model.Accounts.AccountBackgroundPicture
|
|
{
|
|
AccountId = accountId,
|
|
BackgroundId = request.Id,
|
|
};
|
|
|
|
public static void UpdateWithRequest(this Database.Model.Accounts.AccountBackgroundPicture entity, AccountBackgroundPictureRequest request)
|
|
{
|
|
entity.BackgroundId = request.Id;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region AccountRefreshToken
|
|
|
|
public static AccountRefreshToken CreateAccountRefreshTokenEntity(Guid token, long accountId, DateTimeOffset expirationDate, bool isExtendable) => new AccountRefreshToken
|
|
{
|
|
Token = token,
|
|
AccountId = accountId,
|
|
ExpirationDate = expirationDate,
|
|
IsExtendable = isExtendable,
|
|
};
|
|
|
|
public static void UpdateExpirationDate(this AccountRefreshToken entity, DateTimeOffset expirationDate)
|
|
{
|
|
entity.ExpirationDate = expirationDate;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region AccountFollow
|
|
|
|
public static AccountFollow CreateAccountFollowEntity(long accountFollowerId, long accountFollowedId) => new AccountFollow
|
|
{
|
|
FollowerId = accountFollowerId,
|
|
FollowedId = accountFollowedId,
|
|
};
|
|
|
|
#endregion
|
|
|
|
#region PasswordData
|
|
|
|
public static PasswordData GetPasswordData(this Database.Model.Accounts.Account account) => new PasswordData
|
|
{
|
|
PasswordHash = account.Password,
|
|
LeftSalt = account.LeftSalt,
|
|
RightSalt = account.RightSalt,
|
|
};
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
} |