var assign = require('object-assign');

var TransactionConstants = require('../constants/TransactionConstants');
var UserConstants = require('../constants/UserConstants');

module.exports = function(state = {}, action) {
	switch (action.type) {
		case TransactionConstants.TRANSACTION_PAGE_FETCHED:
			var transactions = assign({}, state);
			for (var tidx in action.transactions) {
				var t = action.transactions[tidx];
				transactions = assign({}, transactions, {
					[t.TransactionId]: t
				});
			}
			return transactions;
		case TransactionConstants.TRANSACTION_CREATED:
		case TransactionConstants.TRANSACTION_UPDATED:
			var transaction = action.transaction;
			return assign({}, state, {
				[transaction.TransactionId]: transaction
			});
		case TransactionConstants.TRANSACTION_REMOVED:
			var transactions = assign({}, state);
			delete transactions[action.transactionId];
			return transactions;
		case UserConstants.USER_LOGGEDOUT:
			return {};
		default:
			return state;
	}
};