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); }
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))); }
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))); }
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))); }
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")); }
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")); }