/** * Copyright (c) 2015 Mustafa DUMLUPINAR, mdumlupinar@gmail.com * * This file is part of seyhan project. * * seyhan is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package controllers.admin; import static play.data.Form.form; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import meta.GridHeader; import meta.PageExtend; import models.AdminExtraFields; import play.data.Form; import play.i18n.Messages; import play.mvc.Controller; import play.mvc.Result; import utils.CacheUtils; import views.html.admins.extra_fields_for_stock.form; import views.html.admins.extra_fields_for_stock.index; import views.html.admins.extra_fields_for_stock.list; import controllers.Application; import enums.Module; /** * @author mdpinar */ public class ExtraFieldsForStocks extends Controller { private final static Form<AdminExtraFields> dataForm = form(AdminExtraFields.class); /** * Liste formu basliklarini doner * * @return List<GridHeader> */ private static List<GridHeader> getHeaderList() { List<GridHeader> headerList = new ArrayList<GridHeader>(); headerList.add(new GridHeader(Messages.get("name"))); headerList.add(new GridHeader(Messages.get("constraint.required"), "8%", true)); headerList.add(new GridHeader(Messages.get("is_active"), "7%", true)); return headerList; } /** * Liste formunda gosterilecek verileri doner * * @return PageExtend */ private static PageExtend<AdminExtraFields> buildPage() { List<Map<Integer, String>> dataList = new ArrayList<Map<Integer, String>>(); List<AdminExtraFields> modelList = AdminExtraFields.page(Module.stock.name()); if (modelList != null && modelList.size() > 0) { for (AdminExtraFields model : modelList) { Map<Integer, String> dataMap = new HashMap<Integer, String>(); int i = -1; dataMap.put(i++, model.idno.toString()); dataMap.put(i++, model.name); dataMap.put(i++, model.isRequired.toString()); dataMap.put(i++, model.isActive.toString()); dataList.add(dataMap); } } return new PageExtend<AdminExtraFields>(getHeaderList(), dataList, null); } public static Result index() { if (! CacheUtils.isSuperUser()) return Application.getForbiddenResult(); return ok( index.render(buildPage()) ); } /** * Uzerinde veri bulunan liste formunu doner */ public static Result list() { if (! CacheUtils.isSuperUser()) return Application.getForbiddenResult(); return ok( list.render(buildPage()) ); } /** * Kayit formundaki bilgileri kaydeder */ public static Result save() { if (! CacheUtils.isSuperUser()) return Application.getForbiddenResult(); Form<AdminExtraFields> filledForm = dataForm.bindFromRequest(); if(filledForm.hasErrors()) { return badRequest(form.render(filledForm)); } else { AdminExtraFields model = filledForm.get(); checkConstraints(filledForm); if (filledForm.hasErrors()) { return badRequest(form.render(filledForm)); } model.update(); flash("success", Messages.get("saved", model.name)); return ok(); } } /** * Secilen kayit icin duzenleme formunu acar * * @param id */ public static Result edit(Integer id) { if (! CacheUtils.isSuperUser()) return Application.getForbiddenResult(); if (id == null) { return badRequest(Messages.get("id.is.null")); } else { AdminExtraFields model = AdminExtraFields.findById(Module.stock.name(), id); if (model == null) { return badRequest(Messages.get("not.found", Messages.get("extra_field"))); } else { return ok(form.render(dataForm.fill(model))); } } } /** * Kayit isleminden once form uzerinde bulunan verilerin uygunlugunu kontrol eder * * @param filledForm */ private static void checkConstraints(Form<AdminExtraFields> filledForm) { AdminExtraFields model = filledForm.get(); if (AdminExtraFields.isUsedForElse("name", model.name, model.id, Module.stock.name())) { filledForm.reject("name", Messages.get("not.unique", model.name)); } } }