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)); }
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);