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