예제 #1
0
        /// <summary>
        /// Registrar Trabajador Suplente
        /// </summary>
        /// <param name="data">TrabajadorSuplente Response</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <TrabajadorSuplenteRequest> RegistrarTrabajadorSuplente(TrabajadorSuplenteRequest data)
        {
            ProcessResult <TrabajadorSuplenteRequest> resultado = new ProcessResult <TrabajadorSuplenteRequest>();
            TrabajadorSuplenteEntity entidad = new TrabajadorSuplenteEntity();

            try
            {
                var trabajadorSuplente = trabajadorSuplenteEntityRepository.GetById(data.CodigoTrabajador);

                #region SRA
                var trabajador = BuscarTrabajador(new TrabajadorRequest()
                {
                    CodigoTrabajador = data.CodigoTrabajador
                }).Result.FirstOrDefault();
                var Suplente = BuscarTrabajador(new TrabajadorRequest()
                {
                    CodigoTrabajador = data.CodigoSuplente
                }).Result.FirstOrDefault();

                SeguridadServiceClient seguridadService = new SeguridadServiceClient();

                if (data.Activo == true)
                {
                    //Buscamos al usuario original en el SRA
                    var usuarioSRAOriginal = seguridadService.GetUserByLoginAD(trabajador.CodigoIdentificacion, trabajador.DominioCorto);

                    if (Suplente != null && usuarioSRAOriginal != null)
                    {
                        //Verficamos si el usuario suplente esta registrado en el SRA
                        var usuarioSRASuplente = seguridadService.GetUserByLoginAD(Suplente.CodigoIdentificacion, Suplente.DominioCorto);

                        if (usuarioSRASuplente == null)
                        {
                            usuarioSRASuplente = seguridadService.InsertUserAD(Suplente.CodigoIdentificacion, Suplente.DominioCorto, data.UsuarioSession, data.Terminal);
                        }

                        //Validar que los perfiles del usuario original los tenga el usuario suplente
                        var perfilesOriginal  = usuarioSRAOriginal.PERFILES.Where(p => p.S_TOKEN == ConfigurationManager.AppSettings["CLIENT_SITE_TOKEN"].ToString()).ToList();
                        var perfilesSuplente  = usuarioSRASuplente.PERFILES.Where(p => p.S_TOKEN == ConfigurationManager.AppSettings["CLIENT_SITE_TOKEN"].ToString()).ToList();
                        var perfilesAgregados = string.Empty;

                        foreach (var item in perfilesOriginal)
                        {
                            if (perfilesSuplente.Where(p => p.S_NAME_PROFILE == item.S_NAME_PROFILE).FirstOrDefault() == null)
                            {
                                var obj = seguridadService.InsertUserProfileAsDesactivate(usuarioSRASuplente.ID_USER, item.N_ID_PROFILE, data.UsuarioSession, data.Terminal);
                                perfilesAgregados += (obj.N_ID_USER_PROFILE > 0 ? obj.N_ID_USER_PROFILE + "," : "");
                            }
                        }

                        //Actualizar el campo perfiles a la tabla Trabajador suplente
                        if (perfilesAgregados != string.Empty)
                        {
                            data.PerfilesAgregados = perfilesAgregados.TrimEnd(',');
                        }
                    }
                }
                else
                {
                    //Consultamos si esta registrado la combinacion trabajadorSuplente para este usuario logueado
                    //var trabajadorSuplente = BuscarTrabajadorSuplente(new TrabajadorRequest() { CodigoTrabajador = new Guid(trabajador.CodigoTrabajador) }).Result.FirstOrDefault();
                    if (trabajadorSuplente != null && !string.IsNullOrEmpty(trabajadorSuplente.PerfilesAgregados))
                    {
                        string[] perfiles = trabajadorSuplente.PerfilesAgregados.Split(',');
                        foreach (var item in perfiles)
                        {
                            seguridadService.DeleteUserProfile(Convert.ToInt32(item), data.UsuarioSession, data.Terminal);
                        }
                    }
                }
                #endregion

                //Obtenemos si un registro tiene el trabajador

                entidad = TrabajadorAdapter.ObtenerTrabajadorSuplenteEntity(data);

                #region antiguo
                //if (trabajadorSuplente == null)
                //{
                //    trabajadorSuplenteEntityRepository.Insertar(entidad);
                //}
                //else
                //{
                //    var entidadEditar = trabajadorSuplenteEntityRepository.GetById(entidad.CodigoTrabajador);

                //    entidadEditar.CodigoSuplente = entidad.CodigoSuplente; ;
                //    entidadEditar.FechaInicio    = entidad.FechaInicio != null ? entidad.FechaInicio : DateTime.Now;
                //    entidadEditar.FechaFin       = entidad.FechaFin != null ? entidad.FechaFin : DateTime.Now;
                //    entidadEditar.FechaCreacion  = DateTime.Now;
                //    entidadEditar.Ejecutado      = (entidad.Activo == false ? false : entidadEditar.Ejecutado);
                //    entidadEditar.Activo         = entidad.Activo;

                //    if (entidad.Activo == false)
                //    {
                //        entidadEditar.PerfilesAgregados = null;
                //    }
                //    else
                //    {
                //        entidadEditar.PerfilesAgregados = (entidad.PerfilesAgregados != null ? entidad.PerfilesAgregados : entidadEditar.PerfilesAgregados);
                //    }

                //    trabajadorSuplenteEntityRepository.Editar(entidadEditar);
                //}

                //trabajadorSuplenteEntityRepository.GuardarCambios();
                //resultado.Result = data;
                #endregion

                //Se cambia por procedure para evitar error en el servidor de stracon(peru)

                #region Nuevo

                if (trabajadorSuplente == null)
                {
                    entidad.UsuarioCreacion   = data.UsuarioSession;
                    entidad.TerminalCreacion  = data.Terminal;
                    entidad.PerfilesAgregados = data.PerfilesAgregados;
                    entidad.Ejecutado         = data.Ejecutado;

                    var resultInsertar = trabajadorLogicRepository.RegistrarSuplenteTrabajador(entidad);

                    if (resultInsertar == 0)
                    {
                        resultado.IsSuccess = false;
                    }
                    else
                    {
                        resultado.IsSuccess = true;
                    }
                }
                else
                {
                    if (entidad.Activo == false)
                    {
                        entidad.PerfilesAgregados = null;
                    }

                    entidad.UsuarioModificacion  = data.UsuarioSession;
                    entidad.TerminalModificacion = data.Terminal;
                    entidad.PerfilesAgregados    = data.PerfilesAgregados;
                    entidad.Ejecutado            = data.Ejecutado;

                    var resultActualizar = trabajadorLogicRepository.ActualizarSuplenteTrabajador(entidad);

                    if (resultActualizar == 0)
                    {
                        resultado.IsSuccess = false;
                    }
                    else
                    {
                        resultado.IsSuccess = true;
                    }
                }

                resultado.Result = data;
                #endregion
            }
            catch (Exception e)
            {
                LogEN.grabarLogError(e, entidad.FechaInicio.ToString());
            }
            return(resultado);
        }
예제 #2
0
        /// <summary>
        /// Obtiene los permisos asignados al usuario segun sistema
        /// </summary>
        /// <param name="usuario">Usuario</param>
        /// <param name="codigoSistema">Código del Sistema</param>
        /// <returns>Cuenta de Usuario</returns>
        public JsonResult ObtenerPermisos(string perfiles)
        {
            ProcessResult <string> resultado = new ProcessResult <string>();

            var refrescar     = false;
            var usuario       = HttpGyMSessionContext.CurrentAccount();
            var codigoSistema = ConfigurationManager.AppSettings["CLIENT_SITE_TOKEN"];
            SeguridadServiceClient seguridadService = new SeguridadServiceClient();
            var lsSystem = seguridadService.List_SystemSRA_x_Token(codigoSistema, usuario.Codigo);

            if (lsSystem.Length > 0)
            {
                var sistema = lsSystem.FirstOrDefault();
                var perfile = seguridadService.GetUserAccessService(usuario.Alias, 0, sistema.N_ID_SYSTEM);
                usuario.Perfil           = perfile.S_NAME_PROFILE;
                usuario.CodigoSistemaSra = sistema.N_ID_SYSTEM;

                usuario.Modulos = new List <Modulo>();
                var modulo         = new Modulo();
                var vistasPermisos = new List <Vista>();
                modulo.Vistas = vistasPermisos;

                usuario.Modulos.Add(modulo);

                foreach (var rol in perfile.ROLES)
                {
                    foreach (var permiso in rol.PERMISOS)
                    {
                        var  listaAgrupadoPorOpcion = rol.PERMISOS.Where(x => x.N_ID_OPTION == permiso.E_OptionM.N_ID_OPTION).ToList();
                        bool lectura      = false;
                        bool escritura    = false;
                        bool controlTotal = false;

                        foreach (var item in listaAgrupadoPorOpcion)
                        {
                            switch (item.N_ID_ACTION)
                            {
                            case 1:
                                lectura = true;
                                break;

                            case 2:
                                escritura = true;
                                break;

                            case 3:
                                controlTotal = true;
                                break;
                            }
                        }

                        var controles = new List <Control>();
                        controles.Add(new Control()
                        {
                            Lectura      = lectura,
                            Escritura    = escritura,
                            ControlTotal = controlTotal
                        });

                        vistasPermisos.Add(new Vista()
                        {
                            Nombre    = permiso.S_NAME,
                            URL       = permiso.E_OptionM.S_URL_OPTION,
                            Controles = controles
                        });
                    }
                }
            }

            if (usuario != null)
            {
                HttpGyMSessionContext.SetAccount(usuario);
                CustomHtmlHelper.AplicarMenu(usuario);
            }

            //Obtenemos los perfiles
            var usuarioSRA = seguridadService.GetUserByLoginAD(usuario.Alias, usuario.Dominio);

            if (usuarioSRA != null)
            {
                var perfilesOriginal = usuarioSRA.PERFILES.Where(p => p.S_TOKEN == ConfigurationManager.AppSettings["CLIENT_SITE_TOKEN"].ToString()).ToList();

                if (!string.IsNullOrEmpty(perfiles))
                {
                    string[] perfilesArray = perfiles.Split(',');

                    foreach (var item in perfilesArray)
                    {
                        if (perfilesOriginal.Where(x => x.N_ID_PROFILE.ToString() == item).FirstOrDefault() != null)
                        {
                            refrescar = true;
                        }
                    }

                    if (refrescar == false)
                    {
                        foreach (var item in perfilesArray)
                        {
                            if (item.Trim() == usuarioSRA.ID_USER.ToString())
                            {
                                refrescar = true;
                            }
                        }
                    }
                }
            }

            resultado.IsSuccess = true;
            resultado.Result    = refrescar.ToString();
            return(Json(resultado));
        }