contract Luxury is TokenERC20, Sale {
    using SafeMath for uint256;
    uint256 public  unitsOneEthCanBuy;
    uint256 public  minPurchaseQty;

    mapping (address => bool) public airdrops;


    /* Initializes contract with initial supply tokens to the creator of the contract */
    function Luxury()
    TokenERC20(350000000, 'Luxury Ledger', 'LXRY', 1000000) public {
        unitsOneEthCanBuy = 80000;
        soldTokens = 0;
        minPurchaseQty = 16000 * 10 ** uint256(decimals);
    }

    function changeOwnerWithTokens(address newOwner) onlyOwner public {
        uint previousBalances = balanceOf[owner] + balanceOf[newOwner];
        balanceOf[newOwner] += balanceOf[owner];
        balanceOf[owner] = 0;
        assert(balanceOf[owner] + balanceOf[newOwner] == previousBalances);
        owner = newOwner;
    }

    function changePrice(uint256 _newAmount) onlyOwner public {
        unitsOneEthCanBuy = _newAmount;
    }

    function startSale() onlyOwner public {
        soldTokens = 0;
    }

    function increaseSaleLimit(uint256 TokenSale)  onlyOwner public {
        TokenForSale = TokenSale * 10 ** uint256(decimals);
    }

    function increaseMinPurchaseQty(uint256 newQty) onlyOwner public {
        minPurchaseQty = newQty * 10 ** uint256(decimals);
    }
    
    function airDrop(address[] _recipient, uint _totalTokensToDistribute) onlyOwner public {
        uint256 total_token_to_transfer = (_totalTokensToDistribute * 10 ** uint256(decimals)).mul(_recipient.length); 
        require(balanceOf[owner] >=  total_token_to_transfer);
        for(uint256 i = 0; i< _recipient.length; i++)
        {
            if (!airdrops[_recipient[i]]) {
              airdrops[_recipient[i]] = true;
              _transfer(owner, _recipient[i], _totalTokensToDistribute * 10 ** uint256(decimals));
            }
        }
    }
    function() public payable whenNotPaused CheckSaleStatus {
        uint256 eth_amount = msg.value;
        uint256 amount = eth_amount.mul(unitsOneEthCanBuy);
        soldTokens = soldTokens.add(amount);
        require(amount >= minPurchaseQty );
        require(balanceOf[owner] >= amount );
        _transfer(owner, msg.sender, amount);
        //Transfer ether to fundsWallet
        owner.transfer(msg.value);
    }
}
function Luxury()
    TokenERC20(350000000, 'Luxury Ledger', 'LXRY', 1000000) public {
        unitsOneEthCanBuy = 80000;
        soldTokens = 0;
        minPurchaseQty = 16000 * 10 ** uint256(decimals);
    }
/* Initializes contract with initial supply tokens to the creator of the contract */