yavsc/src/Yavsc.Server/Models/ApplicationUser.cs

136 lines
3.8 KiB
C#
Raw Normal View History

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
2023-03-19 16:39:04 +00:00
using Newtonsoft.Json;
using Microsoft.AspNetCore.Identity;
using Yavsc.Models.Relationship;
2023-03-26 21:48:25 +01:00
using Yavsc.Models.Identity;
using Yavsc.Models.Chat;
using Yavsc.Models.Bank;
using Yavsc.Models.Access;
namespace Yavsc.Models
{
2019-06-22 19:34:39 +01:00
public class ApplicationUser : IdentityUser, IBaseTrackedEntity
{
2023-03-19 16:39:04 +00:00
2016-09-23 12:29:50 +02:00
/// <summary>
/// Another me, as a byte array.
/// This value points a picture that may be used
/// to present the user
2016-09-23 12:29:50 +02:00
/// </summary>
/// <returns>the path to an user's image, relative to it's user dir<summary>
2016-09-23 12:29:50 +02:00
/// <see>Startup.UserFilesOptions</see>
/// </summary>
/// <returns></returns>
[MaxLength(512)]
2016-09-23 12:29:50 +02:00
public string Avatar { get; set; }
2016-10-23 01:31:09 +02:00
[MaxLength(512)]
public string FullName { get; set; }
2016-09-23 12:29:50 +02:00
/// <summary>
/// WIP Paypal
/// </summary>
/// <returns></returns>
2023-03-19 16:39:04 +00:00
[Display(Name = "Account balance")]
public virtual AccountBalance AccountBalance { get; set; }
2016-09-23 12:29:50 +02:00
/// <summary>
/// User's posts
/// </summary>
/// <returns></returns>
2023-03-19 16:39:04 +00:00
[InverseProperty("Author"), JsonIgnore]
public virtual List<Blog.BlogPost> Posts { get; set; }
2016-09-23 12:29:50 +02:00
/// <summary>
/// User's contact list
/// </summary>
/// <returns></returns>
2023-03-19 16:39:04 +00:00
[InverseProperty("Owner"), JsonIgnore]
public virtual List<Contact> Book { get; set; }
2016-09-23 12:29:50 +02:00
/// <summary>
/// External devices using the API
/// </summary>
/// <returns></returns>
2023-03-19 16:39:04 +00:00
[InverseProperty("DeviceOwner"), JsonIgnore]
2019-05-24 20:17:24 +01:00
public virtual List<DeviceDeclaration> DeviceDeclaration { get; set; }
2023-03-19 16:39:04 +00:00
[InverseProperty("Owner"), JsonIgnore]
2018-01-02 16:35:03 +01:00
public virtual List<ChatConnection> Connections { get; set; }
2016-11-01 23:22:46 +01:00
2016-09-23 12:29:50 +02:00
/// <summary>
/// User's circles
/// </summary>
/// <returns></returns>
2023-03-19 16:39:04 +00:00
[InverseProperty("Owner"), JsonIgnore]
2023-03-19 16:39:04 +00:00
public virtual List<Circle> Circles { get; set; }
2016-09-23 12:29:50 +02:00
/// <summary>
/// Billing postal address
/// </summary>
/// <returns></returns>
2017-04-01 02:14:10 +02:00
[ForeignKeyAttribute("PostalAddressId")]
public virtual Location PostalAddress { get; set; }
2017-04-01 02:14:10 +02:00
public long? PostalAddressId { get; set; }
2016-09-23 12:29:50 +02:00
/// <summary>
/// User's Google calendar
/// </summary>
/// <returns></returns>
2018-04-14 19:33:44 +02:00
[MaxLength(512)]
public string DedicatedGoogleCalendar { get; set; }
2023-03-19 16:39:04 +00:00
public override string ToString()
{
return this.Id + " " + this.AccountBalance?.Credits.ToString() + this.Email + " " + this.UserName + " $" + this.AccountBalance?.Credits.ToString();
}
2016-11-04 13:55:48 +01:00
2023-03-19 16:39:04 +00:00
public BankIdentity BankInfo { get; set; }
2023-03-19 16:39:04 +00:00
public long DiskQuota { get; set; } = 512 * 1024 * 1024;
public long DiskUsage { get; set; } = 0;
2023-03-19 16:39:04 +00:00
public long MaxFileSize { get; set; } = 512 * 1024 * 1024;
2018-01-02 16:35:03 +01:00
2023-03-19 16:39:04 +00:00
[JsonIgnore]
[InverseProperty("Owner")]
public virtual List<BlackListed> BlackList { get; set; }
2018-05-03 15:40:58 +02:00
public bool AllowMonthlyEmail { get; set; } = false;
2019-05-08 01:35:10 +01:00
2023-03-19 16:39:04 +00:00
[JsonIgnore]
[InverseProperty("Owner")]
2019-05-08 01:35:10 +01:00
public virtual List<ChatRoom> Rooms { get; set; }
2023-03-19 16:39:04 +00:00
[JsonIgnore]
[InverseProperty("User")]
2019-05-08 01:35:10 +01:00
public virtual List<ChatRoomAccess> RoomAccess { get; set; }
2023-03-19 16:39:04 +00:00
[JsonIgnore]
[InverseProperty("Member")]
public virtual List<CircleMember> Membership { get; set; }
2019-06-22 19:34:39 +01:00
public DateTime DateCreated
{
get; set;
}
public string UserCreated
{
get; set;
2023-03-19 16:39:04 +00:00
}
public DateTime DateModified
2019-06-22 19:34:39 +01:00
{
get; set;
2023-03-19 16:39:04 +00:00
}
2019-06-22 19:34:39 +01:00
public string UserModified
{
get; set;
}
}
}