public int Update(long id, CourseOutline request)
        {
            CourseOutline model    = GetById(id);
            var           validate = isExistsById(id, request);

            if (model == null)
            {
                return(0);
            }
            else if (validate == true)
            {
                return(1);
            }

            model.title            = request.title;
            model.courseId         = request.courseId;
            model.userGroupId      = request.userGroupId;
            model.visibility       = request.visibility;
            model.featureImage     = request.featureImage;
            model.interactiveVideo = request.interactiveVideo;
            model.duration         = request.duration;
            model.description      = request.description;
            model.updatedAt        = DateTime.Now;
            Save();

            return(2);
        }
        public bool Add(CourseOutline request)
        {
            var output   = false;
            var validate = isExists(request);

            if (validate == false)
            {
                request.createdAt = DateTime.Now;
                request.updatedAt = DateTime.Now;
                _context.CourseOutline.Add(request);
                Save();
                output = true;
            }
            return(output);
        }
 private bool isExists(CourseOutline request)
 {
     return(_context.CourseOutline.Where(x => x.title == request.title && x.courseId == request.courseId).Any());
 }
 private bool isExistsById(long id, CourseOutline request)
 {
     return(_context.CourseOutline.Where(x => x.title == request.title && x.userGroupId == request.userGroupId && x.id != id).Any());
 }
Example #5
0
        public async Task <IActionResult> Store([FromForm] CourseOutlineRequest request)
        {
            try
            {
                if (_userRepository.LogCurrentUser().canCreate == false)
                {
                    return(Unauthorized(_UnAuthorized));
                }


                CourseOutline model = new CourseOutline();
                model.title       = request.title;
                model.courseId    = request.courseId;
                model.userGroupId = request.userGroupId;
                model.visibility  = request.visibility;
                model.duration    = request.duration;
                model.description = request.description;
                model.Course      = request.Course;
                model.UserGroup   = request.UserGroup;


                RequiredFields modelRequest = new RequiredFields();
                modelRequest.CourseOutline = model;
                object validateFields = _validationService.ValidateRequest("Course Outline", modelRequest);
                if (JsonConvert.SerializeObject(validateFields).Length > 2)
                {
                    return(BadRequest(validateFields));
                }


                var checkExists = _context.CourseOutline.Where(x => x.title == request.title && x.courseId == request.courseId).Any();
                if (checkExists == true)
                {
                    return(BadRequest(new GenericResult {
                        Response = false, Message = request.title + " is already exists"
                    }));
                }


                if (request.featureImage != null)
                {
                    if (request.featureImage.Length > 0)
                    {
                        Stream stream = request.featureImage.OpenReadStream();

                        var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                        string courseOutlineImageFolder = String.Format("{0}\\Content\\Images\\CourseOutline", path);

                        if (!Directory.Exists(courseOutlineImageFolder))
                        {
                            Directory.CreateDirectory(courseOutlineImageFolder);
                        }

                        var id        = Guid.NewGuid();
                        var extension = Path.GetExtension(request.featureImage.FileName);
                        var fileName  = id.ToString() + extension.ToString().ToLower();


                        using (var zipStream = new FileStream(Path.Combine(courseOutlineImageFolder, fileName), FileMode.Create))
                        {
                            request.featureImage.CopyTo(zipStream);
                        }
                        model.featureImage = fileName;
                    }
                }

                if (request.interactiveVideo != null)
                {
                    if (request.interactiveVideo.Length > 0)
                    {
                        Stream stream = request.interactiveVideo.OpenReadStream();


                        var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                        string courseOutlineVideoFolder = String.Format("{0}\\Content\\Video\\CourseOutline", path);

                        if (!Directory.Exists(courseOutlineVideoFolder))
                        {
                            Directory.CreateDirectory(courseOutlineVideoFolder);
                        }

                        var idVideo       = Guid.NewGuid();
                        var extension     = Path.GetExtension(request.interactiveVideo.FileName);
                        var fileNameVideo = idVideo.ToString() + extension.ToString().ToLower();

                        model.interactiveVideo = idVideo.ToString();


                        using (var zipStream = new FileStream(Path.Combine(courseOutlineVideoFolder, fileNameVideo), FileMode.Create))
                        {
                            request.interactiveVideo.CopyTo(zipStream);
                            using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Read))
                            {
                                archive.ExtractToDirectory(Path.Combine(courseOutlineVideoFolder, idVideo.ToString()));
                            }
                        }
                    }
                }
                _context.CourseOutline.Add(model);
                await _context.SaveChangesAsync();



                // start: Course Outline Prerequisite
                if (request.CourseOutlinePrerequisite != null)
                {
                    for (int copKey = 0; request.CourseOutlinePrerequisite.Count() > copKey; copKey++)
                    {
                        CourseOutlinePrerequisite copModel = new CourseOutlinePrerequisite();
                        copModel.courseOutlineId = model.id;
                        copModel.courseId        = request.courseId;
                        copModel.preRequisiteId  = request.CourseOutlinePrerequisite[copKey].preRequisiteId;
                        _context.CourseOutlinePrerequisite.Add(copModel);
                        await _context.SaveChangesAsync();
                    }
                }

                // start: Course Outline Milestone
                if (request.CourseOutlineMilestone != null)
                {
                    for (int comKey = 0; request.CourseOutlineMilestone.Count() > comKey; comKey++)
                    {
                        CourseOutlineMilestone comModel = new CourseOutlineMilestone();
                        comModel.courseOutlineId = model.id;
                        comModel.courseId        = request.courseId;
                        comModel.name            = request.CourseOutlineMilestone[comKey].name;
                        comModel.lessonCompleted = request.CourseOutlineMilestone[comKey].lessonCompleted;

                        if (request.CourseOutlineMilestoneResourceFile != null)
                        {
                            if (request.CourseOutlineMilestoneResourceFile[comKey].Length > 0)
                            {
                                Stream stream = request.CourseOutlineMilestoneResourceFile[comKey].OpenReadStream();

                                var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                                string courseOutlineMilestoneVideoFolder = String.Format("{0}\\Content\\Video\\CourseOutlineMilestone", path);

                                if (!Directory.Exists(courseOutlineMilestoneVideoFolder))
                                {
                                    Directory.CreateDirectory(courseOutlineMilestoneVideoFolder);
                                }

                                var milestoneId = Guid.NewGuid();

                                var extension         = Path.GetExtension(request.CourseOutlineMilestoneResourceFile[comKey].FileName);
                                var milestoneFileName = milestoneId.ToString() + extension.ToString().ToLower();


                                using (var zipStream = new FileStream(Path.Combine(courseOutlineMilestoneVideoFolder, milestoneFileName), FileMode.Create))
                                {
                                    request.CourseOutlineMilestoneResourceFile[comKey].CopyTo(zipStream);
                                }
                                comModel.resourceFile = milestoneFileName;
                            }
                        }

                        _context.CourseOutlineMilestone.Add(comModel);
                        await _context.SaveChangesAsync();
                    }
                }

                // start: Course Outline Media
                if (request.CourseOutlineMediaFile != null)
                {
                    for (int cofKey = 0; request.CourseOutlineMediaFile.Count() > cofKey; cofKey++)
                    {
                        CourseOutlineMedia cofModel = new CourseOutlineMedia();
                        cofModel.courseOutlineId = model.id;
                        cofModel.courseId        = request.courseId;


                        if (request.CourseOutlineMediaFile[cofKey].Length > 0)
                        {
                            Stream stream = request.CourseOutlineMediaFile[cofKey].OpenReadStream();

                            var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                            string courseOutlineMediaFolder = String.Format("{0}\\Content\\Video\\CourseOutlineMedia", path);

                            if (!Directory.Exists(courseOutlineMediaFolder))
                            {
                                Directory.CreateDirectory(courseOutlineMediaFolder);
                            }

                            var mediaId = Guid.NewGuid();

                            var extension     = Path.GetExtension(request.CourseOutlineMediaFile[cofKey].FileName);
                            var mediaFileName = mediaId.ToString() + extension.ToString().ToLower();


                            using (var zipStream = new FileStream(Path.Combine(courseOutlineMediaFolder, mediaFileName), FileMode.Create))
                            {
                                request.CourseOutlineMediaFile[cofKey].CopyTo(zipStream);
                            }
                            cofModel.resourceFile = mediaFileName;
                        }

                        _context.CourseOutlineMedia.Add(cofModel);
                        await _context.SaveChangesAsync();
                    }
                }

                return(Ok(new GenericResult {
                    Response = true, Message = request.title + " has been successfully created"
                }));
            }
            catch (Exception e)
            {
                return(BadRequest(e));
            }
        }