Пример #1
0
        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));
        }
Пример #2
0
        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 }));
        }
Пример #3
0
        public async Task <IActionResult> Edit(int id)
        {
            var model = new TvItemEditViewModel(await _tvItemService.FetchTvItemAsync(id, true));

            return(View(model));
        }