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

namespace Siegfried.UserControls
{
  public partial class KilometrajeCapturaUC : UserControl
  {
    Entities.Kilometraje kilometrajeData;

    public KilometrajeCapturaUC()
    {
      InitializeComponent();
    }

    internal void CurrentChanged(Entities.vwKilometrajeConsulta kilometraje)
    {

      this.kilometrajeData = ConvertToKilometraje(kilometraje) ?? new Entities.Kilometraje();
      if (kilometraje.ID > 0) {

        this.txtKilometros.Text = kilometrajeData.KilometrosMedidos.ToString();
        this.cbxVehiculo.SelectedValue = kilometrajeData.VehiculoID;
        this.cbxChofer.SelectedValue = kilometrajeData.ChoferID;
        this.cbxRuta.SelectedValue = kilometrajeData.RutaID;
        if (kilometrajeData.TipoMedicion == 1) {
          rbnInicial.Checked = true;
        } else {
          rbnFinal.Checked = true;
        }

      } else {
        this.txtKilometros.Text = String.Empty;
      }
      if (kilometraje == null)
        MessageBox.Show("Se ha detectado que no hay registros previos, una vez que presione Guardar se creara el primer registro de esta tabla.");
    }

    private Entities.Kilometraje ConvertToKilometraje(Entities.vwKilometrajeConsulta kilometraje)
    {
      if (kilometraje == null)
        return null;

      if (kilometraje.ID <= 0)
        return null;

      var kilometrajeRetorno = Globals.ctx.Kilometraje.GetByID(kilometraje.ID);
      return kilometrajeRetorno;
    }

    private void KilometrajeCapturaUC_Load(object sender, EventArgs e)
    {
      var vehiculos = Globals.ctx.Vehiculo.All();
      BindingSource source= new BindingSource();
      source.DataSource = vehiculos;
      cbxVehiculo.DataSource = source;
      cbxVehiculo.ValueMember = "ID";
      cbxVehiculo.DisplayMember = "Placa";

      var choferes = Globals.ctx.Chofer.All();
      BindingSource sourceI= new BindingSource();
      sourceI.DataSource = choferes;
      cbxChofer.DataSource = sourceI;
      cbxChofer.ValueMember = "ID";
      cbxChofer.DisplayMember = "Nombre";

      var rutas = Globals.ctx.Ruta.All();
      BindingSource sourceR= new BindingSource();
      sourceR.DataSource = rutas;
      cbxRuta.DataSource = sourceR;
      cbxRuta.ValueMember = "ID";
      cbxRuta.DisplayMember = "Nombre";

    }

    internal Entities.Kilometraje GetChanges()
    {
      if (kilometrajeData == null)
        MessageBox.Show("Se ha detectado que no hay registros previos, una vez que presione Guardar se creara el primer registro de esta tabla.");
      this.kilometrajeData = kilometrajeData ?? new Entities.Kilometraje();

      kilometrajeData.KilometrosMedidos = System.Convert.ToDecimal(txtKilometros.Text);
      kilometrajeData.VehiculoID = System.Convert.ToInt32(cbxVehiculo.SelectedValue.ToString());
      kilometrajeData.ChoferID = System.Convert.ToInt32(cbxChofer.SelectedValue.ToString());
      kilometrajeData.RutaID = System.Convert.ToInt32(cbxRuta.SelectedValue.ToString());
      if (rbnInicial.Checked)
        kilometrajeData.TipoMedicion = 1;
      if (rbnFinal.Checked)
        kilometrajeData.TipoMedicion = 2;
      kilometrajeData.UsuarioID = Globals.UsuarioActual.ID;
      kilometrajeData.PlantaID = Globals.PlantaActual.ID;
      kilometrajeData.Fecha = System.DateTime.Today;
      return this.kilometrajeData;
    }
  }
}
