public async Task <IActionResult> GetById(Guid?id)
        {
            var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim);

            var serviceModel = new GetProductAttributeByIdServiceModel
            {
                Id             = id.Value,
                Username       = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value,
                OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value),
                Language       = CultureInfo.CurrentCulture.Name
            };

            var validator = new GetProductAttributeByIdModelValidator();

            var validationResult = await validator.ValidateAsync(serviceModel);

            if (validationResult.IsValid)
            {
                var productAttribute = await this.productAttributesService.GetProductAttributeByIdAsync(serviceModel);

                if (productAttribute != null)
                {
                    var response = new ProductAttributeResponseModel
                    {
                        Id    = productAttribute.Id,
                        Name  = productAttribute.Name,
                        Order = productAttribute.Order,
                        Items = productAttribute.ProductAttributeItems.OrEmptyIfNull().Select(x => new ProductAttributeItemResponseModel
                        {
                            Id               = x.Id,
                            Name             = x.Name,
                            Order            = x.Order,
                            LastModifiedDate = x.LastModifiedDate,
                            CreatedDate      = x.CreatedDate
                        }),
                        LastModifiedDate = productAttribute.LastModifiedDate,
                        CreatedDate      = productAttribute.CreatedDate
                    };

                    return(this.StatusCode((int)HttpStatusCode.OK, response));
                }
                else
                {
                    return(this.StatusCode((int)HttpStatusCode.NotFound));
                }
            }

            return(this.StatusCode((int)HttpStatusCode.UnprocessableEntity));
        }
Exemplo n.º 2
0
        public async Task <ProductAttributeServiceModel> GetProductAttributeByIdAsync(GetProductAttributeByIdServiceModel model)
        {
            var productAttribute = await this.context.ProductAttributes.FirstOrDefaultAsync(x => x.Id == model.Id && x.SellerId == model.OrganisationId && x.IsActive);

            if (productAttribute != null)
            {
                var productAttributeServiceModel = new ProductAttributeServiceModel
                {
                    Id               = productAttribute.Id,
                    Order            = productAttribute.Order,
                    LastModifiedDate = productAttribute.LastModifiedDate,
                    CreatedDate      = productAttribute.CreatedDate
                };

                var productAttributeTranslations = productAttribute.ProductAttributeTranslations.FirstOrDefault(x => x.Language == model.Language && x.IsActive);

                if (productAttributeTranslations == null)
                {
                    productAttributeTranslations = productAttribute.ProductAttributeTranslations.FirstOrDefault(x => x.IsActive);
                }

                productAttributeServiceModel.Name = productAttributeTranslations?.Name;

                var productAttributeItems = await this.context.ProductAttributeItems.Where(x => x.ProductAttributeId == productAttribute.Id && x.IsActive).ToListAsync();

                if (productAttributeItems != null)
                {
                    var productAttributeItemServiceModels = new List <ProductAttributeItemServiceModel>();

                    foreach (var productAttributeItem in productAttributeItems)
                    {
                        var productAttributeItemServiceModel = new ProductAttributeItemServiceModel
                        {
                            Id               = productAttributeItem.Id,
                            Order            = productAttributeItem.Order,
                            LastModifiedDate = productAttributeItem.LastModifiedDate,
                            CreatedDate      = productAttributeItem.CreatedDate
                        };

                        var productAttributeItemTranslations = await this.context.ProductAttributeItemTranslations.FirstOrDefaultAsync(x => x.ProductAttributeItemId == productAttributeItem.Id && x.Language == model.Language && x.IsActive);

                        if (productAttributeItemTranslations == null)
                        {
                            productAttributeItemTranslations = await this.context.ProductAttributeItemTranslations.FirstOrDefaultAsync(x => x.ProductAttributeItemId == productAttributeItem.Id && x.IsActive);
                        }

                        productAttributeItemServiceModel.Name = productAttributeItemTranslations?.Name;

                        productAttributeItemServiceModels.Add(productAttributeItemServiceModel);
                    }

                    productAttributeServiceModel.ProductAttributeItems = productAttributeItemServiceModels;
                }

                return(productAttributeServiceModel);
            }

            return(default);