示例#1
0
        public override async Task <GetByKeyReply> GetPublicByKey(GetByKeyRequest request, ServerCallContext context)
        {
            try
            {
                var appRequest = new ResourceRequestDto
                {
                    WithKey      = request.Key,
                    LanguageCode = request.LanguageCode,
                    MustBePublic = true
                };
                var appResponse = await _resourcesAppService.GetAsync(appRequest);

                var response = new GetByKeyReply
                {
                    Value = appResponse.Value
                };
                return(response);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);

                return(null);
            }
        }
示例#2
0
        public async Task <IActionResult> GetByKeyAsync(
            string key,
            [FromQuery] string languageCode = null)
        {
            try
            {
                var appRequest = new ResourceRequestDto
                {
                    WithKey      = key,
                    LanguageCode = languageCode
                };
                var appResponse = await _resourcesAppService.GetAsync(appRequest);

                var response = appResponse.ToResponseModel <ResourceModel, ResourceDto>();
                return(Ok(response));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(StatusCode((int)HttpStatusCode.InternalServerError));
            }
        }
        public async Task <ResourceDto> GetAsync(ResourceRequestDto request)
        {
            using (var uow = UowManager.Begin())
                using (UowManager.Current.OverrideCurrentLanguageCode(request.LanguageCode ?? Session.LanguageCode))
                {
                    var dto = await _resourceRepository.FirstOrDefaultAsync(
                        x =>
                        (!request.WithId.HasValue || (request.WithId.HasValue && request.WithId.Value == x.Id)) &&
                        (string.IsNullOrEmpty(request.WithKey) || (!string.IsNullOrEmpty(request.WithKey) && request.WithKey == x.Key)) &&
                        (!request.MustBePublic.HasValue || (request.MustBePublic.HasValue && request.MustBePublic == !x.ResourceGroup.IsPrivate))
                        ,
                        new GetProjectedOptions <Resource, int, ResourceDto>
                    {
                        Projection = ResourceDto.Projection
                    });

                    if (dto is null)
                    {
                        throw new AppException();
                    }

                    return(dto);
                }
        }