package controllers; import api.v1.StandardAccount; import auth.modules.TokenAuthorize; import auth.types.PermissionType; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import compositions.*; import mapper.StandardAccountMapper; import models.StandardAccountModel; import play.libs.Json; import play.mvc.Result; import service.StandardAccountService; import java.io.IOException; import java.util.List; @ResponseTimeLoggingComposition.ResponseTimeLogging @NoCacheComposition.NoCache @ErrorHandlingComposition.ErrorHandling @RequestLoggingComposition.RequestLogging @CorsComposition.Cors public class StandardAccountsControllerV1 extends PoseidonController { @TokenAuthorize(requiredPermission = PermissionType.READ) public Result getAll() { StandardAccountService service = new StandardAccountService(currentApiUser().username); List<StandardAccountModel> standardAccountModels = service.findAll(); List<StandardAccount> standardAccounts = new StandardAccountMapper().mapToApi(standardAccountModels); return ok(Json.toJson(standardAccounts)); } @TokenAuthorize(requiredPermission = PermissionType.READ) public Result get(Long id) { StandardAccountService service = new StandardAccountService(currentApiUser().username); StandardAccountModel standardAccountModel = service.getById(id); if (standardAccountModel == null) return notFound(); StandardAccount standardAccount = new StandardAccountMapper().mapToApi(standardAccountModel); return ok(Json.toJson(standardAccount)); } @TokenAuthorize(requiredPermission = PermissionType.READ) public Result getByName(String name) { StandardAccountService service = new StandardAccountService(currentApiUser().username); StandardAccountModel standardAccountModel = service.findByName(name); if (standardAccountModel == null) return notFound(); StandardAccount standardAccount = new StandardAccountMapper().mapToApi(standardAccountModel); return ok(Json.toJson(standardAccount)); } @TokenAuthorize(requiredPermission = PermissionType.READ) public Result getByAccount(String account) { StandardAccountService service = new StandardAccountService(currentApiUser().username); StandardAccountModel standardAccountModel = service.findByAccount(account); if (standardAccountModel == null) return notFound(); StandardAccount standardAccount = new StandardAccountMapper().mapToApi(standardAccountModel); return ok(Json.toJson(standardAccount)); } @TokenAuthorize(requiredPermission = PermissionType.WRITE) public Result createOrUpdate(String callback) { JsonNode body = request().body().asJson(); ObjectMapper mapper = new ObjectMapper(); StandardAccount apiStandardAccount; try { apiStandardAccount = mapper.readValue(body.toString(),StandardAccount.class); } catch (IOException e) { return badRequest("json post parameter parsing failure: " + e.getMessage()); } StandardAccountModel model = new StandardAccountService(currentApiUser().username).createOrUpdate(apiStandardAccount); StandardAccount newStandardAccount = new StandardAccountMapper().mapToApi(model); JsonNode jsonOut = Json.toJson(newStandardAccount); return ok(callback,jsonOut); } @TokenAuthorize(requiredPermission = PermissionType.WRITE) public Result deleteStandardAccount(Long id) { StandardAccountModel standardAccountModel = new StandardAccountService(currentApiUser().username).deleteStandardAccount(id); StandardAccount order = new StandardAccountMapper().mapToApi(standardAccountModel); return ok(Json.toJson(order)); } }