Base solution for your next web application
Starts in:
01 DAYS
01 HRS
01 MIN
01 SEC

Activities of "BobIngham"

Question

This is one for @ismcagdas. I'm currently on 6.8.0, way behind the curve but,hey-ho, maybe the current crisis will now give me time to upgrade before we go to market. In the meantime I'm having to keep and then upload angular appconfig.production.json files to each of my testing, staging and production environments. I then restart the service (Azure) to pick up the new environment file which is especially annoying when swapping my staging slot for my production slot. There was some work carried out post-6.8.0 on environments in the Angular solution. Can you point me in the right direction so I can implement same in my 6.8.0 solution?

.NET Core, Angular, ASPNET Framework 4.6.0, Zero 6.8.0 I want to implement my own StripePaymentAppService. My conventions are to leave alone the Zero implementation, copy the code and then implement my own. Create new service: NuagecareStripePaymentAppService, copied from StripePaymentAppService and modified: Create new interface, INuagecareStripePaymentAppService, copied direct from IStripePaymentAppService Then, in [ProjectName].Application.[ProjectName]ApplicationModule inject the new service using the following code:

//Replace StripePaymentAppService with NuagecareStripePaymentAppService
Configuration.ReplaceService(typeof(IStripePaymentAppService), () =>
{
    Configuration.IocManager.IocContainer.Register(
        Component.For<IStripePaymentAppService, INuagecareStripePaymentAppService>()
                    .ImplementedBy<NuagecareStripePaymentAppService>()
                    .LifestyleTransient()
    );
});

However, I get an error in Visual Studio: What am I doing worong and what's best practise here?

Question

This one's for @ismcagdas. You mentioned Metronic 7 is due. Do you have any timescales for this before I pour resource in getting to 8.2? Also, they now have 30 demos with "more coming soon", is @hilkakan going to demand that all of these demos are included in the new version ;-)

In my SettingsProvider I want to be able to set a default value from a variable, tenancyName:

new SettingDefinition(
    name: NuageSettings.NuageTenantManagement.DocumentationContainer,
    defaultValue: GetTenantName(),
    scopes: SettingScopes.Tenant,
    displayName: null,
    description: null,
    group: null,
    isVisibleToClients: true,
    isInherited: true,
    customData: null),

Now, I have tried implementing a private method at the foot of the SettingsProvider called GetTenantName() but there is actually no way to return the tenancy name using the TenantManager synchronously. SettingDefinitions are returned using a synchronous method:

public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context)

So how do I get the tenancy name and apply it as a default in my settings? The Use Case is that I have a document library held in Blob Storage, each tenant has a new library copied from a default library when the tenant is created. Some tenants may want to use a different or common library so it essential that they can change the setting.

We are trying to work out how the subscription system works with Zero. On the page - TenantRegistration/SelectEdition the page has editions and features. The user selects an edition, if the option is to buy now the logic is straightforward. If the option is for a free trial we are having difficulty testing how the system works. Could someone help me with what Zero is doing in the back end given the folllowing scenario.

  • Our edition has a 14 day trial and a 3 day "grace period".
  • We create a new tenant on a 14 day trial.
  • We stop Zero.
  • We go into the database and backdate the CreationTime of the tenant to 18 days ago (we understand CreationTime is used for subscription start, which makes sense).
  • As the trial is now ended (14 days plus 3 day grace period) we emulate this by setting IsInTrialPeriod to false.
  • We also set the subscription date backwards to before today.
  • We start Zero.
    • We can still sign in as the tenant and continue using the system - what are we doing wrong?

At some time in the past I remember setting this up on a test machine and letting it run. Somehere there is a background job which fires off emails warning that the trial period is about to end and then sends an email telling the user the grace period has started. Where is the code for these background emails and does it send an email to tell the user the trial is ended - does it give a final option to pay at this stage?

Zero places a reminder on header bar reminding the tenant that the trial is about to end and then states that the trial ended -NN days ago, how is it possible to see a message telling me that the trial is ended and the grace period is finished but I can still continue to work with the system if I really want to? At some stage Zero flicks a switch to make the tenant inactive after which the sub-domain is no longer reachable, when does this happen and what code carries out this task?

