Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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}");
            }
        }