コード例 #1
0
        public override void LoadData()
        {
            base.LoadData();

            this.Parent.Data.PropertyChanged += Data_PropertyChanged;

            this.teamAdapter = new ViewModelsAdapter <TeamChoiceVM, TeamData>(CreateTeamVM);
            this.teamAdapter.Adapt(this.Teams, this.Parent.Data.TeamList);

            if (!string.IsNullOrEmpty(this.Parent.Data.StandSoundPath))
            {
                this.StandSound          = new MediaVM();
                this.StandSound.FilePath = this.Parent.Data.StandSoundPath;
                this.StandSound.LoadFile();
            }

            if (!string.IsNullOrEmpty(this.Parent.Data.QuestionSoundPath))
            {
                this.QuestionSound          = new MediaVM();
                this.QuestionSound.FilePath = this.Parent.Data.QuestionSoundPath;
                this.QuestionSound.LoadFile();
            }

            if (!string.IsNullOrEmpty(this.Parent.Data.CheckSoundPath))
            {
                this.checkSound          = new MediaVM();
                this.checkSound.FilePath = this.Parent.Data.CheckSoundPath;
                this.checkSound.LoadFile();
            }

            LoadVideos();
        }
コード例 #2
0
 /// <summary>
 /// 選択しているメディアが変わるとき、以前のメディアを停止します。
 /// </summary>
 private void SelectedMediaChanging(MediaVM old)
 {
     if (this.SelectedMedia != null)
     {
         this.SelectedMedia.Stop();
     }
 }
コード例 #3
0
 /// <summary>
 /// 選択しているメディアが変わるとき、以前のメディアを停止します。
 /// </summary>
 private void SelectedMediaChanging(MediaVM old)
 {
     if (this.SelectedMedia != null)
     {
         this.SelectedMedia.Stop();
         this.SelectedMedia.MediaPlayed -= SelectedMedia_MediaPlayed;
         this.SelectedMedia.MediaStoped -= SelectedMedia_MediaStoped;
     }
 }
コード例 #4
0
        public ActionResult Index()
        {
            var model = new MediaVM
            {
                Medias     = unitOfWork.MediaRepository.GetAll(),
                Categories = unitOfWork.CategoryRepository.GetAll()
            };

            return(View(model));
        }
コード例 #5
0
 /// <summary>
 /// Validates the media details.
 /// </summary>
 private void Validate(MediaVM vm)
 {
     if (vm.OverlayTags != null)
     {
         foreach (var t in vm.OverlayTags)
         {
             Validate(t.Location, $"tag '{t.TagId}'");
         }
     }
 }
コード例 #6
0
        /// <summary>
        /// Updates the media description.
        /// </summary>
        public async Task UpdateAsync(string key, MediaVM vm)
        {
            Validate(vm);

            var media = await _db.Media
                        .Include(x => x.Tags)
                        .FirstOrDefaultAsync(x => x.Key == key);

            if (media == null)
            {
                throw new OperationException($"Media '{key}' does not exist.");
            }

            _mapper.Map(vm, media);

            var newTagIds = (vm.OverlayTags?.Select(x => x.TagId) ?? new int[0])
                            .Concat(vm.ExtraTags?.Select(x => x.TagId) ?? new int[0])
                            .ToList();

            var existingTagIds = await _db.Tags
                                 .Where(x => newTagIds.Contains(x.Id))
                                 .Select(x => x.Id)
                                 .ToListAsync();

            var missingTagIds = newTagIds.Except(existingTagIds).ToList();

            if (missingTagIds.Any())
            {
                throw new OperationException($"Tag(s) {missingTagIds.JoinString(", ")} do not exist.");
            }

            var newTags = new List <MediaTagBinding>();

            if (vm.OverlayTags != null)
            {
                newTags.AddRange(_mapper.Map <MediaTagBinding[]>(vm.OverlayTags));
            }

            if (vm.ExtraTags != null)
            {
                newTags.AddRange(_mapper.Map <MediaTagBinding[]>(vm.ExtraTags));
            }

            foreach (var tag in newTags)
            {
                tag.Media = media;
            }

            _db.MediaTags.RemoveRange(media.Tags.Where(x => x.Type != TagBindingType.Inherited));
            _db.MediaTags.AddRange(newTags);

            await _db.SaveChangesAsync();
        }
コード例 #7
0
        // new Media
        public ActionResult NewMedia()
        {
            var genres     = _context.Genres;
            var mediaTypes = _context.MediaTypes;
            var vm         = new MediaVM
            {
                Media      = new Media(),
                Genres     = genres,
                MediaTypes = mediaTypes
            };

            return(View(vm));
        }
コード例 #8
0
        private MediaVM CreateMediaViewModel(string arg)
        {
            var baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var media   = new MediaVM()
            {
                FilePath = PathUtility.GetAbsolutePath(baseDir, arg)
            };

            media.LoadFile();
            media.Media.MediaEnded += Media_MediaEnded;
            media.MediaPlayed      += Media_MediaPlayed;

            return(media);
        }
コード例 #9
0
 private void SubjectChanged()
 {
     if (this.SelectedSubject != null)
     {
         this.Medias.Clear();
         foreach (string path in Directory.EnumerateFiles(this.SelectedSubject.Path, "*", SearchOption.AllDirectories))
         {
             var media = new MediaVM()
             {
                 FilePath = path
             };
             media.LoadFile();
             this.Medias.Add(media);
         }
         this.PlayAnswerCommand.RaiseCanExecuteChanged();
     }
 }
コード例 #10
0
        public ActionResult Create(MediaVM media)
        {
            if (ModelState.IsValid)
            {
                Media  m    = new Media();
                string path = Server.MapPath("~/images/");
                media.Media_Path.SaveAs(path + media.Media_Path.FileName);
                m.Media_Path = media.Media_Path.FileName;
                m.Coach_id   = media.Coach_id;
                m.Player_id  = media.Player_id;
                db.Media.Add(m);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.Coach_id  = new SelectList(db.Users, "Id", "Email", media.Coach_id);
            ViewBag.Player_id = new SelectList(db.Players, "ID", "Full_Name", media.Player_id);
            return(View(media));
        }
コード例 #11
0
        public ActionResult Edit(int id)
        {
            if (id <= 0)
            {
                return(Json(new { status = false, message = "Bad parameter was provided." }));
            }

            var retrievedMedia = unitOfWork.MediaRepository.GetById(id);

            if (retrievedMedia is null)
            {
                return(Json(new { status = false, message = "No media found for the given parameter" }));
            }

            var model = new MediaVM
            {
                Medias     = unitOfWork.MediaRepository.GetAll(),
                Categories = unitOfWork.CategoryRepository.GetAll(),
                Media      = retrievedMedia
            };

            return(PartialView("_EditMedia", model));
        }
コード例 #12
0
 private void DeleteMediaViewModel(MediaVM media)
 {
     media.Media.MediaEnded -= Media_MediaEnded;
     media.MediaPlayed      -= Media_MediaPlayed;
 }
コード例 #13
0
ファイル: MediaController.cs プロジェクト: impworks/isotope
 public Task Update(string key, [FromBody] MediaVM vm)
 {
     return(_mediaMgr.UpdateAsync(key, vm));
 }