Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
 public abstract Task HandleSaleDataAsync(SaleDataObtainmentResult dataObtainmentResult);