Example #1
0
        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]);
                }
            }
        }
Example #2
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();
        }
Example #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}");
            }
        }