public async Task <ApiResult <int> > AddMember(MemberRegisterDto dto) { try { if (dto == null) { _logger.LogWarning("User attemped registeration with null data."); return(new ApiResult <int> { Successful = false, Error = "No registration was sent to the server." }); } var member = CreateMemberProfile(dto); _context.Add(member); await _context.SaveChangesAsync(); _logger.LogInformation($"New member profile for {dto.Personal.FirstName} {dto.Personal.LastName} was successfully created"); return(new ApiResult <int> { Data = member.Id, Successful = true }); } catch (Exception ex) { _logger.LogError("An issue occured when trying to add a member: \n" + ex.Message + "\n\nStack Trace: \n" + ex.StackTrace); return(new ApiResult <int> { Successful = false, Error = "Something went wrong when trying to load the members. Please try to reload the page." }); } }
public JsonActionResult <string> Register(MemberRegisterDto registerDto) { return(SafeExecute(() => { return MemberService.Register(registerDto); })); }
public void AddMember_ReturnErrorOnEmptyDto() { using (var transaction = _dbFixture.Connection.BeginTransaction()) { var memberService = new EFTeamService(_dbFixture.CreateContext(transaction), new NullLogger <EFTeamService>(), _mapper); MemberRegisterDto registerDto = null; var registerResult = memberService.AddMember(registerDto).Result; Assert.False(registerResult.Successful); } }
public static MemberRegisterDto GenerateRegisterDto() { var dto = new MemberRegisterDto { Account = new AccountCredsData { Email = "*****@*****.**", Password = "******", ConfirmPassword = "******" }, Personal = new PersonalAndContactData { FirstName = $"testfirst", LastName = $"testlast", Address = "testAddress", City = "testcity", PostalCode = "T1R1L9", MainPhone = "5555555555", AlternatePhone1 = "5555555555", AlternatePhone2 = "5555555555", Birthdate = DateTime.Now, EmergencyFullName = "testemergency", EmergencyPhone1 = "5555555555", EmergencyPhone2 = "5555555555", EmergencyRelationship = "testrelationship", }, Certificates = new CertificatesData { FoodSafe = false, FirstAidCpr = false, OtherCertificates = "TestOther", }, Qualifications = new QualificationsData { EducationTraining = "testeducation", SkillsInterestsHobbies = "testskills", Experience = "testexperience", OtherBoards = "otherboards", }, }; return(dto); }
private MemberProfile CreateMemberProfile(MemberRegisterDto dto) { var availabilityDtos = new List <AvailabilityDto>(); foreach (var availabilityList in dto.Availabilities) { availabilityDtos.AddRange(availabilityList.Value); } var availabilities = _mapper.Map <List <Availability> >(availabilityDtos); var workExperiences = _mapper.Map <List <WorkExperience> >(dto.Qualifications.WorkExperiences); var member = new MemberProfile { IsStaff = dto.Account.IsStaff, Email = dto.Account.Email, FirstName = dto.Personal.FirstName, LastName = dto.Personal.LastName, Address = dto.Personal.Address, City = dto.Personal.City, MainPhone = dto.Personal.MainPhone, Birthdate = dto.Personal.Birthdate, AlternatePhone1 = dto.Personal.AlternatePhone1, AlternatePhone2 = dto.Personal.AlternatePhone2, EmergencyPhone1 = dto.Personal.EmergencyPhone1, EmergencyPhone2 = dto.Personal.EmergencyPhone2, EmergencyFullName = dto.Personal.EmergencyFullName, EmergencyRelationship = dto.Personal.EmergencyRelationship, Availabilities = availabilities, EducationTraining = dto.Qualifications.EducationTraining, Experience = dto.Qualifications.Experience, OtherBoards = dto.Qualifications.OtherBoards, FirstAidCpr = dto.Certificates.FirstAidCpr, FirstAidCprExpiry = dto.Certificates.FirstAidCprExpiry, FirstAidCprLevel = dto.Certificates.FirstAidCprLevel, FoodSafe = dto.Certificates.FoodSafe, FoodSafeExpiry = dto.Certificates.FoodSafeExpiry, OtherCertificates = dto.Certificates.OtherCertificates, PostalCode = dto.Personal.PostalCode, SkillsInterestsHobbies = dto.Qualifications.SkillsInterestsHobbies, WorkExperiences = workExperiences, // TODO: add mandatory checks to registration process // VolunteerConfidentiality = dto.qu.VolunteerConfidentiality; // VolunteerEthics = dto.VolunteerEthics; // CriminalRecordCheck = dto.CriminalRecordCheck; // DrivingAbstract = dto.DrivingAbstract; // ConfirmationOfProfessionalDesignation = dto.ConfirmationOfProfessionalDesignation; // ChildWelfareCheck = dto.ChildWelfareCheck; }; if (member.IsStaff) { member.ApprovalStatus = ApprovalStatus.Approved; } else { member.ApprovalStatus = ApprovalStatus.Pending; } member.Alerts = new List <Alert>() { new ApplicationAlert() { Member = member, Date = DateTime.Now } }; var positions = new List <MemberPosition>(); if (!string.IsNullOrEmpty(dto.Positions)) { var positionIdArray = dto.Positions.Split(','); int currentId; foreach (var positionId in positionIdArray) { if (int.TryParse(positionId, out currentId)) { var selectedPosition = _context.Positions.FirstOrDefault(p => p.Id == currentId); positions.Add(new MemberPosition { Member = member, Position = selectedPosition }); } } } member.Positions = positions; return(member); }
public async Task <bool> Register(MemberRegisterDto dto) { var apiClient = _httpFactory.CreateClient(Constants.HttpClients.ApiClient); // send request to create member var memberResponse = await apiClient.PostAsJsonAsync($"{Constants.ControllerNames.Teams}/{Constants.Routes.Register}", dto, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); // log error and return false if request returns bad statuscode if (!memberResponse.IsSuccessStatusCode) { var stringContent = await memberResponse.Content.ReadAsStringAsync(); _logger.LogError(stringContent); return(false); } var memberResult = await memberResponse.Content.ReadFromJsonAsync <ApiResult <int> >(new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); // if member creation is successful, send returned member id, username and password to idp to request identity account creation if (memberResult.Successful) { var idpClient = _httpFactory.CreateClient(Constants.HttpClients.IdpClient); var identityDto = new IdentityDto { MemberId = memberResult.Data, Data = dto.Account }; var idpResponse = await idpClient.PostAsJsonAsync($"{Constants.ControllerNames.User}/{Constants.Routes.Register}", identityDto, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); // log error and return false if request returns bad statuscode if (!idpResponse.IsSuccessStatusCode) { var stringContent = await idpResponse.Content.ReadAsStringAsync(); _logger.LogError(stringContent); var successCodeDeleteResponse = await idpClient.PostAsJsonAsync($"{Constants.ControllerNames.Teams}/{Constants.Routes.Delete}", memberResult.Data, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); if (!successCodeDeleteResponse.IsSuccessStatusCode) { stringContent = await memberResponse.Content.ReadAsStringAsync(); _logger.LogError(stringContent); return(false); } return(false); } var idpResult = await idpResponse.Content.ReadFromJsonAsync <ApiResult <object> >(); if (idpResult.Successful) { return(true); } // log error and return false if identity account creation wasn't successful _logger.LogError(idpResult.Error); var apiResultDeleteResponse = await idpClient.PostAsJsonAsync($"{Constants.ControllerNames.Teams}/{Constants.Routes.Delete}", memberResult.Data, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); if (!apiResultDeleteResponse.IsSuccessStatusCode) { var stringContent = await memberResponse.Content.ReadAsStringAsync(); _logger.LogError(stringContent); return(false); } return(false); } // log error and return false if member profile creation wasn't successful _logger.LogError(memberResult.Error); return(false); }
public async Task <IActionResult> Register([FromBody] MemberRegisterDto dto) { var result = await _teamService.AddMember(dto); return(new ObjectResult(result)); }