Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        // 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)));
        }
Esempio n. 4
0
        // 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)));
        }
Esempio n. 5
0
        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 }));
        }