コード例 #1
0
        //[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));
            }
        }
コード例 #2
0
        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"
                });
            }
        }