Files
FoodsharingOnboarding/FoodsharingSiegen.Contracts/Entity/User.cs
Andre Beging bf64239625 Refactor enums and update Interaction entity field
Moved enums to a dedicated namespace and updated references across the codebase. Renamed the `Info` field in the `Interaction` entity to `Info1`, including necessary migrations and UI adjustments. These changes improve the organization and consistency of the codebase.
2025-04-01 10:41:09 +02:00

120 lines
3.5 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using FoodsharingSiegen.Contracts.Enums;
using FoodsharingSiegen.Contracts.Helper;
namespace FoodsharingSiegen.Contracts.Entity
{
/// <summary>
/// The user class (a. beging, 06.04.2022)
/// </summary>
public class User
{
#region Public Properties
/// <summary>
/// Gets or sets the value of the created (ab)
/// </summary>
public DateTime Created { get; set; }
/// <summary>
/// Gets or sets the value of the encrypted password (ab)
/// </summary>
public string EncryptedPassword { get; set; }
/// <summary>
/// Gets or sets the value of the force logout (ab)
/// </summary>
public bool ForceLogout { get; set; }
/// <summary>
/// Gets or sets the value of the groups (ab)
/// </summary>
public string Groups { get; set; }
/// <summary>
/// Gets or sets the value of the groups list (ab)
/// </summary>
[NotMapped]
public List<UserGroup> GroupsList
{
get
{
if (string.IsNullOrWhiteSpace(Groups)) return new List<UserGroup>();
var stringList = Groups.Split(",");
var enumList = stringList.Where(x => !string.IsNullOrWhiteSpace(x)).Select(Enum.Parse<UserGroup>).ToList();
return enumList;
}
set => Groups = string.Join(",", value);
}
/// <summary>
/// Gets or sets the value of the id (ab)
/// </summary>
[Key]
public Guid Id { get; set; }
/// <summary>
/// Gets or sets the value of the interactions (ab)
/// </summary>
public IList<Interaction> Interactions { get; set; }
/// <summary>
/// Gets or sets the value of the mail (ab)
/// </summary>
public string Mail { get; set; }
/// <summary>
/// Gets or sets the value of the memo (ab)
/// </summary>
public string? Memo { get; set; }
/// <summary>
/// Gets or sets the value of the name (ab)
/// </summary>
public string Name { get; set; }
/// <summary>
/// Gets or sets the value of the network (ab)
/// </summary>
public FsNetworkType Network { get; set; }
/// <summary>
/// Gets the value of the network link (ab)
/// </summary>
[NotMapped]
public string NetworkLink => Network.GetCustomValue();
/// <summary>
/// Gets or sets the value of the password (ab)
/// </summary>
[NotMapped]
public string Password
{
get => Cryptor.TryDecrypt(EncryptedPassword, out var password) ? password : string.Empty;
set => EncryptedPassword = Cryptor.Encrypt(value);
}
/// <summary>
/// Gets or sets the value of the type (ab)
/// </summary>
public UserType Type { get; set; }
/// <summary>
/// Gets or sets the value of the verified (ab)
/// </summary>
public bool Verified { get; set; }
#endregion
#region Public Method Clone
/// <summary>
/// Clones this instance (a. beging, 11.04.2022)
/// </summary>
/// <returns>The user</returns>
public User Clone() => (User)MemberwiseClone();
#endregion
}
}