Can someone tell me exactly what is happening during trial periods and what is meant to happen when it has finished. Moreover, can someone tell me how to test it without having to wait for 10 days or whatever trial period the system is set to? I can't find the code anywhere and have looked through this in great depth this afteroon with a colleague.

My scenario is such that, At the end of the test trial and grace period, I want the system to notify the user that the trial and grace period has ended and invoke the Stripe payment system. Can someone help in pointing me in the right direction to get this done?

.net core, angular, aspnet framework 4.7.1, Zero 6.8.0

I have this in my app service ;

public async Task Delete(EntityDto<int> input)
{
    await _ncDocumentRepository.DeleteAsync(input.Id);
}

public async Task Restore(EntityDto<int> input)
{
    using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.SoftDelete))
    {
        var model = await _ncDocumentRepository.FirstOrDefaultAsync(m => m.Id == input.Id);
        model.IsDeleted = false;
        await _ncDocumentRepository.UpdateAsync(model);
    }
}

This is my interface:

Task Delete(EntityDto<int> input);
Task Restore(EntityDto<int> input);

Here's a picture of my angular controller:

And here's the offending code in service-proxies.ts:

If I manually change EntityDtoOfInt32 to number in my service proxy to test the code I get the following error:

I have refreshed nswag, rebooted, slapped my hand forcefully against my forehead and resorted to baging my head against the wall several times. It didn't help. Anyone, any ideas?

.NET Core, Angular, aspnet Framework 4.7.2, Zero 6.8.0

These are two methods in my service;

public async Task Delete(EntityDto<int> input)
{
    await _ncDocumentRepository.DeleteAsync(input.Id);
}

public async Task Restore(EntityDto<int> input)
{
    using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.SoftDelete))
    {
        var model = await _ncDocumentRepository.FirstOrDefaultAsync(m => m.Id == input.Id);
        model.IsDeleted = false;
        await _ncDocumentRepository.UpdateAsync(model);
    }
}

This is my service interface:

Task Delete(EntityDto<int> input);
Task Restore(EntityDto<int> input);

Here's a picture of my angular component:

And here's the offending code in service-proxies.ts:

I have recompiled, run a refresh on swagger, rebooted, slapped my forhead several times and then banged my head against the wall ten times. The problem still doesn't seem to go away. Anyone any ideas?

The title says it all, really. What I wouldn't give for a similar helper which sent something along the lines of:

SyncHelper.RunAsync(() => _happyDaysAreHereAgainManager("sunshine goes here"));

Anyone?

dotnet core, angular, aspnet framework 4.7.1, 6.8.0 I want to implement a third party widget on the header bar to display a drop down menu with contextual help. How can I pass variables from the current page to the widget? I want the drop down menu to have instructions for the current page. Is there some way I can do this with a publish/subscription model? What's the best way of doing this whilst making minimal changes to Zero code (i.e. reducing merge conflicts from the latest Zero branch)?

Please tell me how to get rid of these ridiculous messages in the log:

WARN  2019-11-24 13:03:22,649 [79   ] calization.RequestLocalizationMiddleware - AbpLocalizationHeaderRequestCultureProvider returned the following unsupported cultures 'null'.
WARN  2019-11-24 13:03:22,649 [79   ] calization.RequestLocalizationMiddleware - AbpLocalizationHeaderRequestCultureProvider returned the following unsupported UI Cultures 'null'.

If it's not a problem don't throw a warning, throw an info statement. I am about to hand over my infrastructure to a third party and the first thing they want to see are logs. Trying to sift through hundreds of failed logins because the user can't remember their username or password is bad enough, it's hard to find real exceptions in the Zero logs because of the crap that's in there. But then trying to explain that a warning is not really a warning it's just something that can be safely ignored really doesn't cut it when you're trying to prove that the system is ready for handover. I need to be made aware of exceptions and warnings by my infrastructure partner. They need to be assured that the system is supportable and it doesn't help when there's a lot of crap in there which needs to be filtered out.

Showing 31 to 40 of 142 entries