// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
//                         marc.chevaldonne.free.fr
//
// Module        : ArtisteEF.cs
// Author        : Marc Chevaldonné
// Creation date : 2016-10-23
//
// ========================================================================

using System;
using System.Collections.Generic;
using System.Linq;

namespace ex_042_011_EF_CF_Many_to_Many_FluentAPI
{
    /// <summary>
    /// procurateur pour la classe Artiste
    /// </summary>
    public class ArtisteEF : IArtiste
    {
        public ICollection<Album> Albums
        {
            get
            {
                return Artiste.Albums;
            }
        }

        public ICollection<AlbumArtiste> ArtistesAlbums
        {
            get
            {
                return artistesAlbums;
            }
            set
            {
                artistesAlbums = value;
                UpdateAlbums();
            }
        }
        private ICollection<AlbumArtiste> artistesAlbums = new List<AlbumArtiste>();


        public Artiste Artiste
        {
            get
            {
                return artiste;
            }
            set
            {
                artiste = value;
                UpdateAlbums();
            }
        }
        private Artiste artiste;

        private void UpdateAlbums()
        {
            if (Artiste != null && ArtistesAlbums != null)
            {
                foreach (var alb in ArtistesAlbums.Select(aa => aa.Album.Album))
                {
                    Artiste.Albums.Add(alb);
                }
            }
        }

        public DateTime? DateDeMort
        {
            get
            {
                return Artiste.DateDeMort;
            }
            set
            {
                Artiste.DateDeMort = value;
            }
        }

        public DateTime DateDeNaissance
        {
            get
            {
                return Artiste.DateDeNaissance;
            }
            set
            {
                Artiste.DateDeNaissance = value;
            }
        }

        public string Nom
        {
            get
            {
                return Artiste.Nom;
            }
            set
            {
                Artiste.Nom = value;
            }
        }

        public string Prénom
        {
            get
            {
                return Artiste.Prénom;
            }
            set
            {
                Artiste.Prénom = value;
            }
        }

        private Guid uniqueId;

        public Guid UniqueId
        {
            get { return uniqueId; }
            set { uniqueId = value; Artiste.UniqueId = value; }
        }

    }
}
