public async Task <IActionResult> Edit([Bind] TvItemEditViewModel model) { TvItem item = await _tvItemService.FetchTvItemAsync(model.TvItem.ID); if (ModelState.IsValid) { // update item item.Title = model.TvItem.Title; item.StartTime = model.TvItem.StartTime; item.EndTime = model.TvItem.EndTime; item.Duration = model.TvItem.Duration; // update locations item.Locations = new List <TvItemLocation>(); if (model.LocationCheckboxes.LocationBanskaBystrica) { item.Locations.Add(new TvItemLocation() { TvItemId = item.ID, Location = Location.BanskaBystrica }); } if (model.LocationCheckboxes.LocationKosice) { item.Locations.Add(new TvItemLocation() { TvItemId = item.ID, Location = Location.Kosice }); } if (model.LocationCheckboxes.LocationZilina) { item.Locations.Add(new TvItemLocation() { TvItemId = item.ID, Location = Location.Zilina }); } await _tvItemService.UpdateTvItemAsync(item); await _eventService.AddWebServerLogAsync(User.Identity.Name, WebServerLogType.ItemUpdate, "", item.ID); return(RedirectToAction(nameof(Index))); } // filter deleted files model.TvItem.Files = item.Files.Where(f => f.Deleted == false).ToList(); return(View(model)); }
public async Task <IActionResult> AddFiles(int id, [FromForm] List <IFormFile> files, [FromForm] int duration) { if (ModelState.IsValid) { // add item var model = new TvItemEditViewModel(await _tvItemService.FetchTvItemAsync(id)); // add files try { if (model.TvItem.Type == TvItemType.Video) { if (files.Count > 1) { ModelState.AddModelError("", "Only 1 file is allowed for video TV item type."); } if (duration < 3) { ModelState.AddModelError("", $"Incorrect video duration [{duration}]. Must be at least 4 seconds."); } if (ModelState.ErrorCount > 0) { return(View("Edit", model)); } model.TvItem.Duration = duration; await _fileService.ReplaceVideoFileAsync(model.TvItem, files[0]); } else if (model.TvItem.Type == TvItemType.Image) { if (files.Count > 1) { ModelState.AddModelError("", "Only 1 file is allowed for image TV item type."); return(View("Edit", model)); } await _fileService.ReplaceImageFileAsync(model.TvItem, files[0]); } else if (model.TvItem.Type == TvItemType.Gallery) { await _fileService.SaveImageFilesAsync(model.TvItem, files); } } catch (Exception e) { ModelState.AddModelError("", e.Message); // filter deleted files model.TvItem.Files = model.TvItem.Files.Where(f => f.Deleted == false).ToList(); return(View("Edit", model)); } await _eventService.AddWebServerLogAsync(User.Identity.Name, WebServerLogType.ItemUpdate, "", model.TvItem.ID); //return RedirectToAction("Edit", new { id }); } // todo: log model state error return(RedirectToAction("Edit", new { id })); }
public async Task <IActionResult> Edit(int id) { var model = new TvItemEditViewModel(await _tvItemService.FetchTvItemAsync(id, true)); return(View(model)); }