private async Task ClassificateContractor(Contractor documentContractor, ApiResponseContractor response) { if (response.ApiStatus == ApiStatus.Valid) { await UpdateContractor(documentContractor, response); Console.WriteLine($"Kontrahent poprawny: {documentContractor.Name} Nip : {documentContractor.VatId}"); } else if (response.ApiStatus == ApiStatus.NotValid) { documentContractor.ContractorStatus = ContractorStatus.Invalid; response.Contractors.Add(documentContractor); await UpdateContractor(documentContractor, response); Console.WriteLine($"Kontrahent niepoprawny: {documentContractor.Name} Nip : {documentContractor.VatId}"); } else if (response.ApiStatus == ApiStatus.NotSupportedByApi) { documentContractor.ContractorStatus = ContractorStatus.Valid; response.Contractors.Add(documentContractor); await UpdateContractor(documentContractor, response); Console.WriteLine($"Nazwa: {documentContractor.Name}\tNip:{documentContractor.VatId}"); } else if (response.ApiStatus == ApiStatus.Error) { documentContractor.ContractorStatus = ContractorStatus.NotChecked; response.Contractors.Add(documentContractor); await UpdateContractor(documentContractor, response); Console.WriteLine($"Błąd sprawdzania kontrahenta: {documentContractor.Name} Nip : {documentContractor.VatId}"); } }
private async Task UpdateContractor(Contractor contractor, ApiResponseContractor response) { for (int i = 0; i < response.Contractors.Count; i++) { if (i == 0) { var contractorToUpdate = await _dbContext.Contractors.FirstOrDefaultAsync(c => c.ContractorId == contractor.ContractorId && c.SourceId == contractor.SourceId).ConfigureAwait(false); contractorToUpdate = CopyContractorData(contractorToUpdate, response.Contractors[i]); contractorToUpdate.GusContractorEntriesCount = 1; try { _dbContext.Update(contractorToUpdate); await _dbContext.SaveChangesAsync(); } catch (DbUpdateException ex) { _logger.LogError(ex.Message); } catch (Exception ex) { _logger.LogError(ex.Message); } } else { response.Contractors[i].SourceId = contractor.SourceId; response.Contractors[i].GusContractorEntriesCount = i + 1; response.Contractors[i].ContractorSourceId = contractor.ContractorSourceId; response.Contractors[i].Firm = contractor.Firm; await AddContractor(response.Contractors[i]); } } }
public async Task CheckContractors(int taskTicketId) { await FvpWebAppUtils.ChangeTicketStatus(_dbContext, taskTicketId, TicketStatus.Pending).ConfigureAwait(false); try { var token = await _apiService.ApiLogin().ConfigureAwait(false); var ueCountries = (await _dbContext.Countries.ToListAsync().ConfigureAwait(false)).Where(u => u.UE).Select(c => c.Symbol).ToList(); var allCountries = (await _apiService.GetCountriesAsync(token)).Select(c => c.Symbol); ContractorService contractorService = new ContractorService(_dbContext); var documentsContractors = await _dbContext.Contractors.Where(s => s.ContractorStatus == ContractorStatus.NotChecked).ToListAsync().ConfigureAwait(false); _logger.LogInformation($"Kontrahenci do sprawdzenia: {documentsContractors.Count}"); foreach (var documentContractor in documentsContractors) { if (documentContractor.CountryCode == "PL" || documentContractor.Firm == Firm.FirmaPolska) { var response = await CheckContractorByGusApi(FvpWebAppUtils.GetDigitsFromString(documentContractor.VatId)); await ClassificateContractor(documentContractor, response); } else if (ueCountries.Contains(documentContractor.CountryCode)) { var response = await CheckContractorByViesApi(documentContractor); await ClassificateContractor(documentContractor, response); } else if (allCountries.Contains(documentContractor.CountryCode)) { var response = new ApiResponseContractor { ApiStatus = ApiStatus.NotSupportedByApi, Contractors = new List <Contractor>() }; await ClassificateContractor(documentContractor, response); } else { var response = new ApiResponseContractor { ApiStatus = ApiStatus.NotValid, Contractors = new List <Contractor>() }; await ClassificateContractor(documentContractor, response); } } await UpdateStatusAndContractorOnDocuments(); await FvpWebAppUtils.ChangeTicketStatus(_dbContext, taskTicketId, TicketStatus.Done).ConfigureAwait(false); } catch (Exception ex) { await FvpWebAppUtils.ChangeTicketStatus(_dbContext, taskTicketId, TicketStatus.Failed).ConfigureAwait(false); _logger.LogError(ex.Message); } }