/* * Copyright (C) 2016 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW 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 Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ package org.waterforpeople.mapping.app.web.rest; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.waterforpeople.mapping.app.web.CurrentUserServlet; import org.waterforpeople.mapping.app.web.dto.DataPointApprovalDTO; import org.waterforpeople.mapping.app.web.rest.dto.DataPointApprovalPayload; import org.waterforpeople.mapping.app.web.rest.dto.RestStatusDto; import com.gallatinsystems.survey.dao.DataPointApprovalDAO; import com.gallatinsystems.survey.domain.DataPointApproval; import com.gallatinsystems.user.domain.User; @Controller @RequestMapping("/data_point_approvals") public class DataPointApprovalRestService { @Inject private DataPointApprovalDAO dataPointApprovalDao; /** * Create a new DataPointApproval * * @param requestPayload * @return */ @RequestMapping(method = RequestMethod.POST, value = "") @ResponseBody public Map<String, Object> createDataPointApproval( @RequestBody DataPointApprovalPayload dataPointApprovalPayload) { final Map<String, Object> response = new HashMap<String, Object>(); final RestStatusDto status = new RestStatusDto(); DataPointApproval approval = dataPointApprovalPayload.getData_point_approval() .getDataPointApproval(); approval.setApprovalDate(new Date()); User currentUser = CurrentUserServlet.getCurrentUser(); approval.setApproverUserId(currentUser.getKey().getId()); approval.setApproverUserName(currentUser.getEmailUserName()); response.put("data_point_approval", new DataPointApprovalDTO(dataPointApprovalDao.save(approval))); response.put("meta", status); return response; } /** * List available DataPointApprovals * * @return */ @RequestMapping(method = RequestMethod.GET) @ResponseBody public Map<String, List<DataPointApprovalDTO>> listDataPointApprovals( @RequestParam(value = "surveyedLocaleId[]", required = false) List<Long> surveyedLocaleIds, @RequestParam(value = "surveyedLocaleId", required = false) Long surveyedLocaleId) { Map<String, List<DataPointApprovalDTO>> response = new HashMap<String, List<DataPointApprovalDTO>>(); List<DataPointApproval> approvals = new ArrayList<DataPointApproval>(); if (surveyedLocaleIds != null) { approvals.addAll(dataPointApprovalDao.listBySurveyedLocaleIds(surveyedLocaleIds)); } else if (surveyedLocaleId != null) { approvals.addAll(dataPointApprovalDao.listBySurveyedLocaleId(surveyedLocaleId)); } List<DataPointApprovalDTO> approvalsResponseList = new ArrayList<DataPointApprovalDTO>(); for (DataPointApproval approval : approvals) { approvalsResponseList.add(new DataPointApprovalDTO(approval)); } response.put("data_point_approvals", approvalsResponseList); return response; } @RequestMapping(method = RequestMethod.PUT, value = "/{dataPointApprovalId}") @ResponseBody public Map<String, Object> updateDataPointApproval( @RequestBody DataPointApprovalPayload dataPointApprovalPayload, @PathVariable Long dataPointApprovalId) { final Map<String, Object> response = new HashMap<String, Object>(); final RestStatusDto status = new RestStatusDto(); DataPointApproval updatedApproval = dataPointApprovalPayload.getData_point_approval() .getDataPointApproval(); final DataPointApproval storedApproval = dataPointApprovalDao.getByKey(dataPointApprovalId); if (storedApproval != null) { storedApproval.setApprovalDate(new Date()); storedApproval.setStatus(updatedApproval.getStatus()); storedApproval.setComment(updatedApproval.getComment()); response.put("data_point_approval", new DataPointApprovalDTO(dataPointApprovalDao.save(storedApproval))); } response.put("meta", status); return response; } }