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 HeadwaiterId { get; set; }

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

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

        public virtual Client Headwaiters { get; set; }

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

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