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

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

namespace ReallifeGamemode.Server.Entities
{
    public class UserBankAccount : IBankAccount
    {
        [NotMapped]
        private int _balance;

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [ForeignKey("User")]
        public int UserId { get; set; }
        public User User { get; set; }
        [StringLength(12)]
        public string Bic { get; set; }
        [StringLength(32)]
        public string Iban { get; set; }
        public int Balance
        {
            get => _balance;
            set
            {
                _balance = value;
                using (var dbContext = new DatabaseContext())
                {
                    ClientService.GetClientByNameOrId(dbContext.Users.First(u => u.Id == UserId).Name).TriggerEvent("updateMoney", value);
                }
            }
        }
        public bool Active { get; set; }
    }
}