Ejemplo n.º 1
0
        public async Task <IActionResult> UpdateSource([FromBody] SourceAggregate sourceAggregate)
        {
            if (sourceAggregate != null)
            {
                try
                {
                    if (sourceAggregate.Source.SourceId == 0)
                    {
                        //add new source
                        return(await Task.FromResult(Ok(new { Status = true, Message = "Dodano nowe żródło danych!" })));
                    }
                    else
                    {
                        //update source
                        SourceService sourceService = new SourceService(_context);
                        var           message       = await sourceService.UpdateSource(sourceAggregate);

                        if (message.IsError)
                        {
                            throw new Exception(message.MessageText);
                        }
                        return(await Task.FromResult(Ok(new { Status = true, Message = "Zaktualizowano dane!" })));
                    }
                }
                catch (Exception ex)
                {
                    return(await Task.FromResult(BadRequest(new { Status = true, Message = ex.InnerException != null ? ex.InnerException.Message : ex.Message })));
                }
            }
            else
            {
                return(await Task.FromResult(BadRequest(new { Status = true, Message = "Niepoprawne dane!" })));
            }
        }
Ejemplo n.º 2
0
        public async Task <WebAppMessage> UpdateSource(SourceAggregate sourceAggregate)
        {
            var message = new WebAppMessage {
                IsError = false, MessageText = ""
            };

            try
            {
                using (var dbContextTransaction = await _context.Database.BeginTransactionAsync())
                {
                    var source = await _context.Sources.FirstOrDefaultAsync(s => s.SourceId == sourceAggregate.Source.SourceId);

                    if (source == null)
                    {
                        throw new Exception("Nie znaleziono danych do aktualizacji");
                    }
                    var accountingRecords = await _context.AccountingRecords.Where(a => a.SourceId == sourceAggregate.Source.SourceId).ToListAsync();

                    if (accountingRecords != null)
                    {
                        accountingRecords.Clear();
                        await _context.SaveChangesAsync();
                    }

                    source.TargetId          = sourceAggregate.Source.TargetId;
                    source.Description       = sourceAggregate.Source.Description;
                    source.Code              = sourceAggregate.Source.Code;
                    source.Type              = sourceAggregate.Source.Type;
                    source.Address           = sourceAggregate.Source.Address;
                    source.DbName            = sourceAggregate.Source.DbName;
                    source.Username          = sourceAggregate.Source.Username;
                    source.Password          = sourceAggregate.Source.Password;
                    source.AccountingRecords = sourceAggregate.Source.AccountingRecords;
                    await _context.SaveChangesAsync();

                    var targetDocumentSettings = await _context.TargetDocumentsSettings.FirstOrDefaultAsync(t => t.SourceId == source.SourceId);

                    if (targetDocumentSettings == null)
                    {
                        targetDocumentSettings = new TargetDocumentSettings
                        {
                            SourceId         = source.SourceId,
                            DocumentShortcut = sourceAggregate.TargetDocumentSettings.DocumentShortcut,
                            VatRegisterId    = sourceAggregate.TargetDocumentSettings.VatRegisterId,
                            VatRegisters     = (sourceAggregate.TargetDocumentSettings.VatRegisters != null && sourceAggregate.TargetDocumentSettings.VatRegisters.Count > 0) ? sourceAggregate.TargetDocumentSettings.VatRegisters : null
                        };
                        await _context.AddAsync(targetDocumentSettings);

                        await _context.SaveChangesAsync();
                    }

                    var vatRegisters = await _context.VatRegisters.Where(v => v.TargetDocumentSettingsId == targetDocumentSettings.TargetDocumentSettingsId).ToListAsync();

                    if (vatRegisters != null &&
                        sourceAggregate.TargetDocumentSettings.VatRegisters != null &&
                        sourceAggregate.TargetDocumentSettings.VatRegisters.Count > 0)
                    {
                        vatRegisters.Clear();
                        await _context.SaveChangesAsync();
                    }

                    targetDocumentSettings.DocumentShortcut = sourceAggregate.TargetDocumentSettings.DocumentShortcut;
                    targetDocumentSettings.VatRegisterId    = sourceAggregate.TargetDocumentSettings.VatRegisterId;
                    if (sourceAggregate.TargetDocumentSettings.VatRegisters != null && sourceAggregate.TargetDocumentSettings.VatRegisters.Count > 0)
                    {
                        targetDocumentSettings.VatRegisters = sourceAggregate.TargetDocumentSettings.VatRegisters;
                    }
                    await _context.SaveChangesAsync();

                    await dbContextTransaction.CommitAsync();
                }
            }
            catch (Exception ex)
            {
                message.IsError     = true;
                message.MessageText = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
            }

            return(message);
        }