using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Telerik.Web.UI;
using System.Globalization;

using BE;
using BL;
using Utilitaria;


public partial class List_PresupuestoDetalle : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Usuario"] == null)
        {
            Response.Redirect(Utilitaria.Cls_Enums.CerrarSesion.Salir);
        }
        if (!IsPostBack)
        {
            llenaCombo();
            ActivDesac();

           ViewState["presupuestoid"] = Request.QueryString["ID"].ToString().Trim();
           Combo_Presupuesto();
        }
    }

    private void listar(int tipo)
    {
        BEPresupuestoDetalle objet_PresupuestoDetalle = new BEPresupuestoDetalle();
        BLPresupuestoDetalle objlg_PresupuestoDetalle = new BLPresupuestoDetalle();
        string combo = this.ddlEstado.SelectedValue.ToString().Trim();
        if (combo == string.Empty)
        {
            combo = "0";
        }

        string strEstado = Utilitaria.Cls_Utilitaria.f_CadenaEstado(Convert.ToInt32(combo));
        
        if (combo == Utilitaria.Cls_Enums.EstadoModulos.Activo)
        {
            this.tk_Grid.Columns[17].Visible = false;
            this.tk_Grid.Columns[18].Visible = true;
        }
        else
        {
            this.tk_Grid.Columns[17].Visible = true;
            this.tk_Grid.Columns[18].Visible = false;
        }


        if (tipo == 1)
        {
            Session["PresupuestoDetalle"] = objlg_PresupuestoDetalle.fnSelPresupuestoDetalleDin(strEstado + " and presupuestoid=" + ViewState["presupuestoid"], "");
            tk_Grid.DataSource = Session["PresupuestoDetalle"];

        }
        if (tipo == 2)
        {
            Session["PresupuestoDetalle"] = objlg_PresupuestoDetalle.fnSelPresupuestoDetalleDin(strEstado + " and presupuestoid=" + ViewState["presupuestoid"], "");
            tk_Grid.DataSource = Session["PresupuestoDetalle"];
            tk_Grid.DataBind();
        }
        objet_PresupuestoDetalle = null;
        objlg_PresupuestoDetalle = null;
    }

    private void llenaCombo()
    {
        //this.ddlEstado.Items.Insert(0, "---Todos---");
        //this.ddlEstado.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;

        this.ddlEstado.Items.Insert(0, new RadComboBoxItem("Activo"));
        this.ddlEstado.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Activo;

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

        //        this.cmbEstado.Items.Insert(0, "");
    }

    private void Combo_Presupuesto()
    {
        BLPresupuestos objBLPresupuestos = new BLPresupuestos();
        string strEstado = "Estado=0 and Pre.EstablecimientoID=" + Session["EmpresaID"].ToString() + " and Pre.HotelID=" + Session["HotelID"].ToString();

        List<BEPresupuestos> lstPresupuestos = objBLPresupuestos.fnSelPresupuestosDin(strEstado, "");

        //this.ddlPresupuesto.Items.Insert(0, new RadComboBoxItem("---Seleccione---"));
        //this.ddlPresupuesto.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;

        for (int i = 0; i < lstPresupuestos.Count; i++)
        {
            this.ddlPresupuesto.Items.Insert(i, new RadComboBoxItem(lstPresupuestos[i].NombrePresupuesto.ToString().Trim()));
            this.ddlPresupuesto.Items[i].Value = lstPresupuestos[i].PresupuestoID.ToString().Trim();
        }

        this.ddlPresupuesto.SelectedValue = ViewState["presupuestoid"].ToString();

    }


    public string f_NombreEstado(Int32 Estados)
    {
        return Utilitaria.Cls_Utilitaria.f_TipoEstado(Convert.ToInt32(Estados));
    }

    private void ActivDesac()
    {

        //if (this.ddlEstado.SelectedValue.ToString() == Utilitaria.Cls_Enums.EstadoModulos.Activo)
        //{
        //    //this.tk_Grid.Columns[14].Visible = true;
        //    this.tk_Grid.Columns[15].Visible = false;
        //    this.tk_Grid.Columns[16].Visible = true;
        //}
        //else
        //{
        //   // this.tk_Grid.Columns[14].Visible = false;
        //    this.tk_Grid.Columns[15].Visible = true;
        //    this.tk_Grid.Columns[16].Visible = false;
        //}
    }


    protected void tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
    {
        tk_Grid.ExportSettings.ExportOnlyData = true;
        tk_Grid.ExportSettings.IgnorePaging = true;
        tk_Grid.ExportSettings.OpenInNewWindow = false;

        switch (e.CommandName)
        {
            case "ExportExcel":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToExcel();
                    this.listar(1);
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportPDF":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToPdf();
                    this.listar(1);
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportWord":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToWord();
                    this.listar(1);
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportCSV":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToCSV();
                    this.listar(1);
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "Print":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Imprime == 1)
                {
                    Response.Write(Cls_Utilitaria.f_Imprime());
                    this.listar(1);
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
        }
        
        if (e.CommandName == "activar")
        {
            int index = e.Item.ItemIndex;
            String PresupuestoID = ((List<BEPresupuestoDetalle>)Session["PresupuestoDetalle"])[index].PresupuestoID;
            String PlancuentaID = ((List<BEPresupuestoDetalle>)Session["PresupuestoDetalle"])[index].PlanCuentaID;
            int UnidadNegocio = ((List<BEPresupuestoDetalle>)Session["PresupuestoDetalle"])[index].UnidadNegocioID;
            BEPresupuestoDetalle objet_PresupuestoDetalle = new BEPresupuestoDetalle();
            BLPresupuestoDetalle objlg_PresupuestoDetalle = new BLPresupuestoDetalle();
            List<BEPresupuestoDetalle> Datos;
            Datos = objlg_PresupuestoDetalle.fnSelPresupuestoDetalleDin("Estado=1 AND PresupuestoID= " + PresupuestoID + " AND PlancuentaID=" + PlancuentaID + " AND UnidadNegocioID=" + UnidadNegocio.ToString(), "");
            if (Datos.Count > 0)
            {
                Activa(Datos[0].PresupuestoDetalleIDEnero);
                Activa(Datos[0].PresupuestoDetalleIDFebrero);
                Activa(Datos[0].PresupuestoDetalleIDMarzo);
                Activa(Datos[0].PresupuestoDetalleIDAbril);
                Activa(Datos[0].PresupuestoDetalleIDMayo);
                Activa(Datos[0].PresupuestoDetalleIDJunio);
                Activa(Datos[0].PresupuestoDetalleIDJulio);
                Activa(Datos[0].PresupuestoDetalleIDAgosto);
                Activa(Datos[0].PresupuestoDetalleIDSeptiembre);
                Activa(Datos[0].PresupuestoDetalleIDOctubre);
                Activa(Datos[0].PresupuestoDetalleIDNoviembre);
                Activa(Datos[0].PresupuestoDetalleIDDiciembre);
            }
            this.tk_Grid.Rebind();
        }

        if (e.CommandName == "desactivar")
        {
            int index = e.Item.ItemIndex;
            String PresupuestoID = ((List<BEPresupuestoDetalle>)Session["PresupuestoDetalle"])[index].PresupuestoID;
            String PlancuentaID = ((List<BEPresupuestoDetalle>)Session["PresupuestoDetalle"])[index].PlanCuentaID;
            int UnidadNegocio = ((List<BEPresupuestoDetalle>)Session["PresupuestoDetalle"])[index].UnidadNegocioID;
            BEPresupuestoDetalle objet_PresupuestoDetalle = new BEPresupuestoDetalle();
            BLPresupuestoDetalle objlg_PresupuestoDetalle = new BLPresupuestoDetalle();
            List<BEPresupuestoDetalle> Datos;
            Datos = objlg_PresupuestoDetalle.fnSelPresupuestoDetalleDin("Estado=0 AND PresupuestoID= " + PresupuestoID + " AND PlancuentaID=" + PlancuentaID + " AND UnidadNegocioID=" + UnidadNegocio.ToString(), "");
            if (Datos.Count > 0)
            {
                Desactiva(Datos[0].PresupuestoDetalleIDEnero);
                Desactiva(Datos[0].PresupuestoDetalleIDFebrero);
                Desactiva(Datos[0].PresupuestoDetalleIDMarzo);
                Desactiva(Datos[0].PresupuestoDetalleIDAbril);
                Desactiva(Datos[0].PresupuestoDetalleIDMayo);
                Desactiva(Datos[0].PresupuestoDetalleIDJunio);
                Desactiva(Datos[0].PresupuestoDetalleIDJulio);
                Desactiva(Datos[0].PresupuestoDetalleIDAgosto);
                Desactiva(Datos[0].PresupuestoDetalleIDSeptiembre);
                Desactiva(Datos[0].PresupuestoDetalleIDOctubre);
                Desactiva(Datos[0].PresupuestoDetalleIDNoviembre);
                Desactiva(Datos[0].PresupuestoDetalleIDDiciembre);
            }
        this.tk_Grid.Rebind();
        }
    
    }

    private void Activa(string PresupuestoDetalleID)
    {
        Cls_Utilitaria.f_cambiaEstado_PresupuestoDetalle(PresupuestoDetalleID,
                                                                   Convert.ToString(Cls_Enums.EstadoModulos.Activo),
                                                                   Convert.ToInt32(Session["UsuarioID"]),
                                                                   "",
                                                                   0,
                                                                   Cls_Enums.TablaMovimientos.PresupuestoDetalle,
                                                                   "",
                                                                   "");  
    }
  
    private void Desactiva(string PresupuestoDetalleID)
    {
        Cls_Utilitaria.f_cambiaEstado_PresupuestoDetalle(PresupuestoDetalleID,
                                                             Convert.ToString(Cls_Enums.EstadoModulos.Inactivo),
                                                             Convert.ToInt32(Session["UsuarioID"]),
                                                             "",
                                                             0,
                                                             Cls_Enums.TablaMovimientos.PresupuestoDetalle,
                                                             "",
                                                             "");   
    }
    
    protected void tk_Grid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        listar(1);
    }


    protected void tk_Grid_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
            editLink.Attributes["href"] = "#";
            editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}','{2}','{3}','{4}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["PresupuestoID"].ToString().Trim(), e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["PlancuentaID"].ToString().Trim(), e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["UnidadNegocioID"].ToString().Trim(), e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Estado"].ToString().Trim(), e.Item.ItemIndex);
        }

    }
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        if (e.Argument == "Rebind")
        {
            tk_Grid.MasterTableView.SortExpressions.Clear();
            tk_Grid.MasterTableView.GroupByExpressions.Clear();
            tk_Grid.Rebind();
        }
        else if (e.Argument == "RebindAndNavigate")
        {
            tk_Grid.MasterTableView.SortExpressions.Clear();
            tk_Grid.MasterTableView.GroupByExpressions.Clear();
            tk_Grid.MasterTableView.CurrentPageIndex = tk_Grid.MasterTableView.PageCount - 1;
            tk_Grid.Rebind();
        }
    }
    protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (this.ddlEstado.SelectedValue.ToString() != string.Empty)
        { listar(2); }
        else 
        { listar(1); }

    }
    protected void ddlPresupuesto_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        if (ddlPresupuesto.SelectedValue.ToString().Trim() != null)
        {
            Response.Redirect("List_PresupuestoDetalle.aspx?ID=" + ddlPresupuesto.SelectedValue.ToString().Trim());
        }
    }

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

    }

}
