public HttpResponseMessage Enrol(string code) { ServerUtils.LogTelemetryEvent(User.Identity.Name, "Enrol"); ServiceData.Models.Study found = _studyRepository.Search( st => st.Code == code ).FirstOrDefault(); ServiceData.Models.User thisUser = _userRepository.Search( usr => usr.Email == User.Identity.Name ).FirstOrDefault(); if (found != null && thisUser != null && !found.StudyEnrolments.Any(en => en.UserId == thisUser.Id)) { Models.StudyEnrolment enrol = new Models.StudyEnrolment { CreatedAt = DateTime.UtcNow, StudyId = found.Id, Enrolled = true, UserId = thisUser.Id }; var serviceMod = Models.StudyEnrolment.ToServiceModel(enrol, true, true); var finalRes = _studyEnrolmentRepository.Insert(serviceMod); return(Request.CreateResponse(HttpStatusCode.OK, finalRes)); } return(Request.CreateResponse(HttpStatusCode.NotFound)); }
public static Study ToAppModel(ServiceData.Models.Study given, bool includeOwner) { if (given == null) { return(null); } Study appStudy = new Study { Id = given.Id, CreatedAt = given.CreatedAt, Name = given.Name, Active = given.Active, Code = given.Code, ManagerId = given.ManagerId }; if (given.Manager != null && includeOwner) { appStudy.Manager = User.ToAppModel(given.Manager); } if (given.StudyEnrolments != null) { appStudy.StudyEnrolments = new List <StudyEnrolment>(); foreach (ServiceData.Models.StudyEnrolment se in given.StudyEnrolments) { appStudy.StudyEnrolments.Add(StudyEnrolment.ToAppModel(se, false, true)); } } return(appStudy); }
// GET: Studies/Details/5 public async Task <ActionResult> Details(int?id) { if (!await IsAdmin()) { return(new HttpUnauthorizedResult()); } await LoadViewBag(); IReadWriteRepository <ServiceData.Models.Study> _studyRepository = new StudyRepository(); ServiceData.Models.Study study = _studyRepository.GetById(id.Value); if (study == null) { return(HttpNotFound()); } return(View(Models.Study.ToAppModel(study, false))); }
// GET: Studies/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } await LoadViewBag(); IReadWriteRepository <ServiceData.Models.Study> _studyRepository = new StudyRepository(); ServiceData.Models.Study study = _studyRepository.GetById(id.Value); if (study == null) { return(HttpNotFound()); } return(View(Models.Study.ToAppModel(study, false))); }
public async Task <ActionResult> Details([Bind(Include = "Email,Id")] AddParticipantStruct newPart) { IReadWriteRepository <ServiceData.Models.User> _userRepository = new UserRepository(); ServiceData.Models.User res = await _userRepository.Search(u => u.Email == newPart.Email).FirstOrDefaultAsync(); IReadWriteRepository <ServiceData.Models.Study> _studyRepository = new StudyRepository(); ServiceData.Models.Study study = _studyRepository.GetById(newPart.Id); if (study == null) { return(RedirectToAction("Index")); } else if (res != null && study.Manager.Email == User.Identity.Name && !study.StudyEnrolments.Any(en => en.UserId == res.Id)) { Models.StudyEnrolment enrol = new Models.StudyEnrolment { CreatedAt = DateTime.UtcNow, Study = Models.Study.ToAppModel(study, false), StudyId = study.Id, Enrolled = true, User = Models.User.ToAppModel(res), UserId = res.Id }; IReadWriteRepository <ServiceData.Models.StudyEnrolment> _enrolRepository = new StudyEnrolmentRepository(); var serviceMod = Models.StudyEnrolment.ToServiceModel(enrol, true, true); var finalRes = _enrolRepository.Insert(serviceMod); return(RedirectToAction("Details", new { id = study.Id })); } return(RedirectToAction("Details", new { id = study?.Id })); }