public IActionResult Assign([FromRoute] Guid project_id, [FromBody] PermissionRoleSetupM model)
        {
            try
            {
                JwtClaimM jwt_claim = _jwtAuth.GetClaims(Request);
                if (model.RoleId.Equals(RoleID.Project_Manager))
                {
                    _permission.EnsureProjectOwner(jwt_claim.UserId, project_id);
                    _permission.AssignProjectManager(model.AssignedUserId, project_id);
                }
                else
                {
                    if (jwt_claim.AdminUserId.Equals(model.AssignedUserId))
                    {
                        return(Forbid());
                    }
                    if (model.RoleId.Equals(RoleID.Admin) || model.RoleId.Equals(RoleID.Project_Manager))
                    {
                        return(Forbid());
                    }
                    _permission.EnsureProjectManager(jwt_claim.UserId, project_id);

                    IList <Guid> repository_ids = _projectRepository.GetRepositoryIds(project_id);
                    if (repository_ids.Count != 0)
                    {
                        if (repository_ids.Count == 2)
                        {
                            if (repository_ids[0].Equals(repository_ids[1]))
                            {
                                repository_ids.RemoveAt(1);
                            }
                        }
                        foreach (var repository_id in repository_ids)
                        {
                            if (!_collaborator.HasCollab(model.AssignedUserId, repository_id))
                            {
                                Guid account_id = _account.GetMainAccountId(model.AssignedUserId);
                                if (!account_id.Equals(Guid.Empty))
                                {
                                    var assigned_user_account_requirement = _account.GetGHUserRequirement(account_id);
                                    var pm_repo_requirement = _repository.GetGHRepositoryRequirement(repository_id);

                                    int gh_invitation_id = _gHCollaborator.AddCollaborator(pm_repo_requirement.GHUser.Name, pm_repo_requirement.RepositoryName, pm_repo_requirement.GHUser.AccessToken, assigned_user_account_requirement.Name).Id;
                                    _gHInvitation.Accept(assigned_user_account_requirement.Name, assigned_user_account_requirement.AccessToken, gh_invitation_id);

                                    _collaborator.AddCollab(account_id, repository_id);
                                }
                            }
                        }
                    }
                    _permission.AssignProjectMember(model.AssignedUserId, project_id, model.RoleId);
                }
                return(Ok("Assigned"));
            }
            catch (Exception e)
            {
                return(GetError(e));
            }
        }