Esempio n. 1
0
        private async Task AddOrUpdate(InvoiceModel invoice)
        {
            if (string.IsNullOrEmpty(invoice.FindId))
            {
                invoice.CreateId();
                _entity = _dbcontext.Invoices.Add(new InvoiceData {
                    Invoice = invoice
                });

                var lastNumber = await _dbcontext.LastNumber.FindAsync(1);

                if (int.TryParse(invoice.Number, out int number) && number > lastNumber.LastNumber)
                {
                    _dbcontext.LastNumber.Update(new LastNumberData {
                        Id = 1, LastNumber = number
                    });
                }
            }
            else
            {
                invoice.IsUpdate(invoice.Created);
                var dataObject = await _dbcontext.Invoices
                                 .AsNoTracking()
                                 .SingleOrDefaultAsync(x => x.Invoice.FindId == invoice.FindId);

                dataObject.Invoice = invoice;
                _entity            = _dbcontext.Invoices.Update(dataObject);
            }
            await _dbcontext.SaveChangesAsync();

            _entity.State = EntityState.Detached;
        }