public async Task <IActionResult> DownloadFile(int EpisodId, CancellationToken cancellationToken)
        {
            CourseEpisod selectedEpisod = await courseEpisodRepository.GetByIdAsync(EpisodId, cancellationToken);

            string filepath = Path.Combine(hostingEnvironment.WebRootPath, "CourseDemo", "EpisodVideo", selectedEpisod.FileName);

            if (selectedEpisod.IsFree)
            {
                byte[] file = System.IO.File.ReadAllBytes(filepath);
                return(File(file, "application/force-download", selectedEpisod.FileName));
            }

            if (User.Identity.IsAuthenticated)
            {
                if (orderRepository.IsBuyByUser(Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value), selectedEpisod.CourseId))
                {
                    byte[] file = System.IO.File.ReadAllBytes(filepath);
                    return(File(file, "application/force-download", selectedEpisod.FileName));
                }
            }

            TempData["Message"] = "ابتدا باید دوره را خریداری کنید";

            return(Redirect($"/Course/Detail?CourseId={selectedEpisod.CourseId}"));
        }
        public async Task OnGetAsync(int Id, int CourseId, CancellationToken cancellationToken)
        {
            Model.CourseId = CourseId;
            CourseEpisod result = await courseEpisodRepository.GetByIdAsync(Id, cancellationToken);

            Model.IsFree   = result.IsFree;
            Model.Title    = result.Title;
            Model.FileName = result.FileName;
            Model.Id       = result.Id;
        }
        public async Task OnGetAsync(int Id, int CourseId, CancellationToken cancellationToken)
        {
            CourseEpisod episod = await courseEpisodRepository.GetByIdAsync(Id, cancellationToken);

            ViewData["CourseId"] = CourseId;

            //Create video path
            string videoUploadPath = Path.Combine(hostingEnvironment.WebRootPath, "CourseDemo", "EpisodVideo", episod.FileName);

            //Delete Old video Path
            fileHandler.DeleteOldImageThumb(videoUploadPath, string.Empty);

            //Delete Old Big Thumbnail
            fileHandler.DeleteOldImageThumb(Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "BigEpisodThump", episod.FileName.ChangeExtension(".jpg")), string.Empty);

            //Delete Old Main Thumbnail
            fileHandler.DeleteOldImageThumb(Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "MainEpisodThump", episod.FileName.ChangeExtension(".jpg")), string.Empty);

            await courseEpisodRepository.DeleteAsync(episod, cancellationToken);
        }
        public async Task <IActionResult> OnPostAsync(CancellationToken cancellationToken)
        {
            CourseEpisod episod = await courseEpisodRepository.GetByIdAsync(Model.Id, cancellationToken);

            episod.Title    = Model.Title;
            episod.IsFree   = Model.IsFree;
            episod.CourseId = Model.CourseId;

            if (Assert.NotNull(Model.FormFile))
            {
                //Save video
                string videoUploadPath  = Path.Combine(hostingEnvironment.WebRootPath, "CourseDemo", "EpisodVideo");
                string videoNewFileName = await fileHandler.UploadFileAsync(Model.FormFile, videoUploadPath, cancellationToken, Path.Combine(videoUploadPath, episod.FileName));

                //Delete Old video Path
                fileHandler.DeleteOldImageThumb(Path.Combine(videoUploadPath, episod.FileName), string.Empty);

                //Delete Old Big Thumbnail
                fileHandler.DeleteOldImageThumb(Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "BigEpisodThump", episod.FileName.ChangeExtension(".jpg")), string.Empty);

                //Delete Old Main Thumbnail
                fileHandler.DeleteOldImageThumb(Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "MainEpisodThump", episod.FileName.ChangeExtension(".jpg")), string.Empty);

                //Create Big Thumbnail Path From Video & Create Thumbnail Path
                string          outPutPath    = Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "BigEpisodThump", videoNewFileName.ChangeExtension(".jpg"));
                string          videofilepath = Path.Combine(videoUploadPath, videoNewFileName);
                FileInformation fileinfo      = await fileHandler.GetThumonailFromVideoAsync(videofilepath, outPutPath, cancellationToken);

                //Create  Main Thumbnail
                string SaveThumnailPath = Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "MainEpisodThump", videoNewFileName.ChangeExtension(".jpg"));
                fileHandler.CreateImageThumb(outPutPath, SaveThumnailPath, 90);

                episod.EpisodeTime = fileinfo.MetaData.Duration;
                episod.FileName    = videoNewFileName;
            }
            await courseEpisodRepository.UpdateAsync(episod, cancellationToken);

            return(RedirectToPage("/Admin/EpisodManagement/Index", new { Model.CourseId }));
        }
Beispiel #5
0
        public async Task <IActionResult> OnPostAsync(CancellationToken cancellationToken)
        {
            CourseEpisod episod = new CourseEpisod
            {
                IsFree = Model.IsFree,
                Title  = Model.Title
            };
            //Save File
            string videoUploadPath  = Path.Combine(hostingEnvironment.WebRootPath, "CourseDemo", "EpisodVideo");
            string videoNewFileName = await fileHandler.UploadFileAsync(Model.FormFile, videoUploadPath, cancellationToken);

            //Create Thumbnail Path
            var    videofilepath = Path.Combine(videoUploadPath, videoNewFileName);
            string outPutPath    = Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "BigEpisodThump", videoNewFileName.ChangeExtension(".jpg"));

            //Create Thumbnail Path From Video
            FileInformation fileinfo = await fileHandler.GetThumonailFromVideoAsync(videofilepath, outPutPath, cancellationToken);

            string SaveThumnailPath = Path.Combine(hostingEnvironment.WebRootPath, "images", "CourseImages", "MainEpisodThump", videoNewFileName.ChangeExtension(".jpg"));

            fileHandler.CreateImageThumb(outPutPath, SaveThumnailPath, 90);

            fileHandler.DeleteOldImageThumb(outPutPath, string.Empty);

            episod.EpisodeTime = fileinfo.MetaData.Duration;

            episod.FileName = videoNewFileName;

            Course course = await courseRepository.GetByIdAsync(Model.CourseId, cancellationToken);

            course.TotalEpisodTime += episod.EpisodeTime;
            episod.Course           = course;
            episod.CourseId         = course.Id;
            await courseEpisodRepository.AddAsync(episod, cancellationToken);

            return(RedirectToPage("/Admin/EpisodManagement/Index", new { Model.CourseId }));
        }