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 HttpResponseMessage GetMyEnrols() { List <ServiceData.Models.StudyEnrolment> found = _studyEnrolmentRepository.Search( en => en.User.Email == User.Identity.Name).ToList(); List <Models.StudyEnrolment> toRet = new List <Models.StudyEnrolment>(); foreach (ServiceData.Models.StudyEnrolment en in found) { // Clear out some potentially sensitive info Models.StudyEnrolment toAdd = Models.StudyEnrolment.ToAppModel(en, true, false); toAdd.Study.StudyEnrolments = null; toAdd.Study.Manager.Conditions = null; toRet.Add(toAdd); } return(Request.CreateResponse(HttpStatusCode.OK, toRet)); }
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 })); }