package co.smartreceipts.android.model.impl;
import android.os.Parcel;
import co.smartreceipts.android.model.ProcessingStatus;
/**
* Tracks the different processing states that a given {@link co.smartreceipts.android.model.Receipt} can reside in.
*/
public enum ReceiptProcessingStatus implements ProcessingStatus {
/**
* Indicates that this Receipt should still be treated as in new (i.e. not submitted)
*/
Created("Created"),
/**
* Indicates that a Receipt has been submitted
*/
Submitted("Submitted"),
/**
* Indicates that this Receipt has been reimbursed by whomever is paying for it
*/
Reimbursed("Reimbursed"),
/**
* Indicates that we're in an unknown state - shouldn't be normally be used
*/
None("None");
private final String mStatus;
ReceiptProcessingStatus(final String status) {
mStatus = status;
}
@Override
public String getProcessingStatus() {
return mStatus;
}
/**
* Attempts to generate an enum representation of a given status string
*
* @param status - the provided status {@link String}
* @return the corresponding {@link TripProcessingStatus} or {@link TripProcessingStatus#None} if none match
*/
public static ReceiptProcessingStatus findProcessingStatusForString(final String status) {
final ReceiptProcessingStatus[] receiptProcessingStatuses = ReceiptProcessingStatus.values();
for (int i = 0; i < receiptProcessingStatuses.length; i++) {
if (receiptProcessingStatuses[i].getProcessingStatus().equals(status)) {
return receiptProcessingStatuses[i];
}
}
return None;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.mStatus);
}
public static final Creator<ReceiptProcessingStatus> CREATOR = new Creator<ReceiptProcessingStatus>() {
public ReceiptProcessingStatus createFromParcel(Parcel source) {
return findProcessingStatusForString(source.readString());
}
public ReceiptProcessingStatus[] newArray(int size) {
return new ReceiptProcessingStatus[size];
}
};
}