using System;
using System.Data;

namespace FourLayer.BusinessEntity
{
   /// <summary>
   /// Hermetyzuje dane pojedynczej kategorii książki
   /// </summary>
   [Serializable]
   public class Category : AbstractEntity
   {

      // dane składowe
      private string _name;

      public Category() { }
      public Category(int id, string name)
         : base(id)
      {
         _name = name;
      }

      public int Id
      {
         get { return (int)Key; }
         set { Key = value; }
      }
      public string Name
      {
         get { return _name; }
         set { _name = value; }
      }

      public override string ToString()
      {
         return Id + "," + Name;
      }

      /// <summary>
      /// Sprawdza, czy stan obiektu jest prawidłowy
      /// </summary>
      protected override bool CheckIfSubClassStateIsValid
      {
         get
         {
            if (Name == null)
            {
               AddBrokenRule("Kategoria: Nazwa musi mieć nadaną wartość");
               return false;
            }

            if (Name.Length > 0)
               return true;
            else
            {
               AddBrokenRule("Kategoria: Nazwa jest pusta");
               return false;
            }
         }
      }
   }
}
