private CarouselWidgetForm ToCarouselWidgetFormModel(IFormCollection formCollection)
        {
            var model = new CarouselWidgetForm();

            model.Name         = formCollection["name"];
            model.WidgetZoneId = int.Parse(formCollection["widgetZoneId"]);
            int.TryParse(formCollection["displayOrder"], out int displayOrder);
            model.DisplayOrder = displayOrder;
            if (DateTimeOffset.TryParse(formCollection["publishStart"], out DateTimeOffset publishStart))
            {
                model.PublishStart = publishStart;
            }

            if (DateTimeOffset.TryParse(formCollection["publishEnd"], out DateTimeOffset publishEnd))
            {
                model.PublishEnd = publishEnd;
            }

            int numberOfItems = int.Parse(formCollection["numberOfItems"]);

            for (var i = 0; i < numberOfItems; i++)
            {
                var item = new CarouselWidgetItemForm();
                item.Caption     = formCollection[$"items[{i}][caption]"];
                item.TargetUrl   = formCollection[$"items[{i}][targetUrl]"];
                item.Image       = formCollection[$"items[{i}][image]"];
                item.UploadImage = formCollection.Files[$"items[{i}][uploadImage]"];
                model.Items.Add(item);
            }

            return(model);
        }
Пример #2
0
        public async Task <IActionResult> Put(long id, [FromForm] CarouselWidgetForm model)
        {
            ModelBindUploadFiles(model);

            foreach (var item in model.Items)
            {
                if (item.UploadImage != null)
                {
                    if (!string.IsNullOrWhiteSpace(item.Image))
                    {
                        await _mediaService.DeleteMediaAsync(item.Image);
                    }
                    item.Image = await SaveFile(item.UploadImage);
                }
            }

            var widgetInstance = await _widgetInstanceRepository.Query().FirstOrDefaultAsync(x => x.Id == id);

            if (widgetInstance == null)
            {
                return(NotFound());
            }

            widgetInstance.Name         = model.Name;
            widgetInstance.PublishStart = model.PublishStart;
            widgetInstance.PublishEnd   = model.PublishEnd;
            widgetInstance.WidgetZoneId = model.WidgetZoneId;
            widgetInstance.DisplayOrder = model.DisplayOrder;
            widgetInstance.Data         = JsonConvert.SerializeObject(model.Items);

            await _widgetInstanceRepository.SaveChangesAsync();

            return(Accepted());
        }
Пример #3
0
        public async Task <IActionResult> Post([FromForm] CarouselWidgetForm model)
        {
            ModelBindUploadFiles(model);

            if (model.Items.Any(x => x.UploadImage == null))
            {
                ModelState.AddModelError("Images", "Images is required");
                return(BadRequest(ModelState));
            }

            foreach (var item in model.Items)
            {
                item.Image = await SaveFile(item.UploadImage);
            }

            var widgetInstance = new WidgetInstance
            {
                Name         = model.Name,
                WidgetId     = "CarouselWidget",
                WidgetZoneId = model.WidgetZoneId,
                PublishStart = model.PublishStart,
                PublishEnd   = model.PublishEnd,
                DisplayOrder = model.DisplayOrder,
                Data         = JsonConvert.SerializeObject(model.Items)
            };

            _widgetInstanceRepository.Add(widgetInstance);
            await _widgetInstanceRepository.SaveChangesAsync();

            return(CreatedAtAction(nameof(Get), new { id = widgetInstance.Id }, null));
        }
Пример #4
0
        private CarouselWidgetForm ModelBindUploadFiles(CarouselWidgetForm model)
        {
            for (var i = 0; i < model.Items.Count; i++)
            {
                model.Items[i].UploadImage = Request.Form.Files[$"items[{i}][uploadImage]"];
            }

            return(model);
        }
Пример #5
0
        public IActionResult Get(long id)
        {
            var widgetInstance = _widgetInstanceRepository.Query().FirstOrDefault(x => x.Id == id);
            var model          = new CarouselWidgetForm
            {
                Id           = widgetInstance.Id,
                Name         = widgetInstance.Name,
                WidgetZoneId = widgetInstance.WidgetZoneId,
                PublishStart = widgetInstance.PublishStart,
                PublishEnd   = widgetInstance.PublishEnd,
                Items        = JsonConvert.DeserializeObject <IList <CarouselWidgetItemForm> >(widgetInstance.Data)
            };

            foreach (var item in model.Items)
            {
                item.ImageUrl = _mediaService.GetMediaUrl(item.Image);
            }

            return(Json(model));
        }
Пример #6
0
        public async Task <ActionResult <CarouselWidgetForm> > Get(long id)
        {
            var totalWidgets   = _widgetInstanceRepository.Query().ToList().Count();
            var widgetInstance = await _widgetInstanceRepository.Query().FirstOrDefaultAsync(x => x.Id == id);

            var model = new CarouselWidgetForm
            {
                Id           = widgetInstance.Id,
                Name         = widgetInstance.Name,
                WidgetZoneId = widgetInstance.WidgetZoneId,
                PublishStart = widgetInstance.PublishStart,
                PublishEnd   = widgetInstance.PublishEnd,
                DisplayOrder = widgetInstance.DisplayOrder,
                Items        = JsonConvert.DeserializeObject <IList <CarouselWidgetItemForm> >(widgetInstance.Data)
            };

            foreach (var item in model.Items)
            {
                item.ImageUrl = _mediaService.GetMediaUrl(item.Image);
            }

            return(model);
        }