//[Route("admin")] public async Task <ActionResult> CreateSiwesAdmin([FromForm] SiwesAdminRequest siwesAdminRequest) { var result = await _siwesAdminRepository.CreateSiwesAdmin(siwesAdminRequest); if (result.StatusCode == Helpers.Success) { result.ObjectValue = _mapper.Map <UserToReturn>((User)result.ObjectValue); return(StatusCode(StatusCodes.Status200OK, result)); } else { return(StatusCode(StatusCodes.Status400BadRequest, result)); } }
public async Task <ToRespond> CreateSiwesAdmin(SiwesAdminRequest siwesAdminRequest) { if (siwesAdminRequest == null || string.IsNullOrWhiteSpace(siwesAdminRequest.EmailAddress)) { return(new ToRespond() { StatusCode = Helpers.ObjectNull, StatusMessage = "Super Admin Information is Null" }); } //GET SUPERADMIN ROLE var superAdminRole = await _roleManager.FindByNameAsync(Helpers.SiwesAdminRole); if (superAdminRole == null) { return(new ToRespond() { StatusCode = Helpers.NotFound, StatusMessage = "Super Admin Role is Not Found" }); } var siwesAdminRoleForAssignment = new RoleResponse() { Id = superAdminRole.Id }; if (await SiwesAdminExists(siwesAdminRequest.EmailAddress)) { return(new ToRespond() { StatusCode = Helpers.ObjectExists, StatusMessage = "One or more of the provided resources already exist(s)!" }); } var siwesAdmin = new SiwesAdmin { EmailAddress = siwesAdminRequest.EmailAddress, FirstName = siwesAdminRequest.FirstName, LastName = siwesAdminRequest.LastName, }; _globalRepository.Add(siwesAdmin); var saveResult = await _globalRepository.SaveAll(); if (saveResult.HasValue) { if (!saveResult.Value) { return(new ToRespond() { StatusCode = Helpers.SaveNoRowAffected, StatusMessage = "SuperAdmin Information Could Not Save" }); } var user = new User { UserName = siwesAdmin.EmailAddress, Email = siwesAdmin.EmailAddress, UserTypeId = siwesAdmin.SiwesAdminId, UserType = Helpers.SiwesAdmin, }; var result = _userManager.CreateAsync(user, siwesAdminRequest.Password).Result; if (result.Succeeded) { siwesAdmin.UserId = user.Id; var siwesAdminUpdateResult = _globalRepository.Update(siwesAdmin); if (!siwesAdminUpdateResult) { return(new ToRespond() { StatusCode = Helpers.NotSucceeded, StatusMessage = "Error Occured while saving Staff Information" }); } var siwesAdminUpdateSaveResult = await _globalRepository.SaveAll(); if (!siwesAdminUpdateSaveResult.HasValue) { return(new ToRespond() { StatusCode = Helpers.SaveError, StatusMessage = "Error Occured while saving Super Admin Information" }); } if (!siwesAdminUpdateSaveResult.Value) { return(new ToRespond() { StatusCode = Helpers.SaveNoRowAffected, StatusMessage = "Error Occured while saving Super Admin Information" }); } //IF NO ROLE CAME WITH THE SUPERADMIN REGISTER REQUEST ASSIGN DEFAULT ROLE OF SUPERADMIN TO THAT USER var userRole = new List <RoleResponse>() { siwesAdminRoleForAssignment }; var assignmentResult = await _roleRepository.AssignRolesToUser(new RoleUserAssignmentRequest() { Users = new List <UserToReturn>() { new UserToReturn() { Id = user.Id } }, Roles = userRole }); if (assignmentResult.StatusCode == Helpers.Success) { var userTokenVal = await _userManager.GenerateEmailConfirmationTokenAsync(user); string hashedEmail = GetHashedEmail(user.Email); string fullToken = userTokenVal + "#" + hashedEmail; var emailVerificationLink = _authenticationRepository.GetUserEmailVerificationLink(fullToken); if (emailVerificationLink == null) { return(new ToRespond() { StatusCode = Helpers.ObjectNull, StatusMessage = "Could not generate Email Verification Link" }); } else { var siwesAdminToReturn = await GetOneSiwesAdmin(siwesAdmin.SiwesAdminId); return(new ToRespond() { StatusCode = Helpers.Success, ObjectValue = (User)siwesAdminToReturn.ObjectValue, StatusMessage = "SuperAdmin Created Successfully!!!" }); } } else { return(new ToRespond() { StatusCode = Helpers.NotSucceeded, StatusMessage = "Error Occured while saving SuperAdmin Information" }); } } else { return(new ToRespond() { StatusCode = Helpers.NotSucceeded, StatusMessage = "Error Occured while saving SuperAdmin Information" }); } } else { return(new ToRespond() { StatusCode = Helpers.SaveError, StatusMessage = "Error Occured while saving SuperAdmin Information" }); } }