public override async Task HandleSaleDataAsync(SaleDataObtainmentResult dataObtainmentResult) { SaleManagementResult result; if (dataObtainmentResult.Success && dataObtainmentResult.SaleData.Sales.Count > 0) { result = await salesDataManager.AddOrUpdateSaleDataAsync(dataObtainmentResult.SaleData).ConfigureAwait(false); if (result.Succeeded) { await salesDataManager.ErrorManager.RemoveErrorAsync(new SaleManagementResult() { FileName = dataObtainmentResult.SaleData.SourceFileName }).ConfigureAwait(false); return; } } else { result = new SaleManagementResult() { FileName = dataObtainmentResult.SaleData.SourceFileName, Succeeded = false, ErrorMessage = dataObtainmentResult.ErrorMessage }; } await salesDataManager.ErrorManager.AddErrorAsync(result).ConfigureAwait(false); }
public async Task <SaleDataObtainmentResult> GetSaleDataAsync() { ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; Uri uri = new Uri(fileEntry.Url); string fileName = Path.GetFileName(uri.LocalPath); SaleDataDto saleData = new SaleDataDto() { SourceFileName = fileName, FileDate = fileEntry.CommitDate }; SaleDataObtainmentResult result = new SaleDataObtainmentResult() { SaleData = saleData, Success = false }; Debug.WriteLine($"[GetSaleDataAsync]: {fileName}"); using (HttpClient httpClient = new HttpClient()) { try { HttpWebRequestElement webRequestElement = new HttpWebRequestElement(); webRequestElement.UseUnsafeHeaderParsing = true; httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "NAlex2004"); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token); string responseBody = await httpClient.GetStringAsync(fileEntry.Url).ConfigureAwait(false); IList <SaleDto> salesFromFile = await GetSalesFromResponseJson(responseBody).ConfigureAwait(false); // If we'd like to take any correct data from file, skipping incorrect //salesFromFile = salesFromFile.Where(s => s != null && s.HasValidData()).Select(s => s).ToList(); // Let's assume, all data must be correct if (salesFromFile == null || salesFromFile.Count == 0 || salesFromFile.Any(s => s == null || !s.HasValidData())) { result.ErrorMessage = $"File '{fileName}' has no suitable data."; return(result); } Debug.WriteLine($"[GetSaleDataAsync]: CORRECT {fileName}"); saleData.Sales = salesFromFile; result.Success = true; return(result); } catch (Exception e) { Debug.WriteLine($"[GetSaleDataAsync]: ERROR: {e.Message}"); result.ErrorMessage = e.Message; } return(result); } }
public abstract Task HandleSaleDataAsync(SaleDataObtainmentResult dataObtainmentResult);