package pt.rupeal.invoicexpress.enums;
import android.content.Context;
import pt.rupeal.invoicexpress.R;
public enum DocumentStatusEnum {
CANCELED ("canceled", R.drawable.icon_status_1, R.string.doc_status_canceled, R.string.doc_status_gui_canceled, "canceled"),
DRAFT ("draft", R.drawable.icon_status_5, R.string.doc_status_draft, R.string.doc_status_gui_draft, ""),
FINAL ("final", R.drawable.icon_status_4, R.string.doc_status_final, R.string.doc_status_gui_final, "finalized"),
SECOND_COPY ("second_copy", R.drawable.icon_status_2, R.string.doc_status_secondCopy, R.string.doc_status_gui_secondCopy, "second_copy"),
SETTLED ("settled", R.drawable.icon_status_3, R.string.doc_status_settled, R.string.doc_status_gui_settled, "settled"),
// the following types is used just on change status operation
UNSETTLED("", -1, R.string.doc_status_unsettled, -1, "unsettled"),
DELETED("deleted", -1, R.string.doc_status_deleted, -1, "deleted");
private String value;
private int drawableId;
private int actionLabelId;
private int labelGui;
private String xml;
private DocumentStatusEnum(String value, int drawableId, int actionLabelId, int labelGui, String stateXml) {
this.value = value;
this.drawableId = drawableId;
this.actionLabelId = actionLabelId;
this.labelGui = labelGui;
this.xml = stateXml;
}
public String getValue() {
return value;
}
public static DocumentStatusEnum getDocumentStatusEnum(String status) {
DocumentStatusEnum[] statusArray = values();
for (int i = 0; i < statusArray.length; i++) {
if(statusArray[i].value.equals(status)){
return statusArray[i];
}
}
return null;
}
public int getDrawableId() {
return drawableId;
}
public static int getDrawableId(String status) {
DocumentStatusEnum[] statusArray = values();
for (int i = 0; i < statusArray.length; i++) {
if(statusArray[i].value.equals(status)){
return statusArray[i].getDrawableId();
}
}
return -1;
}
public int getActionLabelId() {
return actionLabelId;
}
public String getActionLabel(Context context) {
return context.getResources().getString(actionLabelId);
}
public static String[] getActionLabels(Context context) {
DocumentStatusEnum[] statusArray = values();
String[] labels = new String[statusArray.length];
for (int i = 0; i < statusArray.length; i++) {
labels[i] = context.getResources().getString(statusArray[i].actionLabelId);
}
return labels;
}
public int getLabelGui() {
return labelGui;
}
public static String getLabelGui(Context context, String status) {
DocumentStatusEnum[] statusArray = values();
for (int i = 0; i < statusArray.length; i++) {
if(statusArray[i].getValue().equals(status)) {
return statusArray[i].getLabelGui(context);
}
}
return "";
}
public String getLabelGui(Context context) {
return context.getResources().getString(labelGui);
}
public void setLabelGui(int labelGui) {
this.labelGui = labelGui;
}
public String getStateXml() {
return xml;
}
public static boolean isFinal(String status) {
return FINAL.getValue().equals(status);
}
public static boolean isDeleted(String status) {
return DELETED.getValue().equals(status);
}
public static boolean isCanceled(String status) {
return CANCELED.getValue().equals(status);
}
public static boolean isSettled(String status) {
return SETTLED.getValue().equals(status);
}
public static boolean isDraft(String status) {
return DRAFT.getValue().equals(status);
}
public static String convertReceiptStatus(String status) {
if("sent".equals(status)) {
return FINAL.value;
}
return status;
}
}