using ReallifeGamemode.Server.Models;
using ReallifeGamemode.Server.Util;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;

/**
* @overview Life of German Reallife - Entities Faction (Faction.cs)
* @author VegaZ, hydrant
* @copyright (c) 2008 - 2018 Life of German
*/

namespace ReallifeGamemode.Server.Entities
{
    public class Faction : IBankAccountOwner
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [StringLength(32)]
        public string Name { get; set; }
        public bool StateOwned { get; set; }

        public IBankAccount GetBankAccount(DatabaseContext databaseContext = null)
        {
            if (databaseContext == null)
            {
                using (databaseContext = new DatabaseContext())
                {
                    return databaseContext.FactionBankAccounts.FirstOrDefault(u => u.FactionId == this.Id);
                }
            }
            else
            {
                return databaseContext.FactionBankAccounts.FirstOrDefault(u => u.FactionId == this.Id);
            }
        }
    }
}
