示例#1
0
        private async Task <HttpResponseMessage> ValidateInput(DowloadFileSetModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
            }

            if (!await VerifyUserTokenAsync(model.Token, model.UserId))
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized));
            }
            return(null);
        }
示例#2
0
        public async Task <HttpResponseMessage> GetCertificateTemplate([FromUri] DowloadFileSetModel model)
        {
            var validation = await ValidateInput(model);

            if (validation != null)
            {
                return(validation);
            }

            var    courseTypes = GetPermittedEntity(Repo.CourseTypes);
            var    courseType  = (await courseTypes.FirstOrDefaultAsync(c => c.Id == model.EntitySetId)) ?? new DataAccess.CourseType();
            string path        = courseType.GetServerPath();

            return(StreamToResponse(new FileStream(path, FileMode.Open), courseType.CertificateFileName ?? Path.GetFileName(path)));
        }
示例#3
0
        public async Task <HttpResponseMessage> GetCertificatesForCourse([FromUri] DowloadFileSetModel model)
        {
            var validation = await ValidateInput(model);

            if (validation != null)
            {
                return(validation);
            }

            var courses = GetPermittedEntity(CreateCertificates.GetCourseIncludes(Repo));
            var course  = await courses.FirstAsync(c => c.Id == model.EntitySetId);

            return(StreamToResponse(
                       CreateCertificates.CreatePptxCertificates(course, course.CourseFormat.CourseType.GetServerPath()),
                       CreateCertificates.CertificateName(course)));
        }
示例#4
0
        public async Task <HttpResponseMessage> GetTimetableForCourse([FromUri] DowloadFileSetModel model)
        {
            var validation = await ValidateInput(model);

            if (validation != null)
            {
                return(validation);
            }

            var courses = GetPermittedEntity(CreateDocxTimetable.GetCourseIncludes(Repo));
            var course  = await courses.FirstAsync(c => c.Id == model.EntitySetId);

            //todo - check if a faculty member, otherwise download participant timetable
            return(StreamToResponse(
                       CreateDocxTimetable.CreateTimetableDocx(course, WebApiConfig.DefaultTimetableTemplatePath, true),
                       CreateDocxTimetable.TimetableName(course)));
        }
示例#5
0
        public async Task <HttpResponseMessage> GetCandidateReading([FromUri] DowloadFileSetModel model)
        {
            var validation = await ValidateInput(model);

            if (validation != null)
            {
                return(validation);
            }

            var courseTypes = GetPermittedEntity(Repo.CourseTypes.Include(s => s.CandidatePrereadings));
            var courseType  = await courseTypes.FirstAsync(c => c.Id == model.EntitySetId);

            var read = courseType.CandidatePrereadings.FirstOrDefault();

            if (read == null)
            {
                ModelState.AddModelError("EntitySetId", "no resources found for the provided key");
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
            }

            return(StreamToResponse(new FileStream(read.GetServerPath(), FileMode.Open), courseType.Abbreviation + " Reading.zip"));
        }
示例#6
0
        public async Task <HttpResponseMessage> GetResourcesForScenario([FromUri] DowloadFileSetModel model)
        {
            var validation = await ValidateInput(model);

            if (validation != null)
            {
                return(validation);
            }

            var scenarios = GetPermittedEntity(Repo.Scenarios.Include(s => s.ScenarioResources));
            var scenario  = await scenarios.FirstAsync(c => c.Id == model.EntitySetId);

            var sr = scenario.ScenarioResources.FirstOrDefault();

            if (sr == null)
            {
                ModelState.AddModelError("EntitySetId", "no resources found for the provided key");
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
            }

            return(StreamToResponse(new FileStream(sr.GetServerPath(), FileMode.Open), scenario.BriefDescription + ".zip"));
        }