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