Yes the code is in the Migrator.
using System; using System.Diagnostics; using Abp.Configuration; using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Threading; using Abp.Threading.BackgroundWorkers; using Abp.Threading.Timers; using Abp.Timing; using Mortho.Authorization.Users; using Mortho.Configuration;
namespace Mortho.MultiTenancy { public class SubscriptionExpireEmailNotifierWorker : PeriodicBackgroundWorkerBase, ISingletonDependency { private const int CheckPeriodAsMilliseconds = 1 * 60 * 60 * 1000 * 24; //1 day
private readonly IRepository<Tenant> _tenantRepository;
private readonly UserEmailer _userEmailer;
public SubscriptionExpireEmailNotifierWorker(
AbpTimer timer,
IRepository<Tenant> tenantRepository,
UserEmailer userEmailer) : base(timer)
{
_tenantRepository = tenantRepository;
_userEmailer = userEmailer;
Timer.Period = CheckPeriodAsMilliseconds;
Timer.RunOnStart = true;
LocalizationSourceName = MorthoConsts.LocalizationSourceName;
}
protected override void DoWork()
{
var subscriptionRemainingDayCount = Convert.ToInt32(SettingManager.GetSettingValueForApplication(AppSettings.TenantManagement.SubscriptionExpireNotifyDayCount));
var dateToCheckRemainingDayCount = Clock.Now.AddDays(subscriptionRemainingDayCount).ToUniversalTime();
var subscriptionExpiredTenants = _tenantRepository.GetAllList(
tenant => tenant.SubscriptionEndDateUtc != null &&
tenant.SubscriptionEndDateUtc.Value.Date == dateToCheckRemainingDayCount.Date &&
tenant.IsActive &&
tenant.EditionId != null
);
foreach (var tenant in subscriptionExpiredTenants)
{
Debug.Assert(tenant.EditionId.HasValue);
try
{
AsyncHelper.RunSync(() => _userEmailer.TryToSendSubscriptionExpiringSoonEmail(tenant.Id, dateToCheckRemainingDayCount));
}
catch (Exception exception)
{
Logger.Error(exception.Message, exception);
}
}
}
}
}
this is a new project
this was my bad; I did not do a nwsag\refresh --> npm run create-bundles --> npm start after I added the table.
Version 10.4 aspnetzero with Powertools; the below happens when I am compiling the Andular with the 'npm run create-bundles' which I run after a add of a new table.
C:\github\murphymj5209\Mortho.AspnetZero\angular>npm run create-dynamic-bundles
[email protected] create-dynamic-bundles C:\github\murphymj5209\Mortho.AspnetZero\angular gulp buildDev
[20:46:26] Using gulpfile C:\github\murphymj5209\Mortho.AspnetZero\angular\gulpfile.js [20:46:26] Starting 'buildDev'... Dynamic bundles are being created. [20:47:28] Finished 'buildDev' after 1.03 min
C:\github\murphymj5209\Mortho.AspnetZero\angular>npm start
[email protected] start C:\github\murphymj5209\Mortho.AspnetZero\angular ng serve --host 0.0.0.0 --port 4200
Warning: This is a simple server for use in testing or debugging Angular applications locally. It hasn't been reviewed for security issues.
Binding this server to an open connection can result in compromising your application or computer. Using a different host than the one passed to the "--host" flag might result in websocket connection issues. You might need to use "--disableHostCheck" if that's the case. √ Browser application bundle generation complete. 1677.js | - | 0 bytes 1678.js | - | 0 bytes 1679.js | - | 0 bytes 1680.js | - | 0 bytes account-account-module.js | account-account-module | 0 bytes app-admin-admin-module.js | app-admin-admin-module | 0 bytes app-main-main-module.js | app-main-main-module | 0 bytes audit-logs-audit-logs-module.js | audit-logs-audit-logs-module | 0 bytes common.js | common | 0 bytes dashboard-dashboard-module.js | dashboard-dashboard-module | 0 bytes host-dashboard-module~demo~139a1d84 | 0 bytes default~dashboard-dashboard-module~dashboard-host-dashboard-module.js | default~dashboard-dashboard-module~dashboard-host-dashboard-module | 0 bytes default~dynamic-properties-dynamic-entity-properties-dynamic-entity-properties-module~dynamic-proper~0fc7265d.js | default~dynamic-properties-dynamic-entity-properties-dynamic-entity-properties-module~dynamic-proper~0fc7265d | 0 bytes default~dynamic-properties-dynamic-entity-properties-value-dynamic-entity-property-value-module~user~11f7e2c9.js | default~dynamic-properties-dynamic-entity-properties-value-dynamic-entity-property-value-module~user~11f7e2c9 | 0 bytes default~webhook-subscription-webhook-event-detail-module~webhook-subscription-webhook-subscription-d~9aba8d7f.js | default~webhook-subscription-webhook-event-detail-module~webhook-subscription-webhook-subscription-d~9aba8d7f | 0 bytes demo-ui-components-demo-ui-components-module.js | demo-ui-components-demo-ui-components-module | 0 bytes dynamic-properties-dynamic-properties-module.js | dynamic-properties-dynamic-properties-module | 0 bytes editions-editions-module.js | editions-editions-module | 0 bytes email-activation-confirm-email-module.js | email-activation-confirm-email-module | 0 bytes email-activation-email-activation-module.js | email-activation-email-activation-module | 0 bytes install-install-module.js | install-install-module | 0 bytes register-register-tenant-module.js | register-register-tenant-module | 0 bytes register-register-tenant-result-module.js | register-register-tenant-result-module | 0 bytes register-select-edition-module.js | register-select-edition-module | 0 bytes roles-roles-module.js | roles-roles-module | 0 bytes settings-host-settings-module.js | settings-host-settings-module | 0 bytes settings-tenant-settings-module.js | settings-tenant-settings-module | 0 bytes subscription-management-invoice-invoice-module.js | subscription-management-invoice-invoice-module | 0 bytes subscription-management-subscription-management-module.js | subscription-management-subscription-management-module | 0 bytes tenants-tenants-module.js | tenants-tenants-module | 0 bytes ui-customization-ui-customization-module.js | ui-customization-ui-customization-module | 0 bytes users-users-module.js | users-users-module | 0 bytes webhook-subscription-webhook-event-detail-module.js | webhook-subscription-webhook-event-detail-module | 0 bytes webhook-subscription-webhook-subscription-detail-module.js | webhook-subscription-webhook-subscription-detail-module | 0 bytes
Build at: 2021-09-21T01:48:12.906Z - Hash: 870e3c549fa2e772a507 - Time: 31293ms
Error: src/app/admin/nstable1/table1s/create-or-edit-table1-modal.component.ts:26:17 - error NG2003: No suitable injection token for parameter '_table1sServiceProxy' of class 'CreateOrEditTable1ModalComponent'. Consider using the @Inject decorator to specify an injection token.
26 private _table1sServiceProxy: Table1sServiceProxy, ~~~~~~~~~~~~~~~~~~~~
src/app/admin/nstable1/table1s/create-or-edit-table1-modal.component.ts:26:39 26 private _table1sServiceProxy: Table1sServiceProxy, ~~~~~~~~~~~~~~~~~~~ This type does not have a value, so it cannot be used as injection token.
Error: src/app/admin/nstable1/table1s/create-or-edit-table1-modal.component.ts:4:10 - error TS2305: Module '"../../../../shared/service-proxies/service-proxies"' has no exported member 'Table1sServiceProxy'.
4 import { Table1sServiceProxy, CreateOrEditTable1Dto } from '@shared/service-proxies/service-proxies'; ~~~~~~~~~~~~~~~~~~~
Error: src/app/admin/nstable1/table1s/create-or-edit-table1-modal.component.ts:4:31 - error TS2305: Module '"../../../../shared/service-proxies/service-proxies"' has no exported member 'CreateOrEditTable1Dto'.
4 import { Table1sServiceProxy, CreateOrEditTable1Dto } from '@shared/service-proxies/service-proxies'; ~~~~~~~~~~~~~~~~~~~~~
Error: src/app/admin/nstable1/table1s/table1.module.ts:10:20 - error NG6001: The class 'Table1sComponent' is listed in the declarations of the NgModule 'Table1Module', but is not a directive, a component, or a pipe. Either remove it from the NgModule's declarations, or add an appropriate Angular decorator.
10 declarations: [Table1sComponent, CreateOrEditTable1ModalComponent, ViewTable1ModalComponent], ~~~~~~~~~~~~~~~~
src/app/admin/nstable1/table1s/table1s.component.ts:26:14 26 export class Table1sComponent extends AppComponentBase { ~~~~~~~~~~~~~~~~ 'Table1sComponent' is declared here.
Error: src/app/admin/nstable1/table1s/table1.module.ts:10:38 - error NG6001: The class 'CreateOrEditTable1ModalComponent' is listed in the declarations of the NgModule 'Table1Module', but is not a directive, a component, or a pipe. Either remove it from the NgModule's declarations, or add an appropriate Angular decorator.
10 declarations: [Table1sComponent, CreateOrEditTable1ModalComponent, ViewTable1ModalComponent], ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[0m
src/app/admin/nstable1/table1s/create-or-edit-table1-modal.component.ts:14:14 14 export class CreateOrEditTable1ModalComponent extends AppComponentBase implements OnInit { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'CreateOrEditTable1ModalComponent' is declared here.
Error: src/app/admin/nstable1/table1s/table1s.component.ts:39:17 - error NG2003: No suitable injection token for parameter '_table1sServiceProxy' of class 'Table1sComponent'. Consider using the @Inject decorator to specify an injection token.
39 private _table1sServiceProxy: Table1sServiceProxy, ~~~~~~~~~~~~~~~~~~~~
src/app/admin/nstable1/table1s/table1s.component.ts:39:39 39 private _table1sServiceProxy: Table1sServiceProxy, ~~~~~~~~~~~~~~~~~~~ This type does not have a value, so it cannot be used as injection token.
I have made a suggestion in the issue area of the AspnetZero repo to have a console app always apart of AspNetZero. My suggestion is to have the console app authenticate to the web api then authorize based on the AspnetZero setup.
This would help alot in making quick console apps for Azure functions, possibly webhooks and scheduling AspnetZero jobs with a scheduling system.
Even a visual studio VSIX file would be of great benefit to add to an existing AspNetZero project.
For me, please show a very simple console app with the necessary DLL's so that I can do the above with some feeling of going forward; otherwise I am totally guessing.
In going forward, if I have issues, I will open a new ticket. Thanks for listening.
Please answer the following questions before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.
How do I get Identity Server 4 working with AspNetZero? Please outline general steps.Please do not suggest that I change a file from false --> true and suddenly it works. Well, I am sure tables and code are missing and this is what I am asking; to see a clear picture of the work effort needed to have IS4 work with AspNetZero.
Please do not misunderstand the question; its not to ask how do I add a OAuth2 provider this part of OAuth2 is very specific to each provider , its how to get to the point where I can deal with the provider assuming I modify the AspnetZero registration OK to do the new provider. Please include basic steps like : ' install IS4' into the aspnetzero database.
Please answer the following questions before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.!
I went thru the Identity Server on a new AspNetZero solution and followed this URL: https://docs.aspnetzero.com/en/aspnet-core-angular/latest/Infrastructure-Core-Angular-Identity-Server4-Integration and am receiving the below error
I do not know if this helps but here is the row in the PersistGrants that was written just before the Exception:
Id ClientId CreationTime Data Expiration SubjectId Type ConsumedTime Description SessionId 7iEol2V+Z6kb1caAyYkbz3gKPjq0G3Kt+oNooWllKYI= mvcdemo 2021-07-25 16:26:09.0000000 {"SubjectId":"1","ClientId":"mvcdemo","Scopes":["openid","profile"],"CreationTime":"2021-07-25T16:26:09Z","Expiration":null} NULL 1 user_consent NULL NULL NULL