/// <inheritdoc/> public async Task <Unit> Handle(CreatePaymentCommand request, CancellationToken cancellationToken) { contextAdapter.Context.Entry(request.PaymentToSave).State = EntityState.Added; contextAdapter.Context.Entry(request.PaymentToSave.ChargedAccount).State = EntityState.Modified; if (request.PaymentToSave.TargetAccount != null) { contextAdapter.Context.Entry(request.PaymentToSave.TargetAccount).State = EntityState.Modified; } if (request.PaymentToSave.IsRecurring) { if (request.PaymentToSave.RecurringPayment == null) { var exception = new RecurringPaymentNullException($"Recurring Payment for Payment {request.PaymentToSave.Id} is null, although payment is marked recurring."); logger.Error(exception); throw exception; } contextAdapter.Context.Entry(request.PaymentToSave.RecurringPayment).State = EntityState.Added; } await contextAdapter.Context.SaveChangesAsync(cancellationToken); settingsFacade.LastDatabaseUpdate = DateTime.Now; backupService.UploadBackupAsync().FireAndForgetSafeAsync(); return(Unit.Value); }
/// <inheritdoc /> public async Task <Unit> Handle(CreatePaymentCommand request, CancellationToken cancellationToken) { contextAdapter.Context.Entry(request.PaymentToSave).State = EntityState.Added; if (request.PaymentToSave.IsRecurring) { if (request.PaymentToSave.RecurringPayment == null) { var exception = new RecurringPaymentNullException($"Recurring Payment for Payment {request.PaymentToSave.Id} is null, although payment is marked recurring."); logger.Error(exception); throw exception; } contextAdapter.Context.Entry(request.PaymentToSave.RecurringPayment).State = EntityState.Added; } await contextAdapter.Context.SaveChangesAsync(cancellationToken); return(Unit.Value); }