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