public async Task <Video> EditVideoAsync(VideoEditBindingModel model)
        {
            Validator.EnsureNotNull(model, ValidationConstants.VideoDefinedMessage);
            Validator.EnsureStringNotNullOrEmpty(model.Title, ValidationConstants.VideoTitleMessage);
            Validator.EnsureStringNotNullOrEmpty(model.Slug, ValidationConstants.VideoSlugMessage);
            Validator.EnsureStringNotNullOrEmpty(model.Description, ValidationConstants.VideoDescriptionMessage);
            Validator.EnsureStringNotNullOrEmpty(model.UserId, ValidationConstants.VideoAuthorMessage);
            Validator.EnsureStringNotNullOrEmpty(model.YoutubeId, ValidationConstants.VideoYoutubeMessage);

            var dbVideo = this.DbContext.Videos.Find(model.Id);

            var youtubeId = model.YoutubeId;

            if (model.YoutubeId.Contains("youtube.com"))
            {
                youtubeId = model.YoutubeId.Split("v=").Last().Substring(0, 11);
            }
            else if (model.YoutubeId.Contains("youtu.be"))
            {
                youtubeId = model.YoutubeId.Split("/").Last().Substring(0, 11);
            }

            dbVideo.YoutubeId   = youtubeId;
            dbVideo.UserId      = model.UserId;
            dbVideo.Description = model.Description;
            dbVideo.Title       = model.Title;
            dbVideo.Slug        = model.Slug;

            await this.DbContext.SaveChangesAsync();

            return(dbVideo);
        }
        public async Task <IActionResult> Edit(VideoEditBindingModel model)
        {
            var video = await this.videosService.EditVideoAsync(model);

            SetSuccesfullMessage(EditedSuccessfully, Video);

            return(this.RedirectToAction("Details", new { id = video.Id, slug = video.Slug }));
        }