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