package org.openmrs.module.openhmis.cashier.web.controller;
import org.openmrs.module.openhmis.cashier.ModuleSettings;
import org.openmrs.module.openhmis.cashier.api.ISequentialReceiptNumberGeneratorService;
import org.openmrs.module.openhmis.cashier.api.ReceiptNumberGeneratorFactory;
import org.openmrs.module.openhmis.cashier.api.SequentialReceiptNumberGenerator;
import org.openmrs.module.openhmis.cashier.api.model.SequentialReceiptNumberGeneratorModel;
import org.openmrs.module.openhmis.cashier.web.CashierWebConstants;
import org.openmrs.module.openhmis.commons.api.util.UrlUtil;
import org.openmrs.module.openhmis.commons.web.controller.HeaderController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.request.WebRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* Abstract sequential receipt number generator functionality
*/
public abstract class AbstractSequentialReceiptNumberGenerator {
public abstract ISequentialReceiptNumberGeneratorService getService();
public abstract String getReceiptNumberGeneratorUrl();
@RequestMapping(method = RequestMethod.GET)
public void render(ModelMap modelMap, HttpServletRequest request) throws IOException {
SequentialReceiptNumberGeneratorModel model = getService().getOnly();
modelMap.addAttribute("generator", model);
modelMap.addAttribute("settings", ModuleSettings.loadSettings());
HeaderController.render(modelMap, request);
}
@RequestMapping(method = RequestMethod.POST)
public String post(@ModelAttribute("generator") SequentialReceiptNumberGeneratorModel generator, WebRequest request) {
if (generator.getSeparator().equals("<space>")) {
generator.setSeparator(" ");
}
// The check digit checkbox value is only bound if checked
if (request.getParameter("includeCheckDigit") == null) {
generator.setIncludeCheckDigit(false);
}
// Save the generator settings
getService().save(generator);
// Set the system generator
ReceiptNumberGeneratorFactory.setGenerator(new SequentialReceiptNumberGenerator());
return UrlUtil.redirectUrl(getReceiptNumberGeneratorUrl());
}
}