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 TransferContractors(List <Document> documents) { ContractorService contractorService = new ContractorService(_dbContext); var documentsContractors = AggregateContractorsFromDocuments(documents); List <Contractor> newContractors = new List <Contractor>(); foreach (var documentContractor in documentsContractors) { var contractorServiceResponse = contractorService.ContractorExist((int)documentContractor.SourceId, documentContractor.ContractorSourceId); var isAddedToNewContractors = newContractors.FirstOrDefault(c => c.SourceId == documentContractor.SourceId && c.ContractorSourceId == documentContractor.ContractorSourceId); if (!contractorServiceResponse.Exist && isAddedToNewContractors == null) { newContractors.Add(documentContractor); } } try { await _dbContext.AddRangeAsync(newContractors).ConfigureAwait(true); await _dbContext.SaveChangesAsync().ConfigureAwait(true); _logger.LogInformation($"Dodano : {newContractors.Count} nowych kontrahentów."); } catch (Exception ex) { _dbContext.DetachAllEntities(); _logger.LogError(ex.Message); } }
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}"); } }