KoogleApp/Koogle.Domain/Entities/Expense.cs

62 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Koogle.Domain.Enums;
namespace Koogle.Domain.Entities;
/// <summary>
/// Represents an expense in the system.
/// </summary>
public class Expense : BaseEntity
{
/// <summary>
/// ID of the club associated with the expense.
/// </summary>
public Guid ClubId { get; set; }
/// <summary>
/// The name of the expense.
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// The description of the expense.
/// </summary>
public string Description { get; set; } = string.Empty;
/// <summary>
/// The price of the expense.
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// Indicates whether the expense can be paid with one click and should be shown in the favorite menu.
/// </summary>
public bool IsOneClick { get; set; }
/// <summary>
/// Indicates whether the expense is an inverse expense and will be charged to all other players.
/// </summary>
public bool IsInverse { get; set; }
/// <summary>
/// Indicates whether the expense amount can vary each time it is recorded.
/// </summary>
public bool IsVariable { get; set; }
/// <summary>
/// The type of the expense (Monetary or Material).
/// </summary>
public ExpenseType ExpenseType { get; set; }
// Navigation Properties
/// <summary>
/// associated Club.
/// </summary>
public Club Club { get; set; } = null!;
}