/*
* Copyright (c) 2011 Denis Solonenko.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/
package ru.orangesoftware.financisto2.activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import ru.orangesoftware.financisto2.R;
import ru.orangesoftware.financisto2.bus.GreenRobotBus;
import ru.orangesoftware.financisto2.bus.TransactionDeleted;
import ru.orangesoftware.financisto2.db.DatabaseAdapter;
import ru.orangesoftware.financisto2.model.Transaction;
import ru.orangesoftware.financisto2.model.TransactionStatus;
/**
* Created by IntelliJ IDEA.
* User: Denis Solonenko
* Date: 8/13/11 12:02 AM
*/
public class BlotterOperations {
private final Context context;
private final GreenRobotBus bus;
private final DatabaseAdapter db;
private final Transaction originalTransaction;
private final Transaction targetTransaction;
private boolean newFromTemplate = false;
public BlotterOperations(Context context, DatabaseAdapter db, long transactionId, GreenRobotBus bus) {
this.context = context;
this.db = db;
this.bus = bus;
this.originalTransaction = db.getTransaction(transactionId);
if (this.originalTransaction.isSplitChild()) {
this.targetTransaction = db.getTransaction(this.originalTransaction.parentId);
} else {
this.targetTransaction = this.originalTransaction;
}
}
public BlotterOperations asNewFromTemplate() {
newFromTemplate = true;
return this;
}
public void editTransaction() {
if (targetTransaction.isTransfer()) {
TransferActivity_.intent(context)
.transactionId(targetTransaction.id)
.isNewFromTemplate(newFromTemplate)
.isDuplicate(false)
.start();
} else {
TransactionActivity_.intent(context)
.transactionId(targetTransaction.id)
.isNewFromTemplate(newFromTemplate)
.isDuplicate(false)
.start();
}
}
public void deleteTransaction() {
int titleId = targetTransaction.isTemplate() ? R.string.delete_template_confirm
: (originalTransaction.isSplitChild() ? R.string.delete_transaction_parent_confirm : R.string.delete_transaction_confirm);
new AlertDialog.Builder(context)
.setMessage(titleId)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
long transactionIdToDelete = targetTransaction.id;
db.deleteTransaction(transactionIdToDelete);
bus.post(new TransactionDeleted(transactionIdToDelete));
}
})
.setNegativeButton(R.string.no, null)
.show();
}
public long duplicateTransaction(int multiplier) {
long newId;
if (multiplier > 1) {
newId = db.duplicateTransactionWithMultiplier(targetTransaction.id, multiplier);
} else {
newId = db.duplicateTransaction(targetTransaction.id);
}
return newId;
}
public void duplicateAsTemplate() {
db.duplicateTransactionAsTemplate(targetTransaction.id);
}
public void clearTransaction() {
db.updateTransactionStatus(targetTransaction.id, TransactionStatus.CL);
}
public void reconcileTransaction() {
db.updateTransactionStatus(targetTransaction.id, TransactionStatus.RC);
}
}