private static long?InternalGetMoodleCursoId ( string cursoDescricao, Modalidade modalidade, GetCategoryByNameClient client = null, HttpClient httpClient = null ) { long?moodleCategoryId = MoodleFromToCache.GetCachedMoodleCategory(modalidade.IdModalidade, cursoDescricao); if (moodleCategoryId.HasValue) { return(moodleCategoryId.Value); } GetCategoryByNameClient getClient = client; if (getClient == null) { getClient = new GetCategoryByNameClient(); } if (httpClient != null) { getClient.AddHttpClient(httpClient); } getClient.AddBaseUrl(modalidade.MoodleUrl) .AddServiceUrl(modalidade.MoodleServiceUrl) .AddToken(modalidade.MoodleGetInfoServiceToken); GetByNameRequest request = new GetByNameRequest() { Name = cursoDescricao }; Task <CategoryResponse> task = getClient.Post(request); task.Wait(); CategoryResponse response = task.Result; if (response?.Id > 0) { MoodleFromToCache.AddCategory(modalidade.IdModalidade, cursoDescricao, response.Id); } return(response?.Id); }
public override SendResult <Curso, CategoryResponse> SendAll() { SendResult <Curso, CategoryResponse> result = new SendResult <Curso, CategoryResponse>(); IEnumerable <Curso> data = GetData(""); if (data == null) { return(result); } foreach (var modalidade in Modalidades) { var cursos = data.Where(x => x.IdModalidade == modalidade.IdModalidade).ToArray(); this.AddMoodleBaseUrl(modalidade.MoodleUrl) .AddMoodleToken(modalidade.MoodleToken) .AddMoodleGetInfoServiceToken(modalidade.MoodleGetInfoServiceToken) .AddMoodleServiceUrl(modalidade.MoodleServiceUrl); this.AddMoodleCategoryParent(modalidade.MoodleCategoryParent) .AddMoodleDescriptionFormat(modalidade.MoodleDescriptionFormat); foreach (var item in cursos) { try { long?cachedMoodleId = MoodleFromToCache.GetCachedMoodleCategory(modalidade.IdModalidade, item.CursoDescricao); if (cachedMoodleId.HasValue) { LastUrl = "cached_value"; var reason = new NotImportedReason <Curso>() { Data = item, Url = LastUrl, Reason = $"Curso [{item.CursoDescricao}] já está adicionado ao MOODLE ({LastUrl})." }; result.NotImported.Enqueue(reason); Log(reason.Reason); continue; } CategoryResponse exists = VerifyIfExists(item.CursoDescricao); if (exists?.Id > 0) { MoodleFromToCache.AddCategory(modalidade.IdModalidade, item.CursoDescricao, exists.Id); var reason = new NotImportedReason <Curso>() { Data = item, Url = LastUrl, Reason = $"Curso [{item.CursoDescricao}] já está adicionado ao MOODLE ({LastUrl})." }; result.NotImported.Enqueue(reason); Log(reason.Reason); continue; } CategoryResponse response = SendItem(item); ImportedResult <Curso, CategoryResponse> importedResult = new ImportedResult <Curso, CategoryResponse>() { Date = DateTime.Now, Data = item, Url = LastUrl, Result = response }; result.ImportedSuccessfully.Enqueue(importedResult); Log($"Curso [{item.CursoDescricao}] adicionado"); } catch (Exception ex) { var reason = new NotImportedReason <Curso>() { Data = item, Url = LastUrl, Exception = ex }; result.NotImported.Enqueue(reason); Log(reason.Reason); } } } return(result); }