Example #1
0
        /// <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;
            }
        }
Example #3
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);
        }