public async Task <IActionResult> RegisterPatient([FromBody] RegisterPatientVm model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, IsActive = true, DateModifiedIfActive = DateTime.UtcNow }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await _userManager.AddClaimAsync(user, new Claim("IsPatient", "true")); var userViewModel = _service.CreateRegisteredPatient(model); return(Ok(userViewModel)); } AddErrors(result); } // If we got this far, something failed return(BadRequest(this.ModelState)); }
/// <summary> /// Creates the nurse /// </summary> /// <param name="registeredUser"></param> /// <returns></returns> public Patient CreateRegisteredPatient(RegisterPatientVm registeredUser) { var newPatient = new Patient(); var appUser = _repo.Query <ApplicationUser>().Where(au => au.Email == registeredUser.Email).FirstOrDefault(); newPatient.CheckInDate = registeredUser.CheckInDate.ToUniversalTime(); newPatient.RoomNumber = registeredUser.RoomNumber; newPatient.BedNumber = registeredUser.BedNumber; newPatient.Notes = registeredUser.Notes; newPatient.NurseId = registeredUser.NurseId; newPatient.Dependency = registeredUser.Dependency; newPatient.IsActive = true; newPatient.DateModifiedIfActive = DateTime.UtcNow; newPatient.ApplicationUser = appUser; newPatient.ApplicationUserId = appUser.Id; newPatient.FirebasePatientKey = registeredUser.FirebasePatientKey; _repo.Add(newPatient); _repo.SaveChanges(); if (registeredUser.NurseId != 0) { var assignedNurse = _repo.Query <Nurse>().Include(n => n.ApplicationUser).Where(n => n.Id == newPatient.NurseId).FirstOrDefault(); var patientAssignedNurse = new NursePatient(); patientAssignedNurse.Patient = newPatient; patientAssignedNurse.PatientId = newPatient.Id; patientAssignedNurse.Nurse = assignedNurse; patientAssignedNurse.NurseId = assignedNurse.Id; _repo.Add <NursePatient>(patientAssignedNurse); } _repo.SaveChanges(); return(newPatient); }