Skip to content

Commit

Permalink
Major Commit: Updated code to add functionality to display the Client…
Browse files Browse the repository at this point in the history
… Details Summary, Client Details by id, save or update the Client Details information.

  - Updated the code to retrieve, save or update the Immigration Details.
  • Loading branch information
mahi-mullapudi committed Sep 10, 2018
1 parent 1d4aa62 commit 2dcf67a
Show file tree
Hide file tree
Showing 15 changed files with 356 additions and 110 deletions.
11 changes: 10 additions & 1 deletion src/main/java/com/tutorialq/entities/ClientDetail.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.*;
Expand All @@ -23,7 +24,6 @@ public class ClientDetail extends AuditModel implements Serializable {
private long clientDetailsId;
private String clientName; //Name of the Client.
private String clientStreet;
private String clientAddress;//Address of the Client.
private String clientCity;
private String clientState;
private String clientZip;
Expand Down Expand Up @@ -54,5 +54,14 @@ public class ClientDetail extends AuditModel implements Serializable {
private String nameCreated;
private String nameLastModified;
private String nameApproved;
@Transient
private String clientAddress;//Address of the Client.

public String getClientAddress() {
return (StringUtils.isNotBlank(this.clientStreet) ? (this.clientStreet + " ") : "")
+ (StringUtils.isNotBlank(this.clientCity) ? (this.clientCity + " ") : "")
+ (StringUtils.isNotBlank(this.clientState) ? (this.clientState + " ") : "")
+ (StringUtils.isNotBlank(this.clientZip) ? (this.clientZip + " ") : "");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -180,16 +180,16 @@ public String getImmigrationDetails(@RequestParam("empId") Long empId,
redirectAttributes.addFlashAttribute("msg", "Your role do not have access to view the Immigration Details. Please login as Supervisor/Admin to continue.");
return "redirect:/login";
}
List<ImmigrationDetail> immigrationDetailsList = employeeService.getImmigrationDetailsSummary(empId);
ImmigrationDetail immigrationDetail = new ImmigrationDetail();
immigrationDetail.setEmployee(employeeService.getEmployeeById(empId));
model.addAttribute("empId", empId);
model.addAttribute("immigrationDetails", new ImmigrationDetail());
model.addAttribute("immigrationDetailsSummary", immigrationDetailsList);
model.addAttribute("immigrationDetails", immigrationDetail);
return "staff/immigrationDetails";
}

@PostMapping("/immiDetails")
public String submitImmigrationDetails(
@ModelAttribute("clientDetails") ImmigrationDetail immigrationDetails, BindingResult result,
@ModelAttribute("immigrationDetails") ImmigrationDetail immigrationDetails, BindingResult result,
SessionStatus status, Model model, HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
log.info("Inside immigrationDetails method of EmployeeDetails Controller:: immigrationDetailsId: " + immigrationDetails.getImmiDetailsId());
Employee employee = (Employee) session.getAttribute("user");
Expand All @@ -213,12 +213,12 @@ public String submitImmigrationDetails(
} catch (Exception ex) {
log.error("Exception while saving Immigration details: " + ex);
model.addAttribute("css", "danger");
model.addAttribute("msg", "Technical issue while saving the Client information. " +
model.addAttribute("msg", "Technical issue while saving the Immigration Details. " +
"Please contact Admin for more information!!");
throw new CustomException("");
}
log.info("Successfully saved the Client Details information!!!");
redirectAttributes.addFlashAttribute("msg", "You have successfully updated Employee Details.");
redirectAttributes.addFlashAttribute("msg", "You have successfully updated Immigration Details.");
redirectAttributes.addFlashAttribute("css", "success");

return "redirect:/immiDetails?empId=" + immigrationDetails.getEmployee().getEmployeeId();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.tutorialq.web.restControllers;

import com.tutorialq.entities.ClientDetail;
import com.tutorialq.entities.Employee;
import com.tutorialq.entities.ImmigrationDetail;
import com.tutorialq.services.EmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -9,6 +11,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
Expand All @@ -28,7 +31,55 @@ public ResponseEntity<List<Employee>> getEmpDetailsSummary() {
List<Employee> employeeDetailsSummary = employeeService.getEmployeeDetailsSummary();
return new ResponseEntity(employeeDetailsSummary, new HttpHeaders(), HttpStatus.OK);
} catch (Exception ex) {
log.error("Exception while getting Employee Details Summary: " + ex);
log.error("Exception while getting Employee Details Summary: ", ex);
return new ResponseEntity(HttpStatus.BAD_REQUEST);
}
}

@GetMapping("/clientDetailsSummary")
public ResponseEntity<List<ClientDetail>> getClientDetailsSummary(@RequestParam("empId") Long empId) {
log.info("Inside getClientDetailsSummary method of Employee Rest Controller..");
try {
List<ClientDetail> clientDetailsSummary = employeeService.getClientDetailsSummary(empId);
return new ResponseEntity(clientDetailsSummary, new HttpHeaders(), HttpStatus.OK);
} catch (Exception ex) {
log.error("Exception while getting Client Details Summary: ", ex);
return new ResponseEntity(HttpStatus.BAD_REQUEST);
}
}

@GetMapping("/clientDetailById")
public ResponseEntity<ClientDetail> getClientDetailById(@RequestParam("clientDetailsId") Long clientDetailsId) {
log.info("Inside getClientDetailById method of Employee Rest Controller:: clientDetailsId: " + clientDetailsId);
try {
ClientDetail clientDetail = employeeService.getClientDetails(clientDetailsId);
return new ResponseEntity(clientDetail, new HttpHeaders(), HttpStatus.OK);
} catch (Exception ex) {
log.error("Exception while getting Client Detail: ", ex);
return new ResponseEntity(HttpStatus.BAD_REQUEST);
}
}

@GetMapping("/immigrationDetails")
public ResponseEntity<List<ImmigrationDetail>> getImmigrationDetailsSummary(@RequestParam("empId") Long empId) {
log.info("Inside getImmigrationDetailsSummary method of Employee Rest Controller:: empId: " + empId);
try {
List<ImmigrationDetail> immigrationDetailList = employeeService.getImmigrationDetailsSummary(empId);
return new ResponseEntity(immigrationDetailList, new HttpHeaders(), HttpStatus.OK);
} catch (Exception ex) {
log.error("Exception while getting Client Details Summary: ", ex);
return new ResponseEntity(HttpStatus.BAD_REQUEST);
}
}

@GetMapping("/immigrationDetailById")
public ResponseEntity<ImmigrationDetail> getImmigrationDetailById(@RequestParam("immigrationDetailId") Long immigrationDetailId) {
log.info("Inside getImmigrationDetailById method of Employee Rest Controller:: immigrationDetailsId: " + immigrationDetailId);
try {
ImmigrationDetail immigrationDetail = employeeService.getImmigrationDetails(immigrationDetailId);
return new ResponseEntity(immigrationDetail, new HttpHeaders(), HttpStatus.OK);
} catch (Exception ex) {
log.error("Exception while getting Immigration Detail: ", ex);
return new ResponseEntity(HttpStatus.BAD_REQUEST);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public boolean supports(Class<?> clazz) {
public void validate(Object target, Errors errors) {

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "clientName", "NotEmpty.clientDetails.clientName");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "clientAddress", "NotEmpty.clientDetails.clientAddress");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "clientStreet", "NotEmpty.clientDetails.clientAddress");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "clientCity", "NotEmpty.clientDetails.clientCity");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "clientState", "NotEmpty.clientDetails.clientState");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "clientZip", "NotEmpty.clientDetails.confirm.clientZip");
Expand Down
157 changes: 106 additions & 51 deletions src/main/resources/static/js/clientDetails.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
$(document).ready(function () {
$('[data-toggle="tooltip"]').tooltip();
$('.phone_us').mask('(000)000-0000');
//$('.phone_us').mask('(000)000-0000');

$('.datepicker').datepicker();
fetchClientData();
$('#viewClientDetailsDiv').hide();

/*$('.datepicker').datepicker();
$('.date_format').datetimepicker({
sideBySide: true, keepOpen: false, useCurrent: false, format: 'MM/DD/YYYY',
icons: {
Expand All @@ -14,64 +16,117 @@ $(document).ready(function () {
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right'
}
});

});*/
});

/* Datatable component */
function fetchSummary(clientDetailsSummary) {
var summaryTitles = [
{"sTitle": "Client Name", "type": "natural-nohtml", "targets": "0"},
{"sTitle": "Client Address"},
{"sTitle": "Contract Period"},
{"sTitle": "Contract Company"},
{"sTitle": "Vendor Company"},
{"sTitle": "Vendor Contact"}
];

var columnDefs = [{"className": "dt-center", "targets": "_all"}];
console.time("Datatable Creation");
var dataSet = [];
/**
* Retrieve Client Details Summary from the database and populate the datatable with corresponding columns.
*
*/
function fetchClientData() {

if (clientDetailsSummary.length !== 0) {
$.each(clientDetailsSummary, function (index, clientDetails) {
var dataRow = [];
dataRow.push("<a href=\"/employeeManagement/registration/viewEdit?clientDetailsId=" + clientDetails.clientDetailsId
+ "\" target=\"_blank\" class=\"btn btn-link\">" + clientDetails.clientName + "</a>");
dataRow.push((clientDetails.clientStreet || '') + ' '
+ (clientDetails.clientAddress || '') + ' '
+ (clientDetails.clientCity || '') + ' '
+ (clientDetails.clientState || '')
+ (clientDetails.clientZip));
dataRow.push((clientDetails.contractStartDate) + ' - ' + (clientDetails.contractEndDate));
dataRow.push(contractCompany);
dataRow.push(vendorCompany);
dataRow.push(vendorContactName);
dataSet.push(dataRow);
});
setSummaryTable(dataSet, summaryTitles, columnDefs);
} else {
console.info("No Data Found");
setSummaryTable(dataSet, summaryTitles, columnDefs);
}
console.timeEnd("Datatable Creation");
}
var empId = $('#employeeId').val();

//Datatable creation
function setSummaryTable(summaryData, titleData, columndef) {
if ($.fn.dataTable.isDataTable('#clientDetailsSummary')) {
// Table Already Exists - dispose it and recreate.
var table = $('#clientDetailsSummary').DataTable();
table.destroy();
}
var dataTable;
dataTable = $('#clientDetailsSummary').DataTable({
buttons: ['pdf', 'excel'],
aaSorting: [],
columnDefs: columndef,
fixedColumns: true,
data: summaryData,

var table = $('#clientDetailsSummary').DataTable({
ajax: {
url: '/employeeManagement/api/clientDetailsSummary?empId=' + empId,
dataSrc: ''
},
dom: 'lBfrtip',
aoColumns: titleData
buttons: [
'excel'
],
columns: [
{
data: 'clientName'
},
{
data: 'clientAddress'
},
{
data: 'contractStartDate',
mRender: function (data) {
return moment(data).format("MM/DD/YYYY");
}
},
{
data: 'contractEndDate',
mRender: function (data) {
return moment(data).format("MM/DD/YYYY");
}
},
{
data: 'contractCompany'
},
{
data: 'vendorCompany'
},
{
data: 'vendorContactName'
},
{
data: 'clientDetailsId',
mRender: function (data, type, row) {
var link = '';
link = '<button class="btn-link" onclick="getClientDetailById(' + data + ', false)">View</button>';
return link;
}
}
],
order: [[0, 'desc'], [2, 'desc']]
})
}

/**
* Retrieve Client Details information based on given clientDetailsId and populate the View Client Details fields on the Client Details page.
* @param clientDetailsId
*/
function getClientDetailById(clientDetailsId) {
console.log("Inside getClientDetailById method:: clientDetailsId: " + clientDetailsId);
$.ajax({
type: 'GET',
url: '/employeeManagement/api/clientDetailById?clientDetailsId=' + clientDetailsId,
success: function (responsedata) {
console.log("Inside success function after getting the Client Details information.");
populateClientDetail(responsedata);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
console.log(jqXHR);
}
});
}

/**
* Populates the Client Detail Information into the View Client Detail fields from the returned clientDetailObj.
* @param clientDetailObj
*/
function populateClientDetail(clientDetailObj) {
$('#viewClientDetailsDiv').show();
console.log("Inside populate Client Detail method ::");
$('#clientDetailsId').val(clientDetailObj.clientDetailsId);
$('#clientName').val(clientDetailObj.clientName);
$('#clientStreet').val(clientDetailObj.clientStreet);
$('#clientCity').val(clientDetailObj.clientCity);
$('#clientState').val(clientDetailObj.clientState);
$('#clientZip').val(clientDetailObj.clientZip);
$('#contractCompany').val(clientDetailObj.contractCompany);
$('#vendorCompany').val(clientDetailObj.vendorCompany);
$('#contractStartDate').val(moment(clientDetailObj.contractStartDate).format("MM/DD/YYYY"));
$('#contractEndDate').val(moment(clientDetailObj.contractEndDate).format("MM/DD/YYYY"));
$('#vendorContactName').val(clientDetailObj.vendorContactName);
$('#vendorPhone').val(clientDetailObj.vendorPhone);
$('#vendorEmail').val(clientDetailObj.vendorEmail);
$('#paymentTerms').val(clientDetailObj.paymentTerms);
$('#invoiceContactName').val(clientDetailObj.invoiceContactName);
$('#invoiceContactPhone').val(clientDetailObj.invoiceContactPhone);
$('#invoiceContactEmail').val(clientDetailObj.invoiceContactEmail);
$('#invoiceFrequency').val(clientDetailObj.invoiceFrequency);
$('#comments').val(clientDetailObj.comments);
}
Loading

0 comments on commit 2dcf67a

Please sign in to comment.