/// <summary> /// Obtiene una entidad de tipo trabajador /// </summary> /// <param name="data">Data</param> /// <returns>Entity de Trabajador</returns> public static TrabajadorSuplenteEntity ObtenerTrabajadorSuplenteEntity(TrabajadorSuplenteRequest data) { var trabajadorSuplenteEntity = new TrabajadorSuplenteEntity(); try { if (data.CodigoSuplente != null) { trabajadorSuplenteEntity.CodigoTrabajador = data.CodigoTrabajador; } else { trabajadorSuplenteEntity.CodigoTrabajador = Guid.NewGuid(); } trabajadorSuplenteEntity.CodigoSuplente = data.CodigoSuplente; trabajadorSuplenteEntity.FechaInicio = Convert.ToDateTime(data.FechaInicio); trabajadorSuplenteEntity.FechaFin = Convert.ToDateTime(data.FechaFin); trabajadorSuplenteEntity.Activo = data.Activo; trabajadorSuplenteEntity.Ejecutado = data.Ejecutado; trabajadorSuplenteEntity.EstadoRegistro = data.EstadoRegistro; trabajadorSuplenteEntity.PerfilesAgregados = data.PerfilesAgregados; } catch (Exception ex) { //throw ex; LogEN.grabarLogError(ex, data.FechaInicio + data.FechaFin); } return(trabajadorSuplenteEntity); }
/// <summary> /// Registrar Trabajador Suplente /// </summary> /// <param name="data">Trabajador Entity</param> /// <returns>Identificador con resultado</returns> public int RegistrarSuplenteTrabajador(TrabajadorSuplenteEntity data) { try { SqlParameter[] parametros = new SqlParameter[] { new SqlParameter("CODIGO_TRABAJADOR", SqlDbType.UniqueIdentifier) { Value = (object)data.CodigoTrabajador ?? DBNull.Value }, new SqlParameter("CODIGO_SUPLENTE", SqlDbType.UniqueIdentifier) { Value = (object)data.CodigoSuplente ?? DBNull.Value }, new SqlParameter("FECHA_INICIO", SqlDbType.DateTime) { Value = (object)data.FechaInicio ?? DBNull.Value }, new SqlParameter("FECHA_FIN", SqlDbType.DateTime) { Value = (object)data.FechaFin ?? DBNull.Value }, new SqlParameter("ACTIVO", SqlDbType.Bit) { Value = (object)data.Activo ?? DBNull.Value }, new SqlParameter("EJECUTADO", SqlDbType.Bit) { Value = (object)data.Ejecutado ?? DBNull.Value }, new SqlParameter("PERFILES_AGREGADOS", SqlDbType.VarChar) { Value = (object)data.PerfilesAgregados ?? DBNull.Value }, new SqlParameter("USUARIO_CREACION", SqlDbType.NVarChar) { Value = (object)data.UsuarioCreacion ?? DBNull.Value }, new SqlParameter("TERMINAL_CREACION", SqlDbType.NVarChar) { Value = (object)data.TerminalCreacion ?? DBNull.Value } }; var resultado = this.dataBaseProvider.ExecuteStoreProcedure <int>("[GRL].[USP_TRABAJADOR_SUPLENTE_INS]", parametros).FirstOrDefault(); return(resultado); } catch (Exception ex) { throw ex; } }
/// <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); }