///<summary>
        ///Método para la sincronización de repositorios
        ///</summary>
        ///<param name="idRepositoryGuid">identificador del repositorio a sincronizar</param>
        ///<param name="fecha">Fecha desde la que se quiere sincronizar</param>
        /// <param name="set">tipo del objeto, usado para filtrar por agrupaciones
        /// <param name="codigo_objeto">codigo del objeto a sincronizar, es necesario pasar el parametro set si se quiere pasar este parámetro</param>
        public string PublishRepositories(Guid idRepositoryGuid, DateTime?fecha = null, string pSet = null, string codigoObjeto = null)
        {
            string idRepository = idRepositoryGuid.ToString();

            try
            {
                object objeto = new
                {
                    repository_identifier = idRepositoryGuid,
                    codigo_objeto         = codigoObjeto,
                    fecha_from            = fecha,
                    set = pSet
                };
                string result = _serviceApi.CallPostApi($"sync/execute", objeto);///{idRepository}
                result = JsonConvert.DeserializeObject <string>(result);
                return(result);
            }
            catch (Exception ex)
            {
                string timeStamp = CreateTimeStamp();
                CreateLoggin(timeStamp, idRepository);
                Log.Error($"{ex.Message}\n{ex.StackTrace}\n");
                throw new Exception(ex.Message);
                //return ex.Message;
            }
        }
        ///<summary>
        ///Método para la sincronización de repositorios
        ///</summary>
        ///<param name="idRepositoryGuid">identificador del repositorio a sincronizar</param>
        /// <param name="pSet">tipo del objeto, usado para filtrar por agrupaciones</param>
        /// <param name="codigoObjeto">codigo del objeto a sincronizar, es necesario pasar el parametro set si se quiere pasar este parámetro</param>
        public string PublishRepositories(Guid idRepositoryGuid, PerformContext context, string pSet = null, string codigoObjeto = null)
        {
            string           idRepository     = idRepositoryGuid.ToString();
            RepositoryConfig repositoryConfig = _context.RepositoryConfig.Include(item => item.RepositoryConfigSet).FirstOrDefault(x => x.RepositoryConfigID == idRepositoryGuid);
            //Nos quedariamos con la fecha de la fila que tenga en el 'set' lo que viene en el pSet, si viene nulo, habría que coger la fila que tenga '-' en caso de que exista
            DateTime?fecha  = null;
            string   setAux = "-";

            if (!string.IsNullOrEmpty(pSet))
            {
                setAux = pSet;
            }
            if (repositoryConfig.RepositoryConfigSet.FirstOrDefault(x => x.Set == setAux) != null)
            {
                fecha = repositoryConfig.RepositoryConfigSet.FirstOrDefault(x => x.Set == setAux).LastUpdate;
            }

            string   idJob    = context.BackgroundJob.Id;
            DateTime fechaJob = context.BackgroundJob.CreatedAt;
            var      discover = _context.ProcessDiscoverStateJob.FirstOrDefault(item => item.JobId.Equals(idJob));

            if (discover == null)
            {
                ProcessDiscoverStateJob discoveryState = new ProcessDiscoverStateJob()
                {
                    Id    = Guid.NewGuid(),
                    JobId = idJob,
                    State = "Pending"
                };
                _context.ProcessDiscoverStateJob.Add(discoveryState);
                _context.SaveChanges();
            }
            try
            {
                object objeto = new
                {
                    repository_identifier = idRepositoryGuid,
                    codigo_objeto         = codigoObjeto,
                    fecha_from            = fecha,
                    set              = pSet,
                    job_id           = idJob,
                    job_created_date = fechaJob
                };
                string result = _serviceApi.CallPostApi($"sync/execute", objeto, _token);///{idRepository}
                result = JsonConvert.DeserializeObject <string>(result);

                #region Actualizamos ProcessDiscoverStateJob
                string state;
                //Actualizamos a error si existen items en estado error o con problemas de desambiguación
                if (_context.DiscoverItem.Any(x => x.JobID == idJob && (x.Status == DiscoverItem.DiscoverItemStatus.Error.ToString() || x.Status == DiscoverItem.DiscoverItemStatus.ProcessedDissambiguationProblem.ToString())))
                {
                    state = "Error";
                }
                else if (_context.DiscoverItem.Any(x => x.JobID == idJob && (x.Status == DiscoverItem.DiscoverItemStatus.Pending.ToString())))
                {
                    //Actualizamos a 'Pending' si aún existen items pendientes
                    state = "Pending";
                }
                else
                {
                    //Actualizamos a Success si no existen items en estado error ni con problemas de desambiguación y no hay ninguno pendiente
                    state = "Success";
                }
                ProcessDiscoverStateJob processDiscoverStateJob = _context.ProcessDiscoverStateJob.FirstOrDefault(item => item.JobId.Equals(idJob));
                if (processDiscoverStateJob != null)
                {
                    processDiscoverStateJob.State = state;
                }
                else
                {
                    processDiscoverStateJob = new ProcessDiscoverStateJob()
                    {
                        State = state, JobId = idJob
                    };
                    _context.ProcessDiscoverStateJob.Add(processDiscoverStateJob);
                }
                _context.SaveChanges();
                #endregion


                return(result);
            }
            catch (Exception ex)
            {
                string timeStamp = CreateTimeStamp();
                CreateLoggin(timeStamp, idRepository);
                Log.Error($"{ex.Message}\n{ex.StackTrace}\n");
                throw new Exception(ex.Message);
                //return ex.Message;
            }
        }