Example #1
0
        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."
                });
            }
        }
Example #2
0
 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);
            }
Example #5
0
        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);
        }
Example #6
0
        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));
        }