﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Siegfried
{
  public partial class TiposDeTrabajoCatalogo : Siegfried.BaseForm
  {
    Entities.TiposDeTrabajos tipoDeTrabajo = null;

    public TiposDeTrabajoCatalogo()
    {
      InitializeComponent();
      BodyControl = new UserControls.TiposDeTrabajoUC();
      OnSelectedRowOnBase += TiposDeTrabajoCatalogo_OnSelectedRowOnBase;
    }

    private void TiposDeTrabajoCatalogo_Load(object sender, EventArgs e)
    {
      BindData();
      FormBindingSource.CurrentChanged += FormBindingSource_CurrentChanged;
    }

    private void BindData()
    {
      FormBindingSource.DataSource = Globals.ctx.TiposDeTrabajos.All();
      FormBindingSource.AllowNew = true;
      FormDataGrid.DataSource = null;
      FormDataGrid.Refresh();
      FormDataGrid.DataSource = FormBindingSource;
      FormBindingNavigator.BindingSource = FormBindingSource;
    }

    void TiposDeTrabajoCatalogo_OnSelectedRowOnBase(object boundItem)
    {
      tipoDeTrabajo = (Entities.TiposDeTrabajos) boundItem;
      ((UserControls.TiposDeTrabajoUC) BodyControl).CurrentChanged(tipoDeTrabajo);
    }

    void FormBindingSource_CurrentChanged(object sender, EventArgs e)
    {

      if (FormBindingSource.Current != null)
        tipoDeTrabajo = ((Entities.TiposDeTrabajos) FormBindingSource.Current);
      else
        return;

      if (tipoDeTrabajo.ID >= 0)
        ((UserControls.TiposDeTrabajoUC) BodyControl).CurrentChanged(tipoDeTrabajo);
    }

    protected override void GuardarLogic()
    {
      tipoDeTrabajo = ((UserControls.TiposDeTrabajoUC) BodyControl).GetChanges();
      if (tipoDeTrabajo.ID > 0) {
        Globals.ctx.TiposDeTrabajos.Update(tipoDeTrabajo);
      } else
        Globals.ctx.TiposDeTrabajos.Insert(tipoDeTrabajo);
      MessageBox.Show("Cambios procesados exitosamente");
      BindData();
    }

    protected override void BorrarLogic()
    {
      tipoDeTrabajo = ((UserControls.TiposDeTrabajoUC) BodyControl).GetChanges();
      if (tipoDeTrabajo.ID > 0) {
        Globals.ctx.TiposDeTrabajos.Delete(tipoDeTrabajo.ID);
        tipoDeTrabajo = null;
        MessageBox.Show("Cambios procesados exitosamente");
        BindData();
      }
    }
  }
}
