using System.ComponentModel.DataAnnotations.Schema;
using TecniStamp.Domain;

namespace TecniStamp.Model.Commesse;

public class CommessaPosizioneLavorazioneViewModel : BaseViewModel
{
    public Guid? CommessaPosizioneId { get; set; }
    public CommessaPosizione CommessaPosizione { get; set; }
    public Guid? LavorazioneId { get; set; }
    public Lavorazione Lavorazione { get; set; }
    public Guid? MacchinarioId { get; set; }
    public Macchinario Macchinario { get; set; }

    public int PrimoTempoPresidiato { get; set; }
    public int TempoNonPresidiato { get; set; }
    public int SecondoTempoPresidiato { get; set; }
    public bool Spostabile { get; set; }
    public DateTime? DataInizioPrevista { get; set; }
    public DateTime? DataFinePrevista { get; set; }

    public string DescLavorazione { get; set; }
    public string NomeMacchinario { get; set; }
    public override void Validate(){}

    public static implicit operator CommessaPosizioneLavorazioneViewModel(CommessaPosizioneLavorazione model)
    {
        return model == null
            ? null
            : new CommessaPosizioneLavorazioneViewModel()
            {
                DescLavorazione = model.Lavorazione?.Descrizione ?? "",
                NomeMacchinario = model.Macchinario?.Nome ?? "",
                PrimoTempoPresidiato = model.PrimoTempoPresidiato,
                TempoNonPresidiato = model.TempoNonPresidiato,
                SecondoTempoPresidiato = model.SecondoTempoPresidiato,
                Spostabile = model.Spostabile,
                DataFinePrevista = model.DataFinePrevista,
                DataInizioPrevista = model.DataInizioPrevista,
                Id = model.Id
            };
    }
}