ContactRestController.java
package sk.iway.basecms.contact;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;
import sk.iway.iwcm.system.datatable.json.LabelValue;
/**
* Ukazkovy Spring REST pre pouzitie v datatabulke
* http://docs.webjetcms.sk/v2022/#/custom-apps/admin-menu-item
*/
@RestController
//nastavenie URL adresy REST controllera
@RequestMapping("/admin/rest/apps/contact/")
//nastavenie kontroly prav na alikaciu cmp_contact (tento kluc sa definuje v modinfo.properties)
@PreAuthorize("@WebjetSecurityService.hasPermission('cmp_contact')")
@Datatable
public class ContactRestController extends DatatableRestControllerV2<ContactEntity, Long> {
@SuppressWarnings("unused")
private final ContactRepository contactRepository;
@Autowired
public ContactRestController(ContactRepository contactRepository) {
super(contactRepository);
//odlozme si repozitar na pripadne specialne pouzitie
this.contactRepository = contactRepository;
}
@Override
public void getOptions(DatatablePageImpl<ContactEntity> page) {
//pridaj zoznam pre pole country
page.addOptions("country", getCountries(), "label", "value", false);
}
@Override
public void beforeSave(ContactEntity entity) {
//tu mozete vykonat nastavenie pred ulozenim, napr. nastavit datum poslednej zmeny
}
/**
* Vrati zoznam vyberoveho pola pre krajinu
* @return
*/
public static List<LabelValue> getCountries() {
Prop prop = Prop.getInstance();
//vytvor zoznam krajin, toto by sa idealne malo citat z nejakeho ciselnika
List<LabelValue> countries = new ArrayList<>();
countries.add(new LabelValue(prop.getText("apps.contact.country.sk"), "sk"));
countries.add(new LabelValue(prop.getText("apps.contact.country.cz"), "cz"));
countries.add(new LabelValue(prop.getText("apps.contact.country.at"), "at"));
return countries;
}
}