Base solution for your next web application

Activities of "ricardo"

Hi

We are using latest asp.net core jQuery.

i have an entity that belongs to an organization unit. I want to get all records related to the organizational units of the user and his children

We have tried below code as explained here https://aspnetboilerplate.com/Pages/Documents/Zero/Organization-Units

	    [UnitOfWork]
		public virtual async Task<List<Colaborador>> GetColaboradoresForUserIncludingChildOusAsync()
		{
			var user = await _userManager.GetUserByIdAsync((long)AbpSession.UserId);
			var organizationUnits = await _userManager.GetOrganizationUnitsAsync(user);
			var organizationUnitCodes = organizationUnits.Select(ou => ou.Code).ToList();			

			var filteredColaboradores = from colaborador in _colaboradorRepository.GetAll()
						join organizationUnit in _lookup_organizationUnitRepository.GetAll() on colaborador.OrganizationUnitId equals organizationUnit.Id
						where organizationUnitCodes.Any(code => organizationUnit.Code.StartsWith(code))						
						select colaborador;

			return await filteredColaboradores.ToListAsync();
		}

And getting this error

System.InvalidOperationException: The LINQ expression 'DbSet<Colaborador>() .Where(c => __ef_filter__p_0 || !(((ISoftDelete)c).IsDeleted) && __ef_filter__p_1 || (Nullable<int>)((IMustHaveTenant)c).TenantId == __ef_filter__CurrentTenantId_2) .Join( inner: DbSet<OrganizationUnit>() .Where(o => __ef_filter__p_3 || !(((ISoftDelete)o).IsDeleted) && __ef_filter__p_4 || ((IMayHaveTenant)o).TenantId == __ef_filter__CurrentTenantId_5), outerKeySelector: c => c.OrganizationUnitId, innerKeySelector: o => o.Id, resultSelector: (c, o) => new TransparentIdentifier<Colaborador, OrganizationUnit>( Outer = c, Inner = o )) .Where(ti => __organizationUnitCodes_0 .Any(code => code == "" || ti.Inner.Code != null && code != null && ti.Inner.Code.StartsWith(code)))' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information. at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.<VisitMethodCall>g__CheckTranslated|15_0(ShapedQueryExpression translated, <>c__DisplayClass15_0& ) at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query) at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass9_01.<Execute>b__0() at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func1 compiler) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query) at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable1.GetEnumerator() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at Tecsmart.Epm.Colaboradores.ColaboradoresAppService.GetAllForLoadResult(DataSourceLoadOptions loadOptions) in C:\Desenvolvimento\epm-web\aspnet-core\src\Tecsmart.Epm.Application\Colaboradores\ColaboradoresAppService.cs:line 333 at Abp.Authorization.AuthorizationInterceptor.InternalInterceptAsynchronous[TResult](IInvocation invocation) at Abp.Domain.Uow.UnitOfWorkInterceptor.InternalInterceptAsynchronous[TResult](IInvocation invocation) at Abp.Domain.Uow.UnitOfWorkInterceptor.InternalInterceptAsynchronous[TResult](IInvocation invocation) at Abp.Auditing.AuditingInterceptor.InternalInterceptAsynchronous[TResult](IInvocation invocation) at Abp.Auditing.AuditingInterceptor.InternalInterceptAsynchronous[TResult](IInvocation invocation) at Abp.Runtime.Validation.Interception.ValidationInterceptor.InternalInterceptAsynchronous[TResult](IInvocation invocation) at Tecsmart.Epm.Web.Areas.App.Controllers.ColaboradoresController.GetAllColaboradores(DataSourceLoadOptions loadOptions) in C:\Desenvolvimento\epm-web\aspnet-core\src\Tecsmart.Epm.Web.Mvc\Areas\App\Controllers\ColaboradoresController.cs:line 64 at lambda_method2847(Closure , Object ) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at IdentityServer4.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events, IBackChannelLogoutService backChannelLogoutService) at IdentityServer4.Hosting.MutualTlsEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context) at Abp.AspNetZeroCore.Web.Authentication.JwtBearer.JwtTokenMiddleware.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d.MoveNext() --- End of stack trace from previous location --- at Abp.AspNetZeroCore.Web.Authentication.JwtBearer.JwtTokenMiddleware.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) HEADERS ======= Accept: application/json, text/javascript, /; q=0.01 Accept-Encoding: gzip, deflate, br Accept-Language: pt-BR,pt;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Cache-Control: no-cache Connection: close Cookie: cookieconsent_status=dismiss; Abp.TenantId=2; .AspNetCore.Antiforgery.ZdUzRfrtN3M=CfDJ8K4i4vTg1sRJnzUwhyiExud2nGq0961iaK0mgg1SmMEJiYYBD8LhtorMEKBsYpYXZ_cvQZCFogWBdrx6Mf4cYWVpCfyIcHa7gfAQ6QdsRne7U5H4Ekqc_B3DmURBASA-woxBBhc76fiy9X82wrtLKGU; idsrv.session=52FB02639B6D413739FB8F0E21A947A7; XSRF-TOKEN=CfDJ8K4i4vTg1sRJnzUwhyiExufF4E7Nzp-78DGnn4v8StigUCzRsy-LOwwvIxhlsI_dMQk5mQU8ryrEPyGtj5LqsFsKmIMcfl-KRO79HoXHpuvHK-yOA9deYlsdG-t850hmBv7NGBkUV4t8PEDQPvQ813lshKSKo2lHqkP5Xp_JqV8ruHUeRAqttaLWr-ZkzWRcHQ; .AspNetCore.Identity.Application=CfDJ8K4i4vTg1sRJnzUwhyiExucjIx7zn0gnokcX44K7wIvbZBvZeXomMbper6A-mm0OjlSaZe9doP6r-JN10HLRlWCFfO89Dr4a7RXrvgcPW73DYHWsRnt34j4dmGKr7uPPNNHQiuxWfZ7tP3qtgUxlEB1GYJr0PZCFrPlOwoE3G0WEegnb-dbAxn_pV3rCpuU7WFLJkB6wbOlhzM54c6GtLm0Zh6Hcs9PHvV5SLtU6-wn55CdfqWtW3I_Eoe5NyRRctyBLpr6Tjy7tmvytNwirBvXpjokWRRTPhGhygJQlHiYUJZKPQbaY6M1oc48NYdMEk9v97AMm444zcHhEZKL0cNeRDA5XojbAtkienHqA48-nBMtTp5GQd82dJwJ4NBipTN26CY2XF3PdPXrn_qF-Bw2JL7EQ1O9d51J15MNPQ3_SmTi6w234GyN_UmLnLGTnzUWdlPJjUwulVnVFOTkJjvJF_fi61e3Hq-DrxehMRH6Yzp_RfWPuXyAQcMHFvSxDWrA7RdsgUz3GaXm0nklNPsrL_PW9aoeRzQYyqIuYlnOnG6m2yr7bhCzNfFL0KGI83XMWAj80YUfAKjI0CLpki2fOkm3CHcZHhSsetLyxsRf2iGCyESeB9DKPl08YvkueRXO1Q6Obk-wYXAxJ0Ft-FNu5_9NNPnE6WsnNRrxhDn34Jl3mP80eHCmxd4FerRhRVZovVaR04QhrValtV3fwHqwrQjOFAsLMAOfqk9KGLMEm4clisL4UbyKMXhNvRhfD02vteWXl-yTppmxoL7w30hf8M1Qww7l5jfxx1F0v38J4TppFNy3euQ2_IsDis6JaOa-49w0I-Yq-v1s7Hom4Yew7AiUL87fRT3ZqzJsC0Fqv0bPD9bykP9Cy3B6AWucTrt_XADTIH9RWc8Dnoh7IROQVEVHjCTOzcQuJ-C_ZbaBGRbrpq6Yqj8m-yIjWuwgAtTvNQy3RETQs_abzxjd9bVWblffFSNWsGU_8XslhapetmIkydSGQw9L8vMg5TL43hMYx6OAxCa8pmAidYTdTOnwF6r5QbUEQTysfGOzJbYdi8nGSD81Jx-qpWgzzGqW_tArIggPdczAn9Xo2hmilvnI; kt_aside_menu=33.599998474121094 Host: localhost:44302 Pragma: no-cache Referer: https://localhost:44302/App/Colaboradores User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60 x-xsrf-token: CfDJ8K4i4vTg1sRJnzUwhyiExufF4E7Nzp-78DGnn4v8StigUCzRsy-LOwwvIxhlsI_dMQk5mQU8ryrEPyGtj5LqsFsKmIMcfl-KRO79HoXHpuvHK-yOA9deYlsdG-t850hmBv7NGBkUV4t8PEDQPvQ813lshKSKo2lHqkP5Xp_JqV8ruHUeRAqttaLWr-ZkzWRcHQ x-requested-with: XMLHttpRequest sec-fetch-site: same-origin sec-fetch-mode: cors sec-fetch-dest: empty

Hi @musa.demir

thanks for the return.

did as follows:

[UnitOfWork]
		public virtual async Task<List<Colaborador>> GetColaboradoresForUserIncludingChildOusAsync()
		{
			var user = await _userManager.GetUserByIdAsync((long)AbpSession.UserId);
			var organizationUnits = await _userManager.GetOrganizationUnitsAsync(user);
			var organizationUnitCodes = organizationUnits.Select(ou => ou.Code).ToList();	

			var filter = PredicateBuilder.New<Colaborador>();

            foreach (var code in organizationUnitCodes)
            {
            	filter = filter.Or(ou => ou.OrganizationUnitFk.Code.StartsWith(code));
            }

			var filteredColaboradores = _colaboradorRepository.GetAll().Where(filter);				

			

			return await filteredColaboradores.ToListAsync();
		}

thanks for the help

  • What is your product version: v10.0.0
  • What is your product type (Angular or MVC) : MVC
  • What is product framework type (.net framework or .net core):net core

Hi, after upgrading to version 10.0.0, Log4Net stopped logging the logs. I'm running visual Studio as an administrator and i have write access to the folder.

log4net.config:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="App_Data/Logs/Logs.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
  </appender>
  <root>
    <appender-ref ref="RollingFileAppender" />
    <level value="DEBUG" />
  </root>
