using BankContracts.BindingModels.Client; using BankContracts.ViewModels.Client.ViewModels; using BankDatabaseImplement.Models.CashierModels; using BankDataModels.Enums; using BankDataModels.Models.Client; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BankDatabaseImplement.Models.ClientModels { public class Card : ICardModel { public int Id { get; set; } [Required] public int ClientId { get; set; } public virtual Client Client { get; set; } [Required] public int AccountId { get; set; } public virtual Account Account { get; set; } [Required] public string Number { get; set; } = string.Empty; [Required] public double Balance { get; set; } [Required] public DateTime Period { get; set; } = DateTime.Now; [Required] public StatusCard StatusCard { get; set; } = StatusCard.Открыта; [Required] public string? ClientSurname { get; set; } [ForeignKey("Cardid")] public virtual List creditings { get; set; } = new(); [ForeignKey("Cardid")] public virtual List debitings { get; set; } = new(); public CardViewModel GetViewModel => new() { Id = Id, AccountId = AccountId, ClientId = ClientId, Number = Number, Balance = Balance, Period = Period, StatusCard = StatusCard, ClientSurname = ClientSurname }; public static Card Create(BankDatabase context, CardBindingModel model) { return new Card() { Id = model.Id, AccountId = model.AccountId, Account = context.Accounts.First(x => x.Id == model.AccountId), ClientId = model.ClientId, Client = context.Clients.First(x => x.Id == model.ClientId), Number = model.Number, Balance = model.Balance, Period = model.Period, StatusCard = model.StatusCard, }; } public void Update(CardBindingModel model) { Period = model.Period; } } }