Option Explicit On Option Strict On Imports System.Data Imports System.Linq Imports Extensiones Partial Class OS_CatEstatusOrdenServicio Inherits ClsPaginas #Region " PROPIEDADES" Private Property DtEstatusOS As Data.DataTable Get Return CType(ViewState("DtEstatusOS"), DataTable) End Get Set(value As Data.DataTable) ViewState("DtEstatusOS") = value End Set End Property Private Property CveEstatuOS As Integer Get Return ViewState("CveEstatuOS").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatuOS") = value End Set End Property Private Property Orden As String Get Return ViewState("Orden").ToString End Get Set(value As String) ViewState("Orden") = value End Set End Property Private Property DTEstatusUsuarios As DataTable Get Return CType(ViewState("DTEstatusUsuarios"), DataTable) End Get Set(value As Data.DataTable) ViewState("DTEstatusUsuarios") = value End Set End Property Private Property DTUsuarios As DataTable Get Return CType(ViewState("DTUsuarios"), DataTable) End Get Set(value As Data.DataTable) ViewState("DTUsuarios") = value End Set End Property Private Property DtEstatusUsuariosAsociados As DataTable Get Return CType(ViewState("DtEstatusUsuariosAsociados"), DataTable) End Get Set(value As Data.DataTable) ViewState("DtEstatusUsuariosAsociados") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto) CargarTodosLosDatos() CveEstatuOS = -1 End If RegistraScript(" $('#TxtBackgroundColor').simpleColorPicker();") End Sub Private Sub CargarTodosLosDatos() CargaDatos() AsociarEstatusUsuarios() CargarUsuarioConEstatus() End Sub Public Sub CargaDatos() DTUsuarios = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) Using ObjEstatusOrdenServicios As New ClsOS If ObjEstatusOrdenServicios.GetEstatusOrdenServicio(UsuarioActual.CveEmpresa) Then DtEstatusOS = ObjEstatusOrdenServicios.DtResultados GvDatos.DataSource = DtEstatusOS End If If ObjEstatusOrdenServicios.GetEstatusUsuarios(-1, -1, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then DTEstatusUsuarios = ObjEstatusOrdenServicios.DtResultados End If End Using GvDatos.DataBind() OrdenaDatos() End Sub Private Sub BtnAgregarEstatus_Click(sender As Object, e As EventArgs) Handles BtnAgregarEstatus.Click TxtEstatusOS.Text = "" TxtBackgroundColor.Text = "" BtnAgregarEstatusOS.Text = "Agregar" divChkEstatus.Visible = False UpBodyEstatus.Update() UpFooter.Update() RegistraScript("$('#divAddEstatusOS').modal();LimpiaModal()") End Sub Protected Sub BtnAgregarEstatusOS_Click(sender As Object, e As EventArgs) Handles BtnAgregarEstatusOS.Click Dim ObjEstatusOrdenServicios As New ClsOS Dim TieneError As Boolean = False If HdnModalidad.Value = "I" Then If ObjEstatusOrdenServicios.AddEstatusOrdenServicio(TxtEstatusOS.Text.Trim, DdlTipoEstatus.SelectedValue.ToEntero, If(ChkEstatus.Checked, 1, 0), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, TxtBackgroundColor.Text.Replace("#", "")) Then GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa) = Nothing Alert("Estatus agregado") End If Else If HdnID.Value.ToEntero <> -1 Then If Not ObjEstatusOrdenServicios.UpdateEstatusOrdenServicio(TxtEstatusOS.Text.Trim, DdlTipoEstatus.SelectedValue.ToEntero, If(ChkEstatus.Checked, 1, 0), HdnID.Value.ToEntero, TxtBackgroundColor.Text.Replace("#", "")) Then TieneError = True Else GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa) = Nothing End If End If If Not TieneError Then GvDatos.EditIndex = -1 'CargaDatos() Alert("Estatus actualizado") Else Alert("Ocurrio un error al actualizar los datos", TipoMensaje.MsgAdvertencia) End If End If CargaDatos() ObjEstatusOrdenServicios.Dispose() RegistraScript(String.Format("$('#{0}').modal('hide');", "divAddEstatusOS")) EstatusUsuariosGridActualizar() AsociarEstatusUsuarios() CargarUsuarioConEstatus() UpDatos.Update() UpGvUsuariosEstatus.Update() 'Response.Redirect(HttpContext.Current.Request.Url.ToString(), True) End Sub Public Sub Edit_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) DdlTipoEstatus.SelectedValueExist(GvRow.DataKey("TipoEstatus")) TxtEstatusOS.Text = GvRow.DataKey("EstatusOrdenServicio") ChkEstatus.Checked = If(GvRow.DataKey("Estado").ToString = "Activo", True, False) CveEstatuOS = GvRow.DataKey("CveEstatusOrdenServicio").ToEntero TxtBackgroundColor.Text = "#" & GvRow.DataKey("BackgroundColor") BtnAgregarEstatusOS.Text = "Actualizar" divChkEstatus.Visible = True UpBodyEstatus.Update() UpAddEstatus.Update() RegistraScript(String.Format("$('#{0}').modal();", "divAddEstatusOS")) End Sub #Region "G V D A T O S" Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim URL As String = String.Format("javascript:LimpiaModal();SetValue('HdnModalidad', 'U');SetValue('HdnID', '{0}'); SetObjects('{1}');ShowDivRegistro();return false;", e.Row.DBCampo("CveEstatusOrdenServicio").ToEntero, e.Row.DBCampo("EstatusOrdenServicio")) 'GeneroLigas Dim Liga As String = String.Format("", URL) e.Row.VerticalAlign = VerticalAlign.Middle e.Row.FCLinkButton("ImgE").OnClientClick = URL End If End Sub Protected Sub GvDatos_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvDatos.RowDeleting Dim ObjEstatusOrdenServicios As New ClsOS Dim CveEstatusOrdenServicio As Integer = GvDatos.Rows(e.RowIndex).DataKey("CveEstatusOrdenServicio").ToEntero If ObjEstatusOrdenServicios.RemoveEstatusOrdenServicio(CveEstatusOrdenServicio) Then GvDatos.EditIndex = -1 DtEstatusOS = ObjEstatusOrdenServicios.DtResultados.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa) = Nothing Alert("El Estatus de Orden de Servicio se eliminó correctamente.", TipoMensaje.MsgInformacion) End If ObjEstatusOrdenServicios.Dispose() CargaDatos() UpDatos.Update() EstatusUsuariosGridActualizar() AsociarEstatusUsuarios() CargarUsuarioConEstatus() UpGvUsuariosEstatus.Update() 'Response.Redirect(HttpContext.Current.Request.Url.ToString(), True) End Sub Protected Sub GvDatos_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvDatos.RowUpdating Dim ObjEstatusOrdenServicios As New ClsOS Dim EstatusOrdenServicio As String = DirectCast(GvDatos.Rows(e.RowIndex).FindControl("TxtEstatusOrdenServicio"), TextBox).Text.Trim Dim Estado As Boolean = GvDatos.Rows(e.RowIndex).FCCheckBox("ChkEstado").Checked Dim CveEstatusOrdenServicio As Integer = GvDatos.DataKeys(e.RowIndex).Value.ToString.ToEntero ObjEstatusOrdenServicios.Dispose() End Sub #End Region #Region "O R D E N A M I E N T O" Private Sub OrdenaDatos() If (GvDatos.Rows.Count > 0) Then GvDatos.UseAccessibleHeader = True GvDatos.HeaderRow.TableSection = TableRowSection.TableHeader RegistraScript("OrdenarGV();") End If End Sub #End Region #Region "Configuracion" Private Sub AsociarEstatusUsuarios() Dim tableResultado As DataTable = DTUsuarios For Each Estatus As DataRow In DtEstatusOS.Rows Dim CveColumnaEstatus As String = Estatus.Item("CveEstatusOrdenServicio").ToString If Not tableResultado.Columns.Contains(CveColumnaEstatus) Then tableResultado.Columns.Add(CveColumnaEstatus, Type.GetType("System.Boolean")) End If For Each Usuario As DataRow In tableResultado.Rows Usuario.Item(CveColumnaEstatus) = Not IsNothing(DTEstatusUsuarios.FiltroPrimero(String.Format("CveUsuario = {0} and CveEstatusOrdenServicio = {1}", Usuario.Item("CveUsuario"), CveColumnaEstatus))) Next Next DtEstatusUsuariosAsociados = tableResultado End Sub Private Sub CargarUsuarioConEstatus() Dim nombresUsuarios As New BoundField nombresUsuarios.DataField = "Nombre" nombresUsuarios.HeaderText = "Usuario" nombresUsuarios.ItemStyle.CssClass = "columnaUsuarios" GvUsuariosEstatus.Columns.Add(nombresUsuarios) For Each Estatus As DataRow In DtEstatusOS.Rows Dim test As New CheckBoxField test.HeaderText = Estatus.Item("EstatusOrdenServicio").ToString test.DataField = Estatus.Item("CveEstatusOrdenServicio").ToString GvUsuariosEstatus.Columns.Add(test) Next GvUsuariosEstatus.DataSource = DtEstatusUsuariosAsociados GvUsuariosEstatus.DataBind() End Sub Private Sub GvUsuariosEstatus_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvUsuariosEstatus.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim PermisosDeUsuario As DataTable = DTEstatusUsuarios.FiltraParametros(String.Format("CveUsuario = {0}", e.Row.DBCampo("CveUsuario").ToString)) For i As Integer = 1 To e.Row.Cells.Count - 1 If e.Row.RowType = DataControlRowType.DataRow Then Dim checkBox As CheckBox = TryCast(e.Row.Cells(i).Controls(0), CheckBox) checkBox.Enabled = True End If Next End If End Sub Private Sub GuardarDatosGvUsuariosEstatus(sender As Object, e As EventArgs) Handles BtnGuardarUsuariosEstatus.Click If DdlSubProyecto.SelectedValue.ToEntero > 0 Then Dim objEstatusOC As New ClsOS objEstatusOC.IniciaTransacSQL() Dim HuboErrores As Boolean = False Dim CveSubProyecto As Integer = DdlSubProyecto.SelectedValue.ToEntero For Each Row As GridViewRow In GvUsuariosEstatus.Rows Dim controles As Integer = Row.Controls.Count For i As Integer = 1 To Row.Cells.Count - 1 Dim chk As CheckBox = CType(Row.Cells(i).Controls(0), CheckBox) Dim CveEstatus As Integer = DtEstatusOS.FiltroPrimeroValor("CveEstatusOrdenServicio", String.Format("EstatusOrdenServicio = '{0}'", GvUsuariosEstatus.Columns(i).HeaderText)).ToEntero If Not chk.Checked Then If Not objEstatusOC.RemoveEstatusUsuarios(CveEstatus, Row.DataKey("CveUsuario").ToString.ToEntero, CveSubProyecto) Then HuboErrores = True Exit For End If ElseIf chk.Checked Then 'Guardado masivo cuando sea SubProyecto "Todos" If Not objEstatusOC.AddEstatusUsuarios(CveEstatus, Row.DataKey("CveUsuario").ToString.ToEntero, CveSubProyecto, UsuarioActual.CveUsuario) Then HuboErrores = True Exit For End If End If Next Next If Not HuboErrores Then objEstatusOC.Commit() Alert("Se guardaron los Cambios exitosamente", TipoMensaje.MsgInformacion) Else objEstatusOC.RollBack() Alert("Ocurrió un error al guardar los cambios. Por favor vuelva a intentar", TipoMensaje.MsgError) End If objEstatusOC.Dispose() Else Alert("Se debe seleccionar un SubProyecto valido", TipoMensaje.MsgAdvertencia) EstatusUsuariosGridActualizar() CargarTodosLosDatos() End If End Sub Private Sub EstatusUsuariosGridActualizar() DtEstatusUsuariosAsociados = Nothing GvUsuariosEstatus.DataBind() For Contador As Integer = (GvUsuariosEstatus.Columns.Count - 1) To 0 Step -1 GvUsuariosEstatus.Columns.RemoveAt(Contador) Next End Sub Private Sub Proyecto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProyecto.SelectedIndexChanged CargarSubProyecto(DdlSubProyecto, DdlProyecto.SelectedValue) 'CargaDatos() EstatusUsuariosGridActualizar() CargarTodosLosDatos() UpGvUsuariosEstatus.Update() End Sub Private Sub SubProyecto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSubProyecto.SelectedIndexChanged EstatusUsuariosGridActualizar() CargarTodosLosDatos() End Sub #End Region End Class