/// <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); }
/// <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)); }