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 System.Collections.Generic;

using Telerik.Web.UI;

using BE;
using BL;
using Utilitaria;


public partial class InstUpd_Presupuestos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Usuario"] == null)
        {
            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);
        }
        this.txtDesde.Focus();
        if (!IsPostBack)
        {
            llenaCombo();
            Combo_Moneda();
            Combo_UnidadNegocio();
            if (ViewState["PresupuestoID"] != null) { BuscaRegistro(); } else { this.ddlEstado2.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Activo; }
        }

        //ddlTipoFormatoGGPP.Filter = (RadComboBoxFilter)Convert.ToInt32(2);
    }


    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        if (Request.QueryString["PresupuestoID"] == null)
        {
            this.btnGuardar.Text = "  Crear  "; 
        }
        else
        {
            this.btnGuardar.Text = "Actualizar";
            ViewState["PresupuestoID"] = Request.QueryString["PresupuestoID"].ToString().Trim();
        }
    }

    private void llenaCombo()
    {
        this.ddlEstado2.Items.Insert(0, new RadComboBoxItem("Activo"));
        this.ddlEstado2.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Activo;

        this.ddlEstado2.Items.Insert(1, new RadComboBoxItem("Inactivo"));
        this.ddlEstado2.Items[1].Value = Utilitaria.Cls_Enums.EstadoModulos.Inactivo;
    }

    private void Combo_UnidadNegocio()
    {
        BLUnidadesDeNegocio objBLUnidadesDeNegocio = new BLUnidadesDeNegocio();
        BEUnidadesDeNegocio oBEUnidadesDeNegocio = new BEUnidadesDeNegocio();
        oBEUnidadesDeNegocio.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"].ToString());
        List<BEUnidadesDeNegocio> lstUnidadesDeNegocio = objBLUnidadesDeNegocio.fnSelUnidadesDeNegocioDin(oBEUnidadesDeNegocio, "", "");

        //this.ddlUnidadNegocio.Items.Insert(0, new RadComboBoxItem("---Seleccione---"));
        //this.ddlUnidadNegocio.Items[0].Value = "";

        for (int i = 0; i < lstUnidadesDeNegocio.Count; i++)
        {
            this.ddlUnidadNegocio.Items.Insert(i , new RadComboBoxItem(lstUnidadesDeNegocio[i].NombreUnidadNegocio.Trim()));
            this.ddlUnidadNegocio.Items[i].Value = lstUnidadesDeNegocio[i].UnidadNegocioID.ToString().Trim();
        }
   }

    private void Combo_Moneda()
    {
        BEMonedas objet_Monedas = new BEMonedas();
        BLMonedas objlg_Monedas = new BLMonedas();
        List<BEMonedas> Col_Monedas;
        int i = 0;

        Col_Monedas = objlg_Monedas.fnSelMonedasAll();
        //this.ddlMoneda.Items.Insert(0, new RadComboBoxItem("---Selccione---"));
        //this.ddlMoneda.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;

        for (i = 0; i < Col_Monedas.Count; i++)
        {
            this.ddlMoneda.Items.Insert(i , new RadComboBoxItem(Col_Monedas[i].Nombre.Trim()));
            this.ddlMoneda.Items[i ].Value = Convert.ToString(Col_Monedas[i].MonedaID);
        }

        objet_Monedas = null;
        objlg_Monedas = null;
    }

    private void BuscaRegistro()
    {
        BEPresupuestos objet_Presupuestos = new BEPresupuestos();
        BLPresupuestos objlg_Presupuestos = new BLPresupuestos();
        List<BEPresupuestos> Datos;

        Datos = objlg_Presupuestos.fnSelPresupuestosDin("PresupuestoID=" + Convert.ToString(ViewState["PresupuestoID"]), "");

        ViewState["PresupuestoID"] = Datos[0].PresupuestoID;

        // Inicio Variables auditoras ///
        ViewState["Desde"] = Datos[0].Desde;
        ViewState["Hasta"] = Datos[0].Hasta;
        ViewState["NombrePresupuesto"] = Datos[0].NombrePresupuesto;
        ViewState["TipoCambio"] = Datos[0].TipoCambio;
        ViewState["UnidadNegocioID"] = Datos[0].BEUnidadesDeNegocio.UnidadNegocioID;
        ViewState["MonedaID"] = Datos[0].MonedaID;
        ViewState["Estado"] = Datos[0].Estado;
        ///////FIN//////////

        this.txtDesde.Text = Convert.ToString(ViewState["Desde"]);
        this.txtHasta.Text = Convert.ToString(ViewState["Hasta"]);
        this.txtNombre.Text = Convert.ToString(ViewState["NombrePresupuesto"]);
        this.txtTipoCambio.Text = Convert.ToString(ViewState["TipoCambio"]);
        this.ddlUnidadNegocio.SelectedValue = Convert.ToString(ViewState["UnidadNegocioID"]);
        this.ddlMoneda.SelectedValue = Convert.ToString(ViewState["MonedaID"]);
        this.ddlEstado2.SelectedValue = Convert.ToString(ViewState["Estado"]);

        objet_Presupuestos = null;
        objlg_Presupuestos = null;
        Datos = null;

    }
    private void limpiarCampos()
    {
        int var_mesActual = DateTime.Now.Month; // obtengo el mes actual
        int var_anio = DateTime.Now.Year; // obtengo el año actual
        int var_mesSiguiente = DateTime.Now.Month + 1; // obtengo el mes siguiente
       // String var_UltimoMes = string.Format("{0:dd/MM/yyyy}", Convert.ToDateTime("01/" + var_mesSiguiente + "/" + var_anio).AddDays(-1).Date); //resto un día al mes y con esto obtengo el ultimo día
        //dateTimePickerDesde.Value = Convert.ToDateTime("01/" + var_mesActual + "/" + var_anio);// pongo el 1 porque siempre es el primer día obvio

        ViewState["PresupuestoID"] = "";
        this.txtDesde.Text = string.Format("{0:dd/MM/yyyy}", DateTime.Now);



        //this.txtHasta.Text = var_UltimoMes;
        this.txtNombre.Text = String.Empty;
        this.txtTipoCambio.Text = String.Empty;
        this.ddlEstado2.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        this.ddlMoneda.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        this.ddlUnidadNegocio.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Todos;
    }
    protected void btnGuardar_Click(object sender, EventArgs e)
    {


        BEPresupuestos objet_Presupuestos = new BEPresupuestos();
        BLPresupuestos objlg_Presupuestos = new BLPresupuestos();

        String strPresupuestoID = Convert.ToString(ViewState["PresupuestoID"]);
        String strRegistro;
        String strActualiza;

        if (strPresupuestoID == String.Empty)
        {
            //if (txtDesde.Text == txtHasta.Text)
            //{
            //    showMessage("La Fecha Hasta no tiene que ser igual a la Fecha Desde.");
            //    return;
            //}

            if (Convert.ToDateTime(txtDesde.Text).Date < DateTime.Now.Date)
            {
                showMessage("La Fecha Desde tiene que ser mayor o igual a la Fecha Actual.");
                return;
            }

            if (Convert.ToDateTime(txtDesde.Text).Date > Convert.ToDateTime(txtHasta.Text).Date)
            {
                showMessage("La Fecha Desde no tiene que ser mayor a la Fecha Hasta.");
                return;
            }
        }

        ViewState["New_Desde"] = this.txtDesde.Text;
        ViewState["New_Hasta"] = this.txtHasta.Text;
        ViewState["New_NombrePresupuesto"] = this.txtNombre.Text;
        ViewState["New_Estado"] = this.ddlEstado2.SelectedValue;
        ViewState["New_TipoCambio"] = this.txtTipoCambio.Text;
        ViewState["New_UnidadNegocioID"] = this.ddlUnidadNegocio.SelectedValue;
        ViewState["New_MonedaID"] = this.ddlMoneda.SelectedValue;

        objet_Presupuestos.Desde = Convert.ToString(ViewState["New_Desde"]).Trim();
        objet_Presupuestos.Hasta = Convert.ToString(ViewState["New_Hasta"]).Trim();
        objet_Presupuestos.PresupuestoID = strPresupuestoID.Trim();
        objet_Presupuestos.NombrePresupuesto = Convert.ToString(ViewState["New_NombrePresupuesto"]).Trim();
        objet_Presupuestos.TipoCambio = this.txtTipoCambio.Text.Trim();
        objet_Presupuestos.BEUnidadesDeNegocio.UnidadNegocioID = Convert.ToInt32(ViewState["New_UnidadNegocioID"].ToString().Trim());
        objet_Presupuestos.MonedaID = Convert.ToInt32(ViewState["New_MonedaID"]);
        objet_Presupuestos.Estado = Convert.ToByte(ViewState["New_Estado"]);
        objet_Presupuestos.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
        objet_Presupuestos.HotelID = Convert.ToInt32(Session["HotelID"]);

        strRegistro = "<<Creo Presupuestos>>" +
                      "\n<Desde>=" + ViewState["New_Desde"] +
                      "\n<Hasta>=" + ViewState["New_Hasta"] +
                      "\n<NombrePresupuesto>=" + ViewState["New_NombrePresupuesto"] +
                      "\n<TipoCambio>=" + ViewState["New_TipoCambio"] +
                      "\n<UnidadNegocioID>=" + ViewState["New_UnidadNegocioID"] +
                      "\n<MonedaID>=" + ViewState["New_MonedaID"] +
                      "\n<Estado>=" + ViewState["New_Estado"] +
                      "\n<EstablecimientoID>=" + Session["EmpresaID"] +
                      "\n<HotelID>=" + Session["HotelID"];

        //Ingresa
        objet_Presupuestos.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
        objet_Presupuestos.BEAuditores.Movimiento = strRegistro;
        objet_Presupuestos.BEAuditores.UsuarioIdAutorizado = 0;
        objet_Presupuestos.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
        objet_Presupuestos.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
        objet_Presupuestos.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
        objet_Presupuestos.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.Presupuestos;

        if (strPresupuestoID != String.Empty)
        {
            //Update
            strRegistro = "<<Actualiza Presupuestos>>" +
                          "\n<Desde>=" + ViewState["Desde"] +
                          "\n<Hasta>=" + ViewState["Hasta"] +
                          "\n<NombrePresupuesto>=" + ViewState["NombrePresupuesto"] +
                          "\n<TipoCambio>=" + ViewState["TipoCambio"] +
                          "\n<UnidadNegocioID>=" + ViewState["UnidadNegocioID"] +
                          "\n<MonedaID>=" + ViewState["MonedaID"] +
                          "\n<Estado>=" + ViewState["Estado"];

            strActualiza = "<<Actualiza Presupuestos>>" +
                          "\n<Desde>=" + ViewState["New_Desde"] +
                          "\n<Hasta>=" + ViewState["New_Hasta"] +
                           "\n<NombrePresupuesto>=" + ViewState["New_NombrePresupuesto"] +
                           "\n<TipoCambio>=" + ViewState["New_TipoCambio"] +
                           "\n<UnidadNegocioID>=" + ViewState["New_UnidadNegocioID"] +
                           "\n<MonedaID>=" + ViewState["New_MonedaID"] +
                           "\n<Estado>=" + ViewState["New_Estado"];

            objet_Presupuestos.BEAuditores.Movimiento = strRegistro;
            objet_Presupuestos.BEAuditores.MovimientoUltimo = strActualiza;
            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);
        }
        else
        {
            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true);
        }

        int registro = objlg_Presupuestos.fnInsUpdPresupuestos(objet_Presupuestos);
        if (registro > 0) { showMessage("Los Datos que ingreso ya esta registrado"); };

        objet_Presupuestos = null;
        objlg_Presupuestos = null;
        this.limpiarCampos();
    }

    protected void btnVolver_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);
        this.limpiarCampos();
    }

    protected void showMessage(string strMessage)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "alert('" + strMessage + "');", true);

    }

}