</log4net>
 //Configure Abp and Dependency Injection
            return services.AddAbp<EpmWebMvcModule>(options =>
            {
                //Configure Log4Net logging
                options.IocManager.IocContainer.AddFacility<LoggingFacility>(
                    f => f.UseAbpLog4Net().WithConfig(_hostingEnvironment.IsDevelopment()
                        ? "log4net.config"
                        : "log4net.Production.config")
                );

                options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories);
            });

I'm forgetting something?

sorry i was looking in the wrong folder

  • What is your product version : v10.0.0
  • What is your product type (Angular or MVC): MVC
  • What is product framework type (.net framework or .net core): .net Core
  1. I created custom session using claim:

created CreateAsync override in UserClaimsPrincipalFactory.cs

  1. created MySession:

  2. during execution in a drop down the user can select another value.

after login the value is correctly updated in CurrentUnidaNegocioAtivaIdOrNull in the session. But when the user makes the change via SetUnidadeNegocioAtiva, the value is not replicated to the session. Only after the second post to the server is it able to fetch the value correctly.

Debug:

Is there any way for the value to be instantly updated in the session? Where can I be wrong?

Worked perfectly. Thank you very much for the quick feedback.

Hello team,

Is there any way to implement a per-tenant unique sequencer?

hank you

The country's legislation requires the generation of a receipt that contains a sequential number starting with 1 for each establishment. Where later a tax report will be issued and compared with each receipt generated. The sequential number cannot have gaps. This exclude generating a single sequence for all tenants.

  • What is your product version: v10.5.0
  • What is your product type (Angular or MVC): MVC
  • What is product framework type (.net framework or .net core): .NetCore

How can I globally change the position of the toastr in MVC .NETCORE

Tanks.

Hi @musa.demir

Changed : ..\aspnet-core\src\Tecsmart.Epm.Web.Mvc\node_modules\abp-web-resources\Abp\Framework\scripts\libs\abp.toastr.js

still showing on the right side. Am I letting something slip away?

Showing 1 to 10 of 32 entries