using ComputerStoreContracts.BindingModels;
using ComputerStoreDataModels.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ComputerStoreContracts.ViewModels
{
    public class PCViewModel : IPCModel
    {
        public int ID { get; set; }

        [DisplayName("PC's name")]
        public string Name { get; set; } = string.Empty;

        [DisplayName("PC's price")]
        public double Price { get; set; }

        public int EmployeeID { get; set; }

        [DisplayName("Employee's username")]
        public string EmployeeUsername { get; set; } = string.Empty;

        [DisplayName("Request ID")]
        public int RequestID { get; set; }
        public Dictionary<int, (IComponentModel Component, int Quantity)> PCComponents { get; set; } = new();

        [JsonConstructor]
        public PCViewModel(Dictionary<int, (ComponentBindingModel Component, int Quantity)> PCComponents)
        {
            this.PCComponents = PCComponents.ToDictionary(x => x.Key, x => (x.Value.Component as IComponentModel, x.Value.Quantity));
        }
        public PCViewModel() { }
    }
}