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 static async Task ChangeTicketStatus(WorkerAppDbContext dbContext, int ticketId, TicketStatus ticketStatus) { dbContext.DetachAllEntities(); var ticket = await dbContext.TaskTickets.FirstOrDefaultAsync(f => f.TaskTicketId == ticketId); ticket.TicketStatus = ticketStatus; ticket.StatusChangedAt = DateTime.Now; dbContext.Update(ticket); await dbContext.SaveChangesAsync(); }
public async Task InsertDocumentsToTarget(TaskTicket taskTicket, Target target) { await FvpWebAppUtils.ChangeTicketStatus(_dbContext, taskTicket.TaskTicketId, TicketStatus.Pending).ConfigureAwait(false); C21DocumentService c21DocumentService = new C21DocumentService(GetDbSettings(target), _procOutput); //List<C21DocumentAggregate> c21DocumentAggregates = new List<C21DocumentAggregate>(); var documentsToSend = await _dbContext.Documents .Where(d => (d.DocumentStatus == DocumentStatus.Valid || d.DocumentStatus == DocumentStatus.ManyContractors || d.DocumentStatus == DocumentStatus.Accepted) && d.DocumentDate.Month == taskTicket.DateFrom.Month && d.DocumentDate.Year == taskTicket.DateFrom.Year && d.SourceId == taskTicket.SourceId).ToListAsync(); if (documentsToSend != null) { documentsToSend = documentsToSend.OrderBy(d => d.DocumentDate).ToList(); var allDocumentVats = await _dbContext.DocumentVats.Where(v => documentsToSend.Select(i => (int?)i.DocumentId).Contains(v.DocumentId)).ToListAsync(); var contractors = await _dbContext.Contractors.Where(c => c.SourceId == taskTicket.SourceId).ToListAsync(); var targetDocumentSettings = await _dbContext.TargetDocumentsSettings.FirstOrDefaultAsync(t => t.SourceId == taskTicket.SourceId); var accountingRecords = await _dbContext.AccountingRecords.Where(a => a.SourceId == taskTicket.SourceId).ToListAsync(); var source = await _dbContext.Sources.FirstOrDefaultAsync(s => s.SourceId == taskTicket.SourceId); var vatRegisters = await _dbContext.VatRegisters.Where(v => v.TargetDocumentSettingsId == targetDocumentSettings.TargetDocumentSettingsId).ToListAsync(); Console.WriteLine($"Source: {source.Description} Start prep.: {DateTime.Now}"); int docCounter = 0; int insertCounter = 0; foreach (var document in documentsToSend) { var documentAggregate = await PrepareDocumentAggregate(accountingRecords, targetDocumentSettings, contractors, allDocumentVats, vatRegisters, c21DocumentService, document, source); if (documentAggregate.IsPrepared) { //c21DocumentAggregates.Add(documentAggregate); try { await c21DocumentService.AddDocumentAggregate(documentAggregate).ConfigureAwait(false); document.DocumentStatus = DocumentStatus.SentToC2FK; _dbContext.Update(document); await _dbContext.SaveChangesAsync(); insertCounter++; } catch (Exception ex) { _logger.LogError(ex.Message); } } else { foreach (var msg in documentAggregate.Messages) { _logger.LogError($"{msg.Key}: {msg.Value}"); } } docCounter++; if (insertCounter >= 300 || docCounter == documentsToSend.Count) { c21DocumentService.ProceedDocumentsAsync(docCounter, taskTicket.TaskTicketId); Console.WriteLine($"Added documents: {insertCounter} End: {DateTime.Now}"); insertCounter = 0; } } Console.WriteLine($"Source: {source.Description} End prep.: {DateTime.Now} Documents: {docCounter}"); } }