/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.directory.editors.update.updaters;
import beans.contract.VisitPrice;
import cli_fmw.delegate.directory.UpdaterDirectory;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.audit.AuditManager;
import cli_fmw.utils.ModalDialog;
import clips.delegate.contract.ContractFactoryLocal;
import clips.delegate.contract.ContractLocal;
import clips.main.ClipsConfig;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import org.xBaseJ.micro.DBF;
import org.xBaseJ.micro.fields.Field;
import org.xBaseJ.micro.xBaseJException;
/**
*
* @author vip
*/
public class UpdaterVisitPrice extends UpdaterDirectory{
private static final String S_VISIT = "S_VISIT.DBF";
private static final String S_UET = "S_UET.DBF";
private AuditManager am;
public UpdaterVisitPrice(AuditManager am) {
this.am = am;
}
enum ColVisit{
ID,
PRICE,
}
enum ColUet{
LEVELMES,
PRICE,
}
@Override
public String getFilename() {
return S_VISIT + ", " + S_UET;
}
@Override
public String getTitle() {
return "Оплата посещений";
}
@Override
public void updateImpl() throws ClipsException {
ContractFactoryLocal cfl = new ContractFactoryLocal(am);
List<ContractLocal> contractList = cfl.findContractsOMIForUpdate();
ContractLocal contract;
if (contractList.size() == 0) {
throw new ClipsException("Не найден текущий контракт ОМС");
} else {
//Найдено несколько контрактов
DialogSelectContract dlg = new DialogSelectContract(MainWindow.mainWindow, contractList, am);
dlg.setVisible(true);
if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
contract = dlg.getSelectedContract();
} else {
return;
}
}
HashSet<VisitPrice> visitPriceSet = new HashSet<VisitPrice>();
ClipsConfig cfg = ClipsConfig.getInstance();
{
File file = new File(cfg.getLastDBFImportPath(), S_VISIT);
DBF dbfVisit = createDBF(file);
HashMap<ColVisit, Field> fieldsVisit = new HashMap<ColVisit, Field>();
try {
for (int i = 0; i < ColVisit.values().length; i++) {
ColVisit col = ColVisit.values()[i];
fieldsVisit.put(col, dbfVisit.getField(col.toString()));
}
} catch (xBaseJException ex) {
throw new ClipsException("Ошибка при чтении данных из файла " + dbfVisit.getName(), ex);
}
int recordCount = dbfVisit.getRecordCount();
for (int c = 0; c < recordCount; c++) {
try {
dbfVisit.read();
String id = fieldsVisit.get(ColVisit.ID).get().trim();
String price = fieldsVisit.get(ColVisit.PRICE).get().trim();
visitPriceSet.add(new VisitPrice(id, price));
System.out.println(id + " " + price);
} catch (IOException ex) {
closeDBF(dbfVisit);
throw new ClipsException("Ошибка при чтении данных из файла " + dbfVisit.getName(), ex);
} catch (xBaseJException ex) {
closeDBF(dbfVisit);
throw new ClipsException("Ошибка при чтении данных из файла " + dbfVisit.getName(), ex);
}
}
closeDBF(dbfVisit);
}
{
File file = new File(cfg.getLastDBFImportPath(), S_UET);
DBF dbfUET = createDBF(file);
HashMap<ColUet, Field> fieldsUet = new HashMap<ColUet, Field>();
try {
for (int i = 0; i < ColVisit.values().length; i++) {
ColUet col = ColUet.values()[i];
fieldsUet.put(col, dbfUET.getField(col.toString()));
}
} catch (xBaseJException ex) {
throw new ClipsException("Ошибка при чтении данных из файла " + dbfUET.getName(), ex);
}
int recordCount = dbfUET.getRecordCount();
for (int c = 0; c < recordCount; c++) {
try {
dbfUET.read();
String id = fieldsUet.get(ColUet.LEVELMES).get().trim();
String price = fieldsUet.get(ColUet.PRICE).get().trim();
VisitPrice vp = new VisitPrice(id + "29000", price);
if (visitPriceSet.contains(vp)) {
visitPriceSet.remove(vp);
}
visitPriceSet.add(vp);
System.out.println(vp.getId() + " " + vp.getPrice());
vp = new VisitPrice(id + "29824", price);
if (visitPriceSet.contains(vp)) {
visitPriceSet.remove(vp);
}
visitPriceSet.add(vp);
System.out.println(vp.getId() + " " + vp.getPrice());
vp = new VisitPrice(id + "29825", price);
if (visitPriceSet.contains(vp)) {
visitPriceSet.remove(vp);
}
visitPriceSet.add(vp);
System.out.println(vp.getId() + " " + vp.getPrice());
} catch (IOException ex) {
closeDBF(dbfUET);
throw new ClipsException("Ошибка при чтении данных из файла " + dbfUET.getName(), ex);
} catch (xBaseJException ex) {
closeDBF(dbfUET);
throw new ClipsException("Ошибка при чтении данных из файла " + dbfUET.getName(), ex);
}
}
closeDBF(dbfUET);
}
contract.updateOMIPrice(visitPriceSet);
}
}