private void RegisterDonorOrganRequestInner(DonorRequestViewModel request, UserInfo donorUserInfo) { var donorOrganRequest = new DonorRequest { DonorInfoId = donorUserInfo.UserInfoId, OrganInfoId = request.OrganInfoId, Message = request.Message, Status = DonorRequestStatuses.PendingMedicalExamination }; _donorRequestsRepository.Add(donorOrganRequest); }
public UserInfo RegisterDonor(DonorRequestViewModel request) { var userInfo = new UserInfo() { Email = request.Email, FirstName = request.FirstName, SecondName = request.SecondName, AddressLine1 = request.AddressLine1, AddressLine2 = request.AddressLine2, City = request.City, Country = request.Country, ZipCode = request.ZipCode, PhoneNumber = request.PhoneNumber, BirthDate = request.BirthDate }; AppUser user = new AppUser() { Email = request.Email, UserName = request.Email, Created = DateTime.UtcNow, CreatedBy = CurrentUserHolder.GetCurrentUserName(), EmailConfirmed = true, PhoneNumber = request.PhoneNumber, PhoneNumberConfirmed = true, UserInfo = userInfo }; var result = _userManager.CreateAsync(user, request.Password).Result; if (result.Succeeded) { result = _userManager.AddToRoleAsync(user, RolesConstants.Donor).Result; } else { throw new ArgumentException(result.Errors.First().Description); } if (!result.Succeeded) { _userManager.DeleteAsync(user).Wait(); throw new InvalidOperationException(UserCreationFailedErrorMessage); } return(userInfo); }
public void RegisterDonorOrganRequest(DonorRequestViewModel request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (!_organInfoService.IfOrganInfoExists(request.OrganInfoId)) { throw new ArgumentException("Organ Info does not exist."); } //TODO: validate contacts var user = _userManager.FindByEmailAsync(request.Email).Result; UserInfo donorUserInfo = user == null ? _userInfoService.RegisterDonor(request) : _userInfoService.GetUserInfoByUserId(user.Id); RegisterDonorOrganRequestInner(request, donorUserInfo); }
public IActionResult CreateDonorRequest(DonorRequestViewModel model) { var response = Execute(() => { if (User != null && User.IsAuthenticated()) { if (_userManager.IsUserInDonorRole(User.Identity.Name)) { var user = _userManager.FindByNameAsync(User.Identity.Name).Result; model.Email = user.Email; } else { throw new UnauthorizedAccessException("Cannot access to this method because you are not a donor!"); } } _donorRequestService.RegisterDonorOrganRequest(model); }); return(Json(response)); }