I just had a look at your contract and one important feedback I can give right away is, that your smart contract is not upgradable. Which means, if this contract is deployed, it can never be killed. If you kill it, you will loose all your data.
With the current code, in order to add/update any functionality, you will have to re-deploy the contract and use the newly deployed contract, which will eventually not have your old contract's data.
So, if you care about the data then you shall code your contract in a way so that it becomes upgradable and you can preserve the data associated with the contract.
You can read few blogs to understand one approach on how to write upgradable contract -
Hope this helps.