I am writing to ask about searched implemented in default modules like saas, administration. When using Mongodb they are all case sensitive even for Contains comparison . Which is pretty annoying. When you searching for tenants or user you want searches to be case insensitive as you searching for some partial key and ignore case should be implemented. Have you guys have any work currently pending regrading that. Or if not can you point me to right direction how to implement is globally. This is source code I am referring to which does case sensitive search
public virtual async Task<List<Tenant>> GetListAsync(
string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false,
Guid? editionId = null,
DateTime? expirationDateMin = null,
DateTime? expirationDateMax = null,
TenantActivationState? tenantActivationState = null,
CancellationToken cancellationToken = default)
{
return await (await GetMongoQueryableAsync(cancellationToken))
.WhereIf<Tenant, IMongoQueryable<Tenant>>(
!filter.IsNullOrWhiteSpace(),
u =>
u.Name.Contains(filter)
)
.WhereIf(editionId.HasValue, tenant => tenant.EditionId == editionId.Value)
.WhereIf(expirationDateMin.HasValue, tenant => tenant.EditionEndDateUtc >= expirationDateMin.Value)
.WhereIf(expirationDateMax.HasValue, tenant => tenant.EditionEndDateUtc <= expirationDateMax.Value)
.WhereIf(tenantActivationState.HasValue, tenant => tenant.ActivationState == tenantActivationState.Value)
.OrderBy(sorting.IsNullOrWhiteSpace() ? nameof(Tenant.Name) : sorting)
.As<IMongoQueryable<Tenant>>()
.PageBy<Tenant, IMongoQueryable<Tenant>>(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
Following Exception happen, I have seen this issue raised multiple times and I guess solution is in progress. Can you please update us how we can resolve this for our angular UI generation . We wont be updating to 8.0.0 soon can you please inform how to resolve this in 7.4 version.
exitCode: 1, signal: undefined, signalDescription: undefined, stdout: '', stderr: '[Project Not Found] A project matching entity solution name or a default project does not exist in your Angular workspace.', failed: true, timedOut: false, isCanceled: false, killed: false
Do you have any plans or documentation around how to implement notification system like in ABP boilerplate or ASP.Net Zero https://docs.aspnetzero.com/en/aspnet-core-angular/latest/Features-Angular-Notifications https://aspnetboilerplate.com/Pages/Documents/Notification-System
Can you please advice when it will be released
I am getting exception on Delete OUs on ABP update to v7.4.0-rc.1 and still there in v7.4.0-rc.2 version. It seems something has changed regarding deleting entity.
Stack trace
ActionName Volo.Abp.Identity.OrganizationUnitController.DeleteAsync (Volo.Abp.Identity.Pro.HttpApi)
System.ArgumentException: Must contain at least 1 request. (Parameter 'requests')
at MongoDB.Driver.MongoCollectionImpl1.BulkWriteAsync(IClientSessionHandle session, IEnumerable
1 requests, BulkWriteOptions options, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl1.UsingImplicitSessionAsync[TResult](Func
2 funcAsync, CancellationToken cancellationToken)
at Volo.Abp.Domain.Repositories.MongoDB.MongoDbRepository2.UpdateManyAsync(IEnumerable
1 entities, Boolean autoSave, CancellationToken cancellationToken)
at Volo.Abp.Identity.MongoDB.MongoIdentityUserRepository.UpdateOrganizationAsync(Guid sourceOrganizationId, Nullable1 targetOrganizationId, CancellationToken cancellationToken) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.Identity.OrganizationUnitAppService.DeleteAsync(Guid id) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope) at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.
"@abp/ng.theme.shared": [ "dist/packages/theme-shared/", ], "@abp/ng.theme.shared/extensions": [ "dist/packages/theme-shared/extensions/", ] then run ng build abp-ng.theme.shared the code will compile the code. Finally yarn start your app will work compiled local source code. it is just a workaround. I am looking the main reason that why it doesn't work.
I am trying to create Static proxy for TenantAppservice and all SaasHost Module. I dont get error with PlanDto but Enums that are part of TenantDtos.
I get issue with below ENUM which is part of Saas Domain shared module. Do I create these enums manually and they are not create as part or generation. `public enum TenantActivationState : byte { Active = 0,
ActiveWithLimitedTime = 1,
Passive = 2
} `
Like this Dto use the above Enum
`public class SaasTenantDto : ExtensibleEntityDto
public Guid? EditionId { get; set; }
public DateTime? EditionEndDateUtc { get; set; }
public string EditionName { get; set; }
public bool HasDefaultConnectionString { get; set; }
public TenantActivationState ActivationState { get; set; }
public DateTime? ActivationEndDate { get; set; }
public string ConcurrencyStamp { get; set; }
}`
abp generate-proxy -t csharp -u https://localhost:44381/ -m Saas
And this is my saas Http.Client module code.
[DependsOn(
typeof(AbpHttpClientModule),
typeof(SaasServiceApplicationContractsModule),
typeof(SaasTenantHttpApiClientModule),
typeof(SaasHostHttpApiClientModule)
)]
public class SaasServiceHttpApiClientModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(
typeof(SaasServiceApplicationContractsModule).Assembly,
SaasServiceRemoteServiceConsts.RemoteServiceName
);
}
}
I am trying to Call Saas Microservice from Other Abp Microservice and Want to use static Proxy generations. When I use Abp Cli to ceate static proxy It does not genrate Enum type under Dtos.
I get error in build as there is not type. Below ae all the files that are generated. can you Please advice how Can I generate static client proxy for Saas Microservice. I followed yours documented approach. Another issue is if we genrate these proxy under client module then we have to inject Http.Client module to Application module.. Its blocking development, and i will appreciate your response.
Angular code is not the problem I guess . When I pass custom message property from server side like this
var validations = new List() { new ValidationResult("File Size cannot be bigger than 5mb") };
throw new AbpValidationException(message: "testing 1 2 3", validations);
API still returns message to default message for validations. Is there any way to override tis message.
{
"error": {
"code": null,
** "message": "Your request is not valid!",**
"details": "The following errors were detected during validation.\r\n - File Size cannot be bigger than 5mb\r\n",
"data": {},
"validationErrors": [
{
"message": "File Size cannot be bigger than 5mb",
"members": null
}
]
}
}