using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using ThreeLayer.Business;

public partial class TestBusinessObject : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
       {
          panPublisher.Visible = false;
       }

       PublisherCollectionBO pubs = new PublisherCollectionBO();

       grdPublishers.DataSource = pubs.ReadOnlyCopy();
       grdPublishers.DataBind();

    }
   protected void grdPublishers_SelectedIndexChanged(object sender, EventArgs e)
   {
      int pubId = (int)grdPublishers.SelectedDataKey.Values[0];

      PublisherBO pub = new PublisherBO();
      if (pub.Load(pubId))
      {
         panPublisher.Visible = true;
         labId.Text = pub.Id.ToString();
         txtName.Text = pub.Name;
      }
      grdErrors.DataSource = pub.BrokenRules;
      grdErrors.DataBind();
   }

   protected void btnUpdate_Click(object sender, EventArgs e)
   {
      // pobierz wartości identyfikatora i tytułu
      int id = Convert.ToInt32(labId.Text);
      string name = txtName.Text;
      // utwórz obiekt biznesowy wydawcy i spróbuj go zaktualizować
      PublisherBO pub = new PublisherBO(id, name);
      pub.Update();
      // sprawdź, czy aktualizacja powidoła się
      if (!pub.IsValid)
      {
         // aktualizacja nie powiodła się, a zatem wyświetl naruszone reguły biznesowe
         grdErrors.DataSource = pub.BrokenRules;
         grdErrors.DataBind();
      }
      grdPublishers.DataBind();
   }

   protected void btnInsert_Click(object sender, EventArgs e)
   {
      // pobierz wartość tytułu
      string name = txtName.Text;
      PublisherBO pub = new PublisherBO(0, name);
      pub.Insert();
      if (!pub.IsValid)
      {
         grdErrors.DataSource = pub.BrokenRules;
         grdErrors.DataBind();
      }
   }
}
