This is an automated email from the git hooks/post-receive script. New commit to branch feature/882-angular in repository chorem. See http://git.chorem.org/chorem.git commit 56dd045646370eb1ac0a2c82bc8674944939fcb1 Author: kootox <jean.couteau@gmail.com> Date: Wed Mar 4 16:02:44 2015 +0100 refs #882 : Now got notes and employees displayed on company detail panel --- .../webmotion/actions/crm/EmployeeAction.java | 38 +++++++++ .../chorem/webmotion/actions/crm/EmployeeDTO.java | 91 ++++++++++++++++++++++ .../chorem/webmotion/actions/crm/NoteAction.java | 38 +++++++++ .../org/chorem/webmotion/actions/crm/NoteDTO.java | 72 +++++++++++++++++ .../chorem/webmotion/actions/crm/PersonDTO.java | 48 ++++++++++++ chorem-webmotion/src/main/resources/mapping | 8 +- .../WEB-INF/jsp/crm/partials/companyPanel.html | 6 +- .../jsp/crm/partials/employeesListCard.html | 29 +++++++ .../WEB-INF/jsp/crm/partials/notesListCard.html | 28 +++++++ chorem-webmotion/src/main/webapp/js/crm.js | 20 +++++ 10 files changed, 373 insertions(+), 5 deletions(-) diff --git a/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/EmployeeAction.java b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/EmployeeAction.java new file mode 100644 index 0000000..a9a04b1 --- /dev/null +++ b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/EmployeeAction.java @@ -0,0 +1,38 @@ +package org.chorem.webmotion.actions.crm; + +import org.chorem.ChoremClient; +import org.chorem.entities.Employee; +import org.debux.webmotion.server.WebMotionController; +import org.debux.webmotion.server.render.Render; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; +import org.nuiton.wikitty.query.WikittyQueryResult; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by couteau on 04/03/15. + */ +public class EmployeeAction extends WebMotionController{ + + public Render listEmployees(ChoremClient client, String id) { + //recuperation des notes + WikittyQuery employeesQuery = new WikittyQueryMaker().and() + .exteq(Employee.EXT_EMPLOYEE) + .eq(Employee.FQ_FIELD_EMPLOYEE_COMPANY, id) + .end().setLimit(WikittyQuery.MAX); + + WikittyQueryResult<String> employeesIds = client.findAllByQuery(employeesQuery); + + List<Employee> employees = client.restore(Employee.class, employeesIds.getAll(),"Company.person"); + + List<EmployeeDTO> employeeDTOs = new ArrayList<>(); + + for (Employee employee:employees){ + employeeDTOs.add(new EmployeeDTO(employee)); + } + + return renderJSON(employeeDTOs); + } +} diff --git a/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/EmployeeDTO.java b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/EmployeeDTO.java new file mode 100644 index 0000000..0e699aa --- /dev/null +++ b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/EmployeeDTO.java @@ -0,0 +1,91 @@ +package org.chorem.webmotion.actions.crm; + +import org.chorem.entities.Company; +import org.chorem.entities.Employee; +import org.chorem.entities.Person; + +/** + * Created by couteau on 04/03/15. + */ +public class EmployeeDTO { + + String wikittyId; + + String companyId; + + CompanyDTO company; + + String personId; + + PersonDTO person; + + String description; + + public EmployeeDTO() { + } + + public EmployeeDTO(Employee employee){ + this.companyId = employee.getCompany(); + this.personId = employee.getPerson(); + this.description = employee.getDescription(); + this.wikittyId = employee.getWikittyId(); + + Company company = employee.getCompany(false); + if (company != null) { + this.company = new CompanyDTO(company); + } + + Person person = employee.getPerson(false); + if (person != null) { + this.person = new PersonDTO(person); + } + } + + public String getCompanyId() { + return companyId; + } + + public void setCompanyId(String companyId) { + this.companyId = companyId; + } + + public String getPersonId() { + return personId; + } + + public void setPersonId(String personId) { + this.personId = personId; + } + + public CompanyDTO getCompany() { + return company; + } + + public void setCompany(CompanyDTO company) { + this.company = company; + } + + public PersonDTO getPerson() { + return person; + } + + public void setPerson(PersonDTO person) { + this.person = person; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getWikittyId() { + return wikittyId; + } + + public void setWikittyId(String wikittyId) { + this.wikittyId = wikittyId; + } +} diff --git a/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/NoteAction.java b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/NoteAction.java new file mode 100644 index 0000000..5dff8c3 --- /dev/null +++ b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/NoteAction.java @@ -0,0 +1,38 @@ +package org.chorem.webmotion.actions.crm; + +import org.chorem.ChoremClient; +import org.chorem.entities.Note; +import org.debux.webmotion.server.WebMotionController; +import org.debux.webmotion.server.render.Render; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; +import org.nuiton.wikitty.query.WikittyQueryResult; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by couteau on 04/03/15. + */ +public class NoteAction extends WebMotionController{ + + public Render listNotes(ChoremClient client, String id) { + //recuperation des notes + WikittyQuery notesQuery = new WikittyQueryMaker().and() + .exteq(Note.EXT_NOTE) + .eq(Note.FQ_FIELD_NOTE_TARGET, id) + .end().setLimit(WikittyQuery.MAX); + + WikittyQueryResult<Note> notes = + client.findAllByQuery(Note.class, + notesQuery); + + List<NoteDTO> noteDTOs = new ArrayList<>(); + + for (Note note:notes.getAll()){ + noteDTOs.add(new NoteDTO(note)); + } + + return renderJSON(noteDTOs); + } +} diff --git a/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/NoteDTO.java b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/NoteDTO.java new file mode 100644 index 0000000..b87b4bb --- /dev/null +++ b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/NoteDTO.java @@ -0,0 +1,72 @@ +package org.chorem.webmotion.actions.crm; + +import org.chorem.entities.Note; + +import java.util.Date; + +/** + * Created by couteau on 04/03/15. + */ +public class NoteDTO { + + String wikittyId; + + String target; + + String content; + + Date date; + + String title; + + public NoteDTO() { + } + + public NoteDTO(Note note){ + this.target = note.getTarget(); + this.content = note.getContent(); + this.date = note.getDate(); + this.title = note.getTitle(); + this.wikittyId = note.getWikittyId(); + } + + public String getTarget() { + return target; + } + + public void setTarget(String target) { + this.target = target; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getWikittyId() { + return wikittyId; + } + + public void setWikittyId(String wikittyId) { + this.wikittyId = wikittyId; + } +} diff --git a/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/PersonDTO.java b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/PersonDTO.java new file mode 100644 index 0000000..d93324b --- /dev/null +++ b/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/crm/PersonDTO.java @@ -0,0 +1,48 @@ +package org.chorem.webmotion.actions.crm; + +import org.chorem.entities.Person; + +/** + * Created by couteau on 04/03/15. + */ +public class PersonDTO { + + protected String wikittyId; + + protected String firstName; + + protected String lastName; + + public PersonDTO() { + } + + public PersonDTO(Person person) { + this.firstName = person.getFirstName(); + this.lastName = person.getLastName(); + this.wikittyId = person.getWikittyId(); + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getWikittyId() { + return wikittyId; + } + + public void setWikittyId(String wikittyId) { + this.wikittyId = wikittyId; + } +} diff --git a/chorem-webmotion/src/main/resources/mapping b/chorem-webmotion/src/main/resources/mapping index a6c90d5..bc14900 100644 --- a/chorem-webmotion/src/main/resources/mapping +++ b/chorem-webmotion/src/main/resources/mapping @@ -95,13 +95,19 @@ GET /* DecoratorFilter.decorate * /crm/quotation/edit/{id} action:crm.QuotationAction.edit * /crm/export action:crm.ExportAction.exportContactBase GET /crm/companies.html view:crm/angularTest.html + GET /crm/companies action:crm.CompaniesAction.listCompanies GET /crm/companies/{id} action:crm.CompaniesAction.getCompany POST /crm/companies/{id} action:crm.CompaniesAction.updateCompany PUT /crm/companies/add action:crm.CompaniesAction.createCompany +DELETE /crm/companies/{id} action:crm.CompaniesAction.deleteCompany -DELETE /crm/companies/{id} action:crm.CompaniesAction.deleteCompany GET /crm/companies/{id}/contactDetails action:crm.ContactDetailsAction.listContactDetails + +GET /crm/companies/{id}/notes action:crm.NoteAction.listNotes + +GET /crm/companies/{id}/employees action:crm.EmployeeAction.listEmployees + GET /crm/partials/{page} view:crm/partials/{page} GET /rest/project/projects?page={page}&count={count} action:project.ProjectsAction.findAllProjects page=1,count=10 diff --git a/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/companyPanel.html b/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/companyPanel.html index 86a1f7e..bcf7732 100644 --- a/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/companyPanel.html +++ b/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/companyPanel.html @@ -5,9 +5,7 @@ <ng-include src="'partials/contactDetailsListCard.html'"></ng-include> <!-- notes card --> -<div id="notesListCard"> - <%@include file="cards/notesListCard.jsp" %> -</div> +<ng-include src="'partials/notesListCard.html'"></ng-include> <!--employees card --> -<%@include file="cards/employeesListCard.jsp" %> \ No newline at end of file +<ng-include src="'partials/employeesListCard.html'"></ng-include> \ No newline at end of file diff --git a/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/employeesListCard.html b/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/employeesListCard.html new file mode 100644 index 0000000..6a0bc09 --- /dev/null +++ b/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/employeesListCard.html @@ -0,0 +1,29 @@ +<div class="panel panel-default"> + <div class="panel-heading clearfix"> + <h3 class="panel-title pull-left">Employés</h3> + <div class="btn-group pull-right visible-xs"> + <a class="btn btn-primary" href="#" + data-toggle="modal" + data-target="#editModal"> + <i class="fa fa-pencil"></i> + <span>Edit</span> + </a> + </div> + <a class="btn btn-primary pull-right hidden-xs" href="#" + data-toggle="modal" + data-target="#editModal"> + <i class="fa fa-pencil"></i> + <span>Edit</span> + </a> + </div> + <div class="list-group"> + <div class="list-group-item" + ng-repeat="employee in employees"> + <label>{{note.date}}</label> + <h4 class="list-group-item-heading">{{employee.person.firstName}} {{employee.person.lastName}}</h4> + </div> + </div> + <div class="panel-footer"> + <small class="pull-left"> </small> + </div> +</div> \ No newline at end of file diff --git a/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/notesListCard.html b/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/notesListCard.html new file mode 100644 index 0000000..13069bd --- /dev/null +++ b/chorem-webmotion/src/main/webapp/WEB-INF/jsp/crm/partials/notesListCard.html @@ -0,0 +1,28 @@ +<div class="panel panel-default"> + <div class="panel-heading clearfix"> + <h3 class="panel-title pull-left">Notes</h3> + <div class="btn-group pull-right visible-xs"> + <a class="btn btn-primary" href="#" + data-toggle="modal" + data-target="#editModal"> + <i class="fa fa-pencil"></i> + <span>Edit</span> + </a> + </div> + <a class="btn btn-primary pull-right hidden-xs" href="#" + data-toggle="modal" + data-target="#editModal"> + <i class="fa fa-pencil"></i> + <span>Edit</span> + </a> + </div> + <div class="list-group"> + <div class="list-group-item" ng-repeat="note in notes"> + <label>{{note.date}}</label> + <h4 class="list-group-item-heading">{{note.title}}</h4> + </div> + </div> + <div class="panel-footer"> + <small class="pull-left"> </small> + </div> +</div> \ No newline at end of file diff --git a/chorem-webmotion/src/main/webapp/js/crm.js b/chorem-webmotion/src/main/webapp/js/crm.js index e172a06..001603c 100644 --- a/chorem-webmotion/src/main/webapp/js/crm.js +++ b/chorem-webmotion/src/main/webapp/js/crm.js @@ -120,7 +120,27 @@ crmTest.controller('CompanyDetailController', function ($scope, $http, $routePar } }; + //get back notes for the company + $scope.updateNotes=function(){ + if ($scope.company){ + $http.get('companies/'+$scope.company.wikittyId+"/notes").success(function(data){ + $scope.notes = data; + }); + } + }; + + //get back employees for the company + $scope.updateEmployees=function(){ + if ($scope.company){ + $http.get('companies/'+$scope.company.wikittyId+"/employees").success(function(data){ + $scope.employees = data; + }); + } + }; + $scope.updateContactDetails(); + $scope.updateNotes(); + $scope.updateEmployees(); }); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.