using BankContracts.BindingModels;
using BankContracts.ViewModels;
using BankDataModels.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BankDataBaseImplement.Models
{
    public class Credit : ICreditModel
    {
        public int Id { get; set; }
        public int ClientId { get; set; }

        [Required]
        public string CreditName { get; set; } = string.Empty;

        [Required]
        public double CreditPrice { get; set; }

        public virtual Client Headwaiters { get; set; }

        [ForeignKey("CreditId")]
        public virtual List<RoomCredit> RoomCredits { get; set; }

        [ForeignKey("CreditcId")]
        public virtual List<ConferenceBookingDinner> ConferenceBookingCredits { get; set; }
        public static Credit? Create(CreditBindingModel model)
        {
            if (model == null)
            {
                return null;
            }
            return new Credit()
            {
                Id = model.Id,
                CreditName = model.CreditName,
                CreditPrice = model.CreditPrice
            };
        }
        public static Credit Create(CreditViewModel model)
        {
            return new Credit
            {
                Id = model.Id,
                CreditName = model.CreditName,
                CreditPrice = model.CreditPrice
            };
        }
        public void Update(CreditBindingModel model)
        {
            if (model == null)
            {
                return;
            }
            CreditName = model.CreditName;
            CreditPrice = model.CreditPrice;
        }
        public CreditViewModel GetViewModel => new()
        {
            Id = Id,
            CreditName = CreditName,
            CreditPrice = CreditPrice
        };
    }
}