* @dev Owner finalizes the issue and distributes the transaction tokens or rejects the PR
* @param _issueID issue id (mapping with github)
* @param _prAddresses PR Address
* @param _prAmounts PR Amounts
function proposeIssueMerge(uint256 _issueID, address[] memory _prAddresses, uint256[] memory _prAmounts) public whenNotPaused {
Issue memory issue = issues[_issueID];
require(issue._id != 0 , "Issue has to exist");
require(issue.finalized == false, "Issue has to be opened");
require(_prAmounts.length == _prAddresses.length, "Amounts has to equal addresses length");
require(transactionToken.balanceOf(msg.sender) > COUNCIL_AMOUNT*10**18, "To propose merges the proposer has to be a Council (COUNCIL_AMOUNT)");
MergeProposal memory mergeProposal;
mergeProposal._id = issue.mergeIDIncrement;
mergeProposal.prAmounts = _prAmounts;
mergeProposal.prAddresses = _prAddresses;
mergeProposal.proposalAddress = msg.sender;
uint256 total = ((issues[_issueID].tokensStaked * (mergeCreatorFeeShare)) / 100); // Fee + Merge Creator Fee + 0
for(uint i = 0; i < _prAddresses.length; i++){
total = total.add((_prAmounts[i] * (100-mergeCreatorFeeShare)) / 100);
require(total == issues[_issueID].tokensStaked, "Totals dont match");
issues[_issueID].mergeProposals[issue.mergeIDIncrement] = mergeProposal;
issues[_issueID].mergeIDIncrement = issues[_issueID].mergeIDIncrement + 1;
emit MergeProposalCreated(_issueID, mergeProposal._id, msg.sender);