Ejemplo n.º 1
0
        public async Task <JsonResult> CreateNewProductItem(AdminStoreItem newProductItem)
        {
            // newProductItem.DateCreate = UnixTime.UtcNow();
            var newAdminItem = await _dbProvider.ContextActionAsync(async connection =>
            {
                var maxId = _storeService.GetMaxStoreId(connection);
                maxId++;
                newProductItem.Id  = maxId;
                var fullProductUrl = await _saveToCdnAndGetUrl(newProductItem);
                object props       = new { };
                switch (newProductItem.ProductType.Id)
                {
                case (byte)ProductTypeIds.Premium:
                    props = ProductPropertyHelper.CreatePremuiumProperties(
                        UnixTime.OneDayInSecond *newProductItem.Duration.Days);
                    break;

                case (byte)ProductTypeIds.Booster:

                    var boosterProps = newProductItem.Properties
                                       .ToSerealizeString()
                                       .ToSpecificModel <List <string> >()[0]
                                       .ToSpecificModel <BoosterProductProperty>();
                    boosterProps.Duration = UnixTime.OneDayInSecond *newProductItem.Duration.Days;
                    props = boosterProps;
                    break;
                }

                var newProductStoreDataModel = new ProductStoreDataModel
                {
                    Id       = newProductItem.Id,
                    Property = new ProductItemProperty
                    {
                        ImgCollectionImg = new ImgCollectionField
                        {
                            Store = fullProductUrl,
                            Chest = fullProductUrl
                        },
                        TranslateText = newProductItem.L10N,
                        Property      = props
                    },
                    ProductTypeId = (byte)newProductItem.ProductType.Id,
                    Trash         = !newProductItem.Active,
                    Cost          = (decimal)newProductItem.Price,
                    Date          = DateTime.UtcNow,
                    CurrencyCode  = newProductItem.Currency.Name
                };

                var newItem = _storeService.AddOrUpdateProductItem(connection, newProductStoreDataModel);
                return(new AdminStoreItem(newItem, new AdminStoreData()));
            });

            return(Json(newAdminItem));
        }