private void ConsultarCompleto()
        {
            try
            {
                AutorizadorBO bo = (AutorizadorBO)this.InterfazUsuarioADato();

                List <AutorizadorBO> lst = this.controlador.ConsultarCompleto(this.dctx, bo);

                if (lst.Count < 1)
                {
                    throw new Exception("No se encontró ningún registro que corresponda a la información proporcionada.");
                }
                if (lst.Count > 1)
                {
                    throw new Exception("La consulta devolvió más de un registro.");
                }

                this.DatoAInterfazUsuario(lst[0]);
            }
            catch (Exception ex)
            {
                this.DatoAInterfazUsuario(new AutorizadorBO());
                throw new Exception(this.nombreClase + ".ConsultarCompleto:" + ex.Message);
            }
        }
        private void DatoAInterfazUsuario(object obj)
        {
            AutorizadorBO bo = (AutorizadorBO)obj;

            if (bo.Sucursal == null)
            {
                bo.Sucursal = new SucursalBO();
            }
            if (bo.Empleado == null)
            {
                bo.Empleado = new EmpleadoBO();
            }

            this.vista.AutorizadorID  = bo.AutorizadorID;
            this.vista.SucursalID     = bo.Sucursal.Id;
            this.vista.SucursalNombre = bo.Sucursal.Nombre;
            this.vista.EmpleadoID     = bo.Empleado.Id;
            this.vista.EmpleadoNombre = bo.Empleado.NombreCompleto;
            if (bo.TipoAutorizacion != null)
            {
                this.vista.TipoAutorizacion = bo.TipoAutorizacion;
            }
            this.vista.SoloNotificacion = bo.SoloNotificacion;
            this.vista.Email            = bo.Empleado.Email;
            this.vista.Telefono         = (bo.Empleado.Telefonos == null || bo.Empleado.Telefonos.Count == 0) ? null : bo.Empleado.Telefonos[0].Numero;
            this.vista.Estatus          = bo.Estatus;

            this.vista.UC              = bo.UC;
            this.vista.UUA             = bo.UUA;
            this.vista.UsuarioCreacion = this.ObtenerNombreEmpleado(bo.UC);
            this.vista.UsuarioEdicion  = this.ObtenerNombreEmpleado(bo.UUA);
            this.vista.FC              = bo.FC;
            this.vista.FUA             = bo.FUA;
        }
        public void IrADetalle(int?autorizadorID)
        {
            try
            {
                if (autorizadorID == null)
                {
                    throw new Exception("No se encontró el registro seleccionado.");
                }

                AutorizadorBO bo = new AutorizadorBO {
                    AutorizadorID = autorizadorID
                };

                this.vista.LimpiarSesion();

                Dictionary <string, object> paquete = new Dictionary <string, object>();
                paquete.Add("ObjetoFiltro", this.InterfazUsuarioADato());
                paquete.Add("Bandera", true);

                this.vista.EstablecerPaqueteNavegacion("FiltrosAutorizador", paquete);
                this.vista.EstablecerPaqueteNavegacion("AutorizadorBO", bo);

                this.vista.RedirigirADetalle();
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".IrADetalle: " + ex.Message);
            }
        }
        public void ConsultarAutorizadores()
        {
            string s;

            if ((s = this.ValidarCampos()) != null)
            {
                this.vista.MostrarMensaje(s, ETipoMensajeIU.ADVERTENCIA, null);
                return;
            }

            try
            {
                AutorizadorBO        bo  = (AutorizadorBO)this.InterfazUsuarioADato();
                List <AutorizadorBO> lst = this.controlador.ConsultarCompleto(this.dctx, bo);

                if (lst.Count < 1)
                {
                    this.vista.MostrarMensaje("La búsqueda no produjo resultados", ETipoMensajeIU.INFORMACION,
                                              "No se encontraron coincidencias con los criterios ingresados. Verifique sus datos");
                }

                this.vista.EstablecerResultado(lst);
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".ConsultarAutorizadores: " + ex.Message);
            }
        }
        private object InterfazUsuarioADato()
        {
            AutorizadorBO bo = new AutorizadorBO();

            bo.Sucursal = new SucursalBO();
            bo.Empleado = new EmpleadoBO();

            bo.AutorizadorID = vista.AutorizadorID;

            return(bo);
        }
        public void Registrar()
        {
            string s;

            if ((s = this.ValidarCampos()) != null)
            {
                this.vista.MostrarMensaje(s, ETipoMensajeIU.ADVERTENCIA, null);
                return;
            }

            try
            {
                AutorizadorBO bo = (AutorizadorBO)this.InterfazUsuarioADato();

                //Se crea el objeto de seguridad
                UsuarioBO usuario = new UsuarioBO()
                {
                    Id = this.vista.UsuarioID
                };
                AdscripcionBO adscripcion = new AdscripcionBO()
                {
                    UnidadOperativa = new UnidadOperativaBO()
                    {
                        Id = this.vista.UnidadOperativaID
                    }
                };
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, usuario, adscripcion);

                this.controlador.Insertar(this.dctx, bo, seguridadBO);

                //Se consulta lo insertado para recuperar los ID
                DataSet ds = this.controlador.ConsultarSet(this.dctx, bo);
                if (ds.Tables[0].Rows.Count <= 0)
                {
                    throw new Exception("Al consultar lo insertado no se encontraron coincidencias.");
                }
                if (ds.Tables[0].Rows.Count > 1)
                {
                    throw new Exception("Al consultar lo insertado se encontró más de una coincidencia.");
                }

                bo.AutorizadorID = this.controlador.DataRowToAutorizadorBO(ds.Tables[0].Rows[0]).AutorizadorID;

                this.LimpiarSesion();
                this.vista.EstablecerPaqueteNavegacion("AutorizadorBO", bo);
                this.vista.RedirigirADetalles();
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".Registrar: " + ex.Message);
            }
        }
        private object InterfazUsuarioADato()
        {
            AutorizadorBO bo = new AutorizadorBO
            {
                Sucursal = new SucursalBO {
                    Id = vista.SucursalID
                },
                Empleado = new EmpleadoBO {
                    Id = vista.EmpleadoID
                },
            };

            bo.Sucursal.UnidadOperativa = new UnidadOperativaBO()
            {
                Id = this.vista.UnidadOperativaID
            };
            #region Tipo de Autorización
            switch (this.vista.UnidadOperativaID)
            {
            case (int)ETipoEmpresa.Generacion:
                bo.TipoAutorizacion = (ETipoAutorizacionGeneracion)Enum.Parse(typeof(ETipoAutorizacionGeneracion), this.vista.TipoAutorizacion.ToString());
                break;

            case (int)ETipoEmpresa.Construccion:
                bo.TipoAutorizacion = (ETipoAutorizacionConstruccion)Enum.Parse(typeof(ETipoAutorizacionConstruccion), this.vista.TipoAutorizacion.ToString());
                break;

            case (int)ETipoEmpresa.Equinova:
                bo.TipoAutorizacion = (ETipoAutorizacionEquinova)Enum.Parse(typeof(ETipoAutorizacionEquinova), this.vista.TipoAutorizacion.ToString());
                break;

            default:
                bo.TipoAutorizacion = (ETipoAutorizacion)Enum.Parse(typeof(ETipoAutorizacion), this.vista.TipoAutorizacion.ToString());
                break;
            }
            #endregion
            bo.SoloNotificacion = this.vista.SoloNotificacion;
            bo.Estatus          = this.vista.Estatus;
            bo.FC  = this.vista.FC;
            bo.FUA = this.vista.FUA;
            bo.UC  = this.vista.UC;
            bo.UUA = this.vista.UUA;

            return(bo);
        }
        private object InterfazUsuarioADato()
        {
            AutorizadorBO bo = new AutorizadorBO();

            bo.Sucursal = new SucursalBO();
            bo.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            bo.Empleado = new EmpleadoBO();

            bo.AutorizadorID           = this.vista.AutorizadorID;
            bo.Sucursal.Id             = this.vista.SucursalID;
            bo.Sucursal.Nombre         = this.vista.SucursalNombre;
            bo.Empleado.Id             = this.vista.EmpleadoID;
            bo.Empleado.NombreCompleto = this.vista.EmpleadoNombre;
            if (this.vista.TipoAutorizacion != null)
            {
                switch (this.vista.UnidadOperativaID)
                {
                case (int)ETipoEmpresa.Generacion:
                    bo.TipoAutorizacion = (ETipoAutorizacionGeneracion)Enum.Parse(typeof(ETipoAutorizacionGeneracion), this.vista.TipoAutorizacion.ToString());
                    break;

                case (int)ETipoEmpresa.Construccion:
                    bo.TipoAutorizacion = (ETipoAutorizacionConstruccion)Enum.Parse(typeof(ETipoAutorizacionConstruccion), this.vista.TipoAutorizacion.ToString());
                    break;

                case (int)ETipoEmpresa.Equinova:
                    bo.TipoAutorizacion = (ETipoAutorizacionEquinova)Enum.Parse(typeof(ETipoAutorizacionEquinova), this.vista.TipoAutorizacion.ToString());
                    break;

                default:
                    bo.TipoAutorizacion = (ETipoAutorizacion)Enum.Parse(typeof(ETipoAutorizacion), this.vista.TipoAutorizacion.ToString());
                    break;
                }
            }
            bo.SoloNotificacion = this.vista.SoloNotificacion;
            bo.Empleado.Email   = this.vista.Email;
            bo.Empleado.RFC     = this.vista.Telefono;
            bo.Estatus          = this.vista.Estatus;
            bo.FUA = this.vista.FUA;
            bo.UUA = this.vista.UUA;
            bo.FC  = this.vista.FC;
            bo.UC  = this.vista.UC;

            return(bo);
        }
        private void DatoAInterfazUsuario(Object obj)
        {
            AutorizadorBO bo = (AutorizadorBO)obj;

            if (bo.Sucursal == null)
            {
                bo.Sucursal = new SucursalBO();
            }
            if (bo.Empleado == null)
            {
                bo.Empleado = new EmpleadoBO();
            }

            this.vista.SucursalID     = bo.Sucursal.Id;
            this.vista.SucursalNombre = bo.Sucursal.Nombre;
            this.vista.EmpleadoID     = bo.Empleado.Id;
            this.vista.EmpleadoNombre = bo.Empleado.Nombre;
            this.vista.Estatus        = bo.Estatus;
            if (bo.TipoAutorizacion != null)
            {
                switch (this.vista.UnidadOperativaID)
                {
                case (int)ETipoEmpresa.Generacion:
                    this.vista.TipoAutorizacion = bo.TipoAutorizacion;
                    break;

                case (int)ETipoEmpresa.Construccion:
                    this.vista.TipoAutorizacion = bo.TipoAutorizacion;
                    break;

                case (int)ETipoEmpresa.Equinova:
                    this.vista.TipoAutorizacion = bo.TipoAutorizacion;
                    break;

                default:
                    this.vista.TipoAutorizacion = bo.TipoAutorizacion;
                    break;
                }
            }
            else
            {
                this.vista.TipoAutorizacion = null;
            }
        }
        public void Editar()
        {
            string s;

            if ((s = this.ValidarCampos()) != null)
            {
                this.vista.MostrarMensaje(s, ETipoMensajeIU.ADVERTENCIA, null);
                return;
            }

            try
            {
                AutorizadorBO bo = (AutorizadorBO)InterfazUsuarioADato();

                //Se crea el objeto de seguridad
                UsuarioBO usuario = new UsuarioBO()
                {
                    Id = this.vista.UsuarioID
                };
                AdscripcionBO adscripcion = new AdscripcionBO()
                {
                    UnidadOperativa = new UnidadOperativaBO()
                    {
                        Id = this.vista.UnidadOperativaID
                    }
                };
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, usuario, adscripcion);

                this.controlador.Actualizar(this.dctx, bo, this.vista.UltimoObjeto as AutorizadorBO, seguridadBO);

                this.vista.LimpiarSesion();
                this.vista.EstablecerPaqueteNavegacion("AutorizadorBO", new AutorizadorBO()
                {
                    AutorizadorID = bo.AutorizadorID
                });
                this.vista.RedirigirADetalle();
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".Editar:" + ex.Message);
            }
        }
        private void EstablecerDatosNavegacion(object paqueteNavegacion)
        {
            try
            {
                if (paqueteNavegacion == null)
                {
                    throw new Exception("Se esperaba un objeto en la navegación. No se puede identificar qué autorizador se desea consultar.");
                }
                if (!(paqueteNavegacion is AutorizadorBO))
                {
                    throw new Exception("Se esperaba un Autorizador.");
                }

                AutorizadorBO bo = (AutorizadorBO)paqueteNavegacion;

                this.DatoAInterfazUsuario(bo);
            }
            catch (Exception ex)
            {
                this.DatoAInterfazUsuario(new AutorizadorBO());
                throw new Exception(this.nombreClase + ".EstablecerDatosNavegacion: " + ex.Message);
            }
        }
        private Object InterfazUsuarioADato()
        {
            AutorizadorBO bo = new AutorizadorBO();

            bo.Sucursal = new SucursalBO();
            bo.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            bo.Empleado = new EmpleadoBO();

            bo.Empleado.Id = this.vista.EmpleadoID;
            bo.Sucursal.Id = this.vista.SucursalID;
            bo.Sucursal.UnidadOperativa.Id = this.vista.UnidadOperativaID;
            bo.Estatus = this.vista.Estatus;
            if (this.vista.TipoAutorizacion != null)
            {
                switch (this.vista.UnidadOperativaID)
                {
                case (int)ETipoEmpresa.Generacion:
                    bo.TipoAutorizacion = (ETipoAutorizacionGeneracion)Enum.Parse(typeof(ETipoAutorizacionGeneracion), this.vista.TipoAutorizacion.ToString());
                    break;

                case (int)ETipoEmpresa.Construccion:
                    bo.TipoAutorizacion = (ETipoAutorizacionConstruccion)Enum.Parse(typeof(ETipoAutorizacionConstruccion), this.vista.TipoAutorizacion.ToString());
                    break;

                case (int)ETipoEmpresa.Equinova:
                    bo.TipoAutorizacion = (ETipoAutorizacionEquinova)Enum.Parse(typeof(ETipoAutorizacionEquinova), this.vista.TipoAutorizacion.ToString());
                    break;

                default:
                    bo.TipoAutorizacion = (ETipoAutorizacion)Enum.Parse(typeof(ETipoAutorizacion), this.vista.TipoAutorizacion.ToString());
                    break;
                }
            }

            return(bo);
        }
        public string ValidarCampos()
        {
            string s = "";

            if (this.vista.UnidadOperativaID == null)
            {
                s += "Unidad Operatia, ";
            }
            if (this.vista.SucursalID == null)
            {
                s += "Sucursal, ";
            }
            if (this.vista.TipoAutorizacion == null)
            {
                s += "Tipo de Autorización, ";
            }
            if (this.vista.EmpleadoID == null)
            {
                s += "Empleado, ";
            }
            if (this.vista.Email == null)
            {
                s += "Correo Electrónico, ";
            }
            if (this.vista.Telefono == null)
            {
                s += "Teléfono, ";
            }
            if (this.vista.SoloNotificacion == null)
            {
                s += "Notificación, ";
            }
            if (this.vista.Estatus == null)
            {
                s += "Estatus, ";
            }

            if (s.Trim().CompareTo("") != 0)
            {
                return("Los siguientes campos no pueden estar vacíos: \n" + s.Substring(0, s.Length - 2));
            }

            //Se verifica la existencia del autorizador en la BD
            AutorizadorBO bo = new AutorizadorBO();

            #region Obtener el tipo de Autorización
            Type TipoEnum = typeof(ETipoAutorizacion);
            TipoEnum            = bo.ObtenerETipoAutorizacion((ETipoEmpresa)this.vista.UnidadOperativaID);
            bo.TipoAutorizacion = (Enum)Enum.ToObject(TipoEnum, this.vista.TipoAutorizacion);
            #endregion
            bo.Sucursal = new SucursalBO {
                Id = this.vista.SucursalID, UnidadOperativa = new UnidadOperativaBO()
                {
                    Id = this.vista.UnidadOperativaID
                }
            };
            bo.Empleado = new EmpleadoBO {
                Id = this.vista.EmpleadoID
            };
            List <AutorizadorBO> lst = new AutorizadorBR().Consultar(this.dctx, bo);

            if (lst.Count > 0)
            {
                return("Ya se encuentra registrada la configuración de tipo de autorización, sucursal y empleado.");
            }

            return(null);
        }
        private void DatoAInterfazUsuario(object obj)
        {
            AutorizadorBO bo = (AutorizadorBO)obj;

            this.vista.AutorizadorID = bo.AutorizadorID;
        }
        protected void grdAutorizadores_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    AutorizadorBO autorizador = (AutorizadorBO)e.Row.DataItem;

                    Label labelSucursalNombre = e.Row.FindControl("lblSucursal") as Label;
                    if (labelSucursalNombre != null)
                    {
                        string sucursalNombre = string.Empty;
                        if (autorizador.Sucursal != null)
                        {
                            if (autorizador.Sucursal.Nombre != null)
                            {
                                sucursalNombre = autorizador.Sucursal.Nombre;
                            }
                        }
                        labelSucursalNombre.Text = sucursalNombre;
                    }
                    Label labelTipoAutorizacion = e.Row.FindControl("lblTipoAutorizacion") as Label;
                    if (labelTipoAutorizacion != null)
                    {
                        string tipoAutorizacion = string.Empty;
                        if (autorizador.TipoAutorizacion != null)
                        {
                            switch (this.UnidadOperativaID)
                            {
                            case (int)ETipoEmpresa.Generacion:
                            case (int)ETipoEmpresa.Equinova:
                            case (int)ETipoEmpresa.Construccion:
                                Type type = this.UnidadOperativaID == (int)ETipoEmpresa.Construccion ? typeof(ETipoAutorizacionConstruccion) :
                                            this.UnidadOperativaID == (int)ETipoEmpresa.Generacion ? typeof(ETipoAutorizacionGeneracion) :
                                            typeof(ETipoAutorizacionEquinova);
                                var memInfo = type.GetMember(type.GetEnumName(autorizador.TipoAutorizacion));
                                var display = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute;
                                if (display != null)
                                {
                                    tipoAutorizacion = display.Description.ToUpper();
                                }
                                break;

                            default:
                                tipoAutorizacion = Enum.GetName(typeof(ETipoAutorizacion), autorizador.TipoAutorizacion);
                                break;
                            }
                        }
                        labelTipoAutorizacion.Text = tipoAutorizacion.Replace("_", " ");
                    }
                    Label labelEmpleadoNombre = e.Row.FindControl("lblEmpleadoNombre") as Label;
                    if (labelEmpleadoNombre != null)
                    {
                        string empleadoNombre = string.Empty;
                        if (autorizador.Empleado != null)
                        {
                            if (autorizador.Empleado.NombreCompleto != null)
                            {
                                empleadoNombre = autorizador.Empleado.NombreCompleto;
                            }
                        }
                        labelEmpleadoNombre.Text = empleadoNombre;
                    }

                    Label labelEmpleadoEmail = e.Row.FindControl("lblEmpleadoEmail") as Label;
                    if (labelEmpleadoEmail != null)
                    {
                        string empleadoEmail = string.Empty;
                        if (autorizador.Empleado != null)
                        {
                            if (autorizador.Empleado.Email != null)
                            {
                                empleadoEmail = autorizador.Empleado.Email;
                            }
                        }
                        labelEmpleadoEmail.Text = empleadoEmail;
                    }

                    Label labelEmpleadoTelefono = e.Row.FindControl("lblEmpleadoTelefono") as Label;
                    if (labelEmpleadoTelefono != null)
                    {
                        string empleadoTelefono = string.Empty;
                        if (autorizador.Empleado != null)
                        {
                            if (autorizador.Empleado.Telefonos != null && autorizador.Empleado.Telefonos.Count > 0)
                            {
                                empleadoTelefono = autorizador.Empleado.Telefonos[0].Numero;
                            }
                        }
                        labelEmpleadoTelefono.Text = empleadoTelefono;
                    }
                }
            }
            catch (Exception ex)
            {
                MostrarMensaje("Inconsistencias al presentar la información", ETipoMensajeIU.ERROR, nombreClase + ".grdAutorizadores_RowDataBound: " + ex.Message);
            }
        }