package org.openlmis.core.view.viewmodel;
import org.apache.commons.lang3.StringUtils;
import org.openlmis.core.LMISApp;
import org.openlmis.core.R;
import org.openlmis.core.manager.MovementReasonManager;
import org.openlmis.core.model.ProgramDataColumn;
import org.openlmis.core.model.ProgramDataFormItem;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Data;
import static org.roboguice.shaded.goole.common.collect.Lists.newArrayList;
@Data
public class RapidTestFormItemViewModel {
MovementReasonManager.MovementReason issueReason;
RapidTestFormGridViewModel gridHIVDetermine = new RapidTestFormGridViewModel(RapidTestFormGridViewModel.ColumnCode.HIVDetermine);
RapidTestFormGridViewModel gridHIVUnigold = new RapidTestFormGridViewModel(RapidTestFormGridViewModel.ColumnCode.HIVUnigold);
RapidTestFormGridViewModel gridSyphillis = new RapidTestFormGridViewModel(RapidTestFormGridViewModel.ColumnCode.Syphillis);
RapidTestFormGridViewModel gridMalaria = new RapidTestFormGridViewModel(RapidTestFormGridViewModel.ColumnCode.Malaria);
List<RapidTestFormGridViewModel> rapidTestFormGridViewModelList = Arrays.asList(gridHIVDetermine, gridHIVUnigold, gridSyphillis, gridMalaria);
Map<String, RapidTestFormGridViewModel> rapidTestFormGridViewModelMap = new HashMap<>();
public RapidTestFormItemViewModel(MovementReasonManager.MovementReason issueReason) {
this.issueReason = issueReason;
for (RapidTestFormGridViewModel viewModel : rapidTestFormGridViewModelList) {
rapidTestFormGridViewModelMap.put(StringUtils.upperCase(viewModel.getColumnCode().name()), viewModel);
}
}
public void setColumnValue(ProgramDataColumn column, int value) {
String[] columnNames = column.getCode().split("_");
String columnName = columnNames[1];
rapidTestFormGridViewModelMap.get(columnName).setValue(column, value);
}
public static final String CONSUME_HIVDETERMINE = "CONSUME_HIVDETERMINE";
public static final String POSITIVE_HIVDETERMINE = "POSITIVE_HIVDETERMINE";
public static final String CONSUME_HIVUNIGOLD = "CONSUME_HIVUNIGOLD";
public static final String POSITIVE_HIVUNIGOLD = "POSITIVE_HIVUNIGOLD";
public static final String CONSUME_SYPHILLIS = "CONSUME_SYPHILLIS";
public static final String POSITIVE_SYPHILLIS = "POSITIVE_SYPHILLIS";
public static final String CONSUME_MALARIA = "CONSUME_MALARIA";
public static final String POSITIVE_MALARIA = "POSITIVE_MALARIA";
public List<ProgramDataFormItem> convertToDataModel() {
if (issueReason.getDescription().equals(LMISApp.getInstance().getString(R.string.total))) {
return newArrayList();
}
List<ProgramDataFormItem> programDataFormItems = new ArrayList<>();
for (RapidTestFormGridViewModel gridViewModel : rapidTestFormGridViewModelList) {
programDataFormItems.addAll(gridViewModel.convertFormGridViewModelToDataModel(issueReason));
}
return programDataFormItems;
}
public boolean validate() {
for (RapidTestFormGridViewModel gridViewModel : rapidTestFormGridViewModelList) {
if (!gridViewModel.validate()) {
return false;
}
}
return true;
}
public boolean isEmpty() {
for (RapidTestFormGridViewModel gridViewModel : rapidTestFormGridViewModelList) {
if (!gridViewModel.isEmpty()) {
return false;
}
}
return true;
}
public void clearValue(RapidTestFormGridViewModel.ColumnCode columnCode, boolean isConsume) {
rapidTestFormGridViewModelMap.get(columnCode.toString()).clear(isConsume);
}
}