Ejemplo n.º 1
0
        public async Task <IActionResult> Create([Bind("VisitDate,ParticipantId,VisitSettingId,NextAppointment,ParticipantCame,VisitOutcome, OutcomeComment, DateParticipantCame")] Visits visits)
        {
            var    isPSF   = _visitLogic.IsPSF(visits.ParticipantId);
            string studyId = _visitLogic.GetStudyId(visits.ParticipantId);

            if (!string.IsNullOrWhiteSpace(studyId) && visits.VisitSettingId == 2 && visits.ParticipantCame == 1)
            {
                foreach (var schedule in _visitLogic.GenerateParticipantSchedule(visits.DateParticipantCame.Value, studyId))
                {
                    if (!_visitLogic.ScheduleExists(studyId, schedule.VisitStage))
                    {
                        await _visitLogic.AddSchedule(schedule);
                    }
                }

                if (isPSF)
                {
                    var psfSchedules = _visitLogic.CreatePSFSchedule(studyId);

                    await _visitLogic.AddPSFSchedule(psfSchedules);
                }
            }

            if (visits.VisitSettingId > 9)
            {
                var expectedVisit = _visitLogic.LoadExpectedPSFVisit(visits.ParticipantId);
            }
            else
            {
                var expectedVisit = _visitLogic.LoadExpectedVisit(visits.ParticipantId);
            }

            //if (!isPSF)
            //    ModelState.AddModelError("ParticipantId", "Participant not a PSF");

            if (ModelState.IsValid)
            {
                visits.CreateDate = DateTime.Now;
                await _visitLogic.AddVisits(visits);

                return(RedirectToAction(nameof(Index)));
            }
            if (User.IsInRole("Super Admin") || User.IsInRole("admin"))
            {
                ViewData["VisitSetting"] = new SelectList(_visitSettingLogic.GetVisitSettings().Result, "Id", "VisitType");
            }
            else
            {
                ViewData["VisitSetting"] = new SelectList(_visitSettingLogic.GetVisitSettings().Result.FindAll(v => v.Id <= 9), "Id", "VisitType");
            }

            ViewData["Participant"] = new SelectList(_participantLogic.GetParticipants().Result, "Id", "StudyId");

            return(View(visits));
        }
Ejemplo n.º 2
0
        // GET: Participants
        public async Task <IActionResult> Index()
        {
            ViewBag.Message = TempData["Message"];

            var participants = await _paticipantLogic.GetParticipants();

            foreach (var participant in participants)
            {
                if (!HasSchedule(participant.StudyId))
                {
                    if (participant.EnrollmentDate.HasValue)
                    {
                        var schedules = _visitLogic.GenerateParticipantSchedule(participant.EnrollmentDate.Value, participant.StudyId);

                        foreach (var schedule in schedules)
                        {
                            await _visitLogic.AddSchedule(schedule);
                        }
                    }
                }
            }

            var studyIds = _visitLogic.GetExistingPSFParticipants();

            foreach (var studyId in studyIds)
            {
                if (studyId != null)
                {
                    var participantSchedule = _visitLogic.CreatePSFSchedule(studyId);

                    await _visitLogic.AddPSFSchedule(participantSchedule);
                }
            }

            return(View(participants));
        }