Base solution for your next web application

Activities of "aaron"

What I understood: So the notification system expects the GUI to call into some AppService or Controller where the code then can call a SubscribeAsync() with the current user from that session. Is it that?

No, the user should only subscribe once (e.g. when the user is created) rather than in MyObjekteAppService.GetAll.

Still the client side listens(?) to both events names, while just the first one would be right.

I don't understand what you mean by "just the first one would be right".

But perhaps this is not the right tool anyways? Because those entity updates I want to have do not really have to be persisted in any way. ... Or maybe using SingalR instead would be wise?

Yes. Documentation: https://aspnetboilerplate.com/Pages/Documents/SignalR-AspNetCore-Integration

Happy to help!

By the way, you don't need to create another interface when doing ReplaceService unless you are extending the interface. Also note that IStripePaymentAppService already inherits IApplicationService so you don't have to inherit that again.

The error message is clear.

To replace the service for IStripePaymentAppService, you have to implement the interface. In your case, make INuagecareStripePaymentAppService inherit IStripePaymentAppService.

You can implement domain event handlers for PersonCompany and Address in which you update AddressPersonCompany.

See https://aspnetboilerplate.com/Pages/Documents/EventBus-Domain-Events#handling-events.

Which namespace do you get .WhereIf from?

Without Abp.Linq.Expressions namespace, I believe .WhereIf is doing an in-memory search that is equivalent to:

  var addressPersonCompanies = _addressPersonCompanyRepository
      .GetAll()
      .Include(adr => adr.Address)
      .Include(pers => pers.PersonCompany)
      .Include(tit => tit.PersonCompany.Title)
+     .ToList()
      .WhereIf(
          !input.Filter.IsNullOrEmpty(),
          e => searchwords.All(w => String
              .Join(" ", e.PersonCompany.NameCompany, e.PersonCompany.Firstname, e.Address.Street, e.Address.Location)
              .Contains(w, StringComparison.InvariantCultureIgnoreCase))
      )                
      .ToList();

For performance, I suggest storing a pre-calculated NormalizedSearchTarget property:

addressPersonCompany.NormalizedSearchTarget = String
    .Join(" ", e.PersonCompany.NameCompany, e.PersonCompany.Firstname, e.Address.Street, e.Address.Location)
    .ToUpperInvariant();

And then searching would be:

var searchwords = !input.Filter.IsNullOrEmpty()
    ? input.Filter.Split(" ").Select(w => w.ToUpperInvariant()).ToList()
    : null;
e => searchwords.All(w => e.NormalizedSearchTarget.Contains(w))

I suppose it is run after RegisterAssemblyByConvention in your module.

From https://stackoverflow.com/questions/56825208/how-to-register-concrete-class-to-generic-interface/57136227#57136227:

For compatibility<sup>1</sup> with RegisterAssemblyByConvention, configure a unique name.

<sup>1</sup> If your concrete class implements ASP<span></span>.NET Boilerplate's ITransientDependency, then the default name is used to register the class for .WithService.Self() inside RegisterAssemblyByConvention.

  context.IocManager.IocContainer.Register(
      Classes.FromAssembly(context.Assembly)
          .BasedOn<IExposedJob>()
          .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
          .WithService.Self()
          .WithService.Base()
          .WithService.AllInterfaces()
+         .Configure(configurer => configurer.Named(Guid.NewGuid().ToString()))
  );

@CNS

Don't use void as the return type of an asynchronous method.

private async void ProcessReceiptTransfer(VoucherPostingDto input) should be private async Task ProcessReceiptTransfer(VoucherPostingDto input)

  1. Have you made the change above?
  2. Can you share code for the caller of ProcessReceiptTransfer method?

What is the error?

You need to cascade soft deletes yourself. See aspnetboilerplate/aspnetboilerplate#3559.

Showing 21 to 30 of 1543 entries