-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
641 additions
and
62 deletions.
There are no files selected for viewing
156 changes: 94 additions & 62 deletions
156
app/controllers/org/graceframework/samples/OwnerController.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,67 +1,99 @@ | ||
package org.graceframework.samples | ||
|
||
import grails.validation.ValidationException | ||
import static org.springframework.http.HttpStatus.* | ||
|
||
class OwnerController { | ||
|
||
def petclinicService | ||
|
||
def add() { | ||
if (request.method == 'GET') { | ||
return [ownerBean: new Owner()] | ||
} | ||
|
||
def owner = petclinicService.createOwner(params.owner_firstName, params.owner_lastName, | ||
params.owner_address, params.owner_city, params.owner_telephone) | ||
|
||
if (owner.hasErrors()) { | ||
return [ownerBean: owner] | ||
} | ||
|
||
redirect action: 'show', id: owner.id | ||
} | ||
|
||
def show() { | ||
def owner = Owner.get(params.id) | ||
if (!owner) { | ||
response.sendError 404 | ||
return | ||
} | ||
|
||
[ownerBean: owner] | ||
} | ||
|
||
def edit() { | ||
def owner = Owner.get(params.id) | ||
if (request.method == 'GET') { | ||
render view: 'add', model: [ownerBean: owner] | ||
return | ||
} | ||
|
||
petclinicService.updateOwner(Owner.get(params.id), params.owner?.firstName, params.owner?.lastName, | ||
params.owner?.address, params.owner?.city, params.owner?.telephone) | ||
|
||
if (owner.hasErrors()) { | ||
render view: 'add', model: [ownerBean: owner] | ||
return | ||
} | ||
|
||
redirect action: 'show', id: owner.id | ||
} | ||
|
||
def find() { | ||
if (!request.post) { | ||
return | ||
} | ||
|
||
def owners = Owner.findAllByLastName(params.lastName) | ||
if (!owners) { | ||
return [message: 'owners.not.found'] | ||
} | ||
|
||
if (owners.size() > 1) { | ||
render view: 'selection', model: [owners: owners] | ||
} | ||
else { | ||
redirect action: 'show', id: owners[0].id | ||
} | ||
} | ||
OwnerService ownerService | ||
|
||
static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"] | ||
|
||
def index(Integer max) { | ||
params.max = Math.min(max ?: 10, 100) | ||
respond ownerService.list(params), model:[ownerCount: ownerService.count()] | ||
} | ||
|
||
def show(Long id) { | ||
respond ownerService.get(id) | ||
} | ||
|
||
def create() { | ||
respond new Owner(params) | ||
} | ||
|
||
def save(Owner owner) { | ||
if (owner == null) { | ||
notFound() | ||
return | ||
} | ||
|
||
try { | ||
ownerService.save(owner) | ||
} catch (ValidationException e) { | ||
respond owner.errors, view:'create' | ||
return | ||
} | ||
|
||
request.withFormat { | ||
form multipartForm { | ||
flash.message = message(code: 'default.created.message', args: [message(code: 'owner.label', default: 'Owner'), owner.id]) | ||
redirect owner | ||
} | ||
'*' { respond owner, [status: CREATED] } | ||
} | ||
} | ||
|
||
def edit(Long id) { | ||
respond ownerService.get(id) | ||
} | ||
|
||
def update(Owner owner) { | ||
if (owner == null) { | ||
notFound() | ||
return | ||
} | ||
|
||
try { | ||
ownerService.save(owner) | ||
} catch (ValidationException e) { | ||
respond owner.errors, view:'edit' | ||
return | ||
} | ||
|
||
request.withFormat { | ||
form multipartForm { | ||
flash.message = message(code: 'default.updated.message', args: [message(code: 'owner.label', default: 'Owner'), owner.id]) | ||
redirect owner | ||
} | ||
'*'{ respond owner, [status: OK] } | ||
} | ||
} | ||
|
||
def delete(Long id) { | ||
if (id == null) { | ||
notFound() | ||
return | ||
} | ||
|
||
ownerService.delete(id) | ||
|
||
request.withFormat { | ||
form multipartForm { | ||
flash.message = message(code: 'default.deleted.message', args: [message(code: 'owner.label', default: 'Owner'), id]) | ||
redirect action:"index", method:"GET" | ||
} | ||
'*'{ render status: NO_CONTENT } | ||
} | ||
} | ||
|
||
protected void notFound() { | ||
request.withFormat { | ||
form multipartForm { | ||
flash.message = message(code: 'default.not.found.message', args: [message(code: 'owner.label', default: 'Owner'), params.id]) | ||
redirect action: "index", method: "GET" | ||
} | ||
'*'{ render status: NOT_FOUND } | ||
} | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
app/services/org/graceframework/samples/OwnerService.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package org.graceframework.samples | ||
|
||
import grails.gorm.services.Service | ||
|
||
@Service(Owner) | ||
interface OwnerService { | ||
|
||
Owner get(Serializable id) | ||
|
||
List<Owner> list(Map args) | ||
|
||
Long count() | ||
|
||
void delete(Serializable id) | ||
|
||
Owner save(Owner owner) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta name="layout" content="main" /> | ||
<g:set var="entityName" value="${message(code: 'owner.label', default: 'Owner')}" /> | ||
<title><g:message code="default.create.label" args="[entityName]" /></title> | ||
</head> | ||
<body> | ||
<div id="content" role="main"> | ||
<div class="container"> | ||
<section class="row"> | ||
<a href="#create-owner" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a> | ||
<div class="col-12" role="navigation"> | ||
<ul class="nav nav-pills"> | ||
<li class="nav-item"> | ||
<a class="nav-link" href="${createLink(uri: '/')}"> | ||
<i class="bi bi-house-fill"></i><g:message code="default.home.label"/> | ||
</a> | ||
</li> | ||
<li class="nav-item"> | ||
<g:link class="nav-link" action="index"> | ||
<i class="bi bi-journals"></i><g:message code="default.list.label" args="[entityName]" /> | ||
</g:link> | ||
</li> | ||
</ul> | ||
</div> | ||
</section> | ||
<section class="row"> | ||
<div id="create-owner" class="col-12 scaffold scaffold-create" role="main"> | ||
<h1><g:message code="default.create.label" args="[entityName]" /></h1> | ||
<g:if test="${flash.message}"> | ||
<div class="alert alert-success" role="status"><i class="bi bi-info-circle">${flash.message}</div> | ||
</g:if> | ||
<g:hasErrors bean="${this.owner}"> | ||
<div class="alert alert-danger" role="alert"> | ||
<ul class="errors"> | ||
<g:eachError bean="${this.owner}" var="error"> | ||
<li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>> | ||
<i class="bi bi-exclamation-circle"></i><g:message error="${error}"/> | ||
</li> | ||
</g:eachError> | ||
</ul> | ||
</div> | ||
</g:hasErrors> | ||
<g:form resource="${this.owner}" method="POST"> | ||
<fieldset class="form"> | ||
<f:all bean="owner" except="pets"/> | ||
</fieldset> | ||
<fieldset class="buttons offset-3"> | ||
<button name="create" class="btn btn-primary"> | ||
<i class="bi bi-journal-plus"></i> | ||
<g:message code="default.button.create.label" default="Create" /> | ||
</button> | ||
</fieldset> | ||
</g:form> | ||
</div> | ||
</section> | ||
</div> | ||
</div> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta name="layout" content="main" /> | ||
<g:set var="entityName" value="${message(code: 'owner.label', default: 'Owner')}" /> | ||
<title><g:message code="default.edit.label" args="[entityName]" /></title> | ||
</head> | ||
<body> | ||
<div id="content" role="main"> | ||
<div class="container"> | ||
<section class="row"> | ||
<a href="#edit-owner" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a> | ||
<div class="col-12" role="navigation"> | ||
<ul class="nav nav-pills"> | ||
<li class="nav-item"> | ||
<a class="nav-link" href="${createLink(uri: '/')}"> | ||
<i class="bi bi-house-fill"></i><g:message code="default.home.label"/> | ||
</a> | ||
</li> | ||
<li class="nav-item"> | ||
<g:link class="nav-link" action="index"> | ||
<i class="bi bi-journals"></i><g:message code="default.list.label" args="[entityName]" /> | ||
</g:link> | ||
</li> | ||
<li class="nav-item"> | ||
<g:link class="nav-link" action="create"> | ||
<i class="bi bi-journal-plus"></i><g:message code="default.new.label" args="[entityName]" /> | ||
</g:link> | ||
</li> | ||
</ul> | ||
</div> | ||
</section> | ||
<section class="row"> | ||
<div id="edit-owner" class="col-12 scaffold scaffold-edit" role="main"> | ||
<h1><g:message code="default.edit.label" args="[entityName]" /></h1> | ||
<g:if test="${flash.message}"> | ||
<div class="alert alert-success" role="status"><i class="bi bi-info-circle"></i>${flash.message}</div> | ||
</g:if> | ||
<g:hasErrors bean="${this.owner}"> | ||
<div class="alert alert-danger" role="alert"> | ||
<ul class="errors"> | ||
<g:eachError bean="${this.owner}" var="error"> | ||
<li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>> | ||
<i class="bi bi-exclamation-circle"></i><g:message error="${error}"/> | ||
</li> | ||
</g:eachError> | ||
</ul> | ||
</div> | ||
</g:hasErrors> | ||
<g:form resource="${this.owner}" method="PUT"> | ||
<g:hiddenField name="version" value="${this.owner?.version}" /> | ||
<fieldset class="form"> | ||
<f:all bean="owner" except="pets" /> | ||
</fieldset> | ||
<fieldset class="buttons offset-3"> | ||
<button class="btn btn-primary"> | ||
<i class="bi bi-journal-check"></i><g:message code="default.button.update.label" default="Update" /> | ||
</button> | ||
</fieldset> | ||
</g:form> | ||
</div> | ||
</section> | ||
</div> | ||
</div> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta name="layout" content="main" /> | ||
<g:set var="entityName" value="${message(code: 'owner.label', default: 'Owner')}" /> | ||
<title><g:message code="default.list.label" args="[entityName]" /></title> | ||
</head> | ||
<body> | ||
<div id="content" role="main"> | ||
<div class="container"> | ||
<section class="row"> | ||
<a href="#list-owner" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a> | ||
<div class="col-12" role="navigation"> | ||
<ul class="nav nav-pills"> | ||
<li class="nav-item"> | ||
<a class="nav-link" href="${createLink(uri: '/')}"> | ||
<i class="bi bi-house-fill"></i><g:message code="default.home.label"/> | ||
</a> | ||
</li> | ||
<li class="nav-item"> | ||
<g:link class="nav-link" action="create"> | ||
<i class="bi bi-journal-plus"></i><g:message code="default.new.label" args="[entityName]" /> | ||
</g:link> | ||
</li> | ||
</ul> | ||
</div> | ||
</section> | ||
<section class="row"> | ||
<div id="list-owner" class="col-12 scaffold scaffold-list" role="main"> | ||
<h1><g:message code="default.list.label" args="[entityName]" /></h1> | ||
<g:if test="${flash.message}"> | ||
<div class="alert alert-success" role="status"><i class="bi bi-info-circle"></i>${flash.message}</div> | ||
</g:if> | ||
<f:table collection="${ownerList}" except="pets" /> | ||
|
||
<g:if test="${ownerCount > params.int('max')}"> | ||
<nav aria-label="Page navigation"> | ||
<g:paginate total="${ownerCount ?: 0}" useIcons="true" align="center" /> | ||
</nav> | ||
</g:if> | ||
</div> | ||
</section> | ||
</div> | ||
</div> | ||
</body> | ||
</html> |
Oops, something went wrong.