Commit 1c8557e3 authored by Prayas Jain's avatar Prayas Jain

Employee_Efforts_updated

parent 0f9ac83f
......@@ -40,9 +40,10 @@ public class AccountController {
respDetails = new ResponseDetails(new Date(), AccountStatus.CREATE.getCode(), AccountStatus.CREATE.getMessage(),
"Account description", null, request.getContextPath(), "details", accountPersisted);
}
}else {
respDetails = new ResponseDetails(new Date(), AccountStatus.ALREADY_EXISTED.getCode(), AccountStatus.ALREADY_EXISTED.getMessage(),
"Choose the different account name", null, request.getRequestURI(), "details", account);
}
return new ResponseEntity<ResponseDetails>(respDetails, HttpStatus.OK);
}
......
package com.nisum.myteam.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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.RestController;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.EmployeeEfforts;
import com.nisum.myteam.service.IEmployeeEffortsService;
@RestController
@RequestMapping("/employeeEfforts")
public class EmployeeEffortsController {
@Autowired
private IEmployeeEffortsService employeeEffortService;
@RequestMapping(value = "getWeeklyReport", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<EmployeeEfforts>> employeeLoginsBasedOnDate(
@RequestParam("fromDate") String fromDate, @RequestParam("toDate") String toDate) throws MyTeamException {
List<EmployeeEfforts> employeeEffortsList = new ArrayList<>();
try {
employeeEffortsList = employeeEffortService.getEmployeeEffortsReport(fromDate, toDate);
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseEntity<>(employeeEffortsList, HttpStatus.OK);
}
}
package com.nisum.myteam.model;
import java.io.Serializable;
import org.springframework.data.annotation.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class EmployeeEfforts implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
private String employeeId;
private String employeeName;
private String totalHoursSpentInWeek;
private String projectName;
private String accountName;
private String functionalOrg;
}
package com.nisum.myteam.service;
import java.sql.SQLException;
import java.util.List;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.EmployeeEfforts;
public interface IEmployeeEffortsService {
List<EmployeeEfforts> getEmployeeEffortsReport(String fromDate, String toDate) throws MyTeamException, SQLException;
}
package com.nisum.myteam.service.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.nisum.myteam.configuration.DbConnection;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.EmployeeEfforts;
import com.nisum.myteam.service.IEmployeeEffortsService;
import com.nisum.myteam.utils.MyTeamLogger;
import com.nisum.myteam.utils.MyTeamUtils;
@Component
@Transactional
public class EmployeeEffortsService implements IEmployeeEffortsService {
@Autowired
DbConnection dbConnection;
@Override
public List<EmployeeEfforts> getEmployeeEffortsReport(String fromDate, String toDate)
throws MyTeamException, SQLException {
System.out.println("######################################");
String query = null;
query = MyTeamUtils.EMPLOYEE_EFFORTS_QUERY + "'" + fromDate.replace("-", "/") + "'"
+ MyTeamUtils.EMPLOYEE_EFFORTS_QUERY1 + "'" + toDate.replace("-", "/") + "'"
+ MyTeamUtils.EMPLOYEE_EFFORTS_QUERY2;
System.out.println(query);
List<EmployeeEfforts> listOfEmpEffortsData = getEmployeeEfforts(query);
return listOfEmpEffortsData;
}
private List<EmployeeEfforts> getEmployeeEfforts(String query) {
List<EmployeeEfforts> listOfEmpEffortsData = new ArrayList<>();
try (Connection connection = dbConnection.getDBConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query.toString())) {
while (resultSet.next()) {
EmployeeEfforts employeeEfforts = new EmployeeEfforts();
employeeEfforts.setEmployeeId(resultSet.getString("EmployeeCode"));
employeeEfforts.setEmployeeName(resultSet.getString("FirstName"));
employeeEfforts.setTotalHoursSpentInWeek(resultSet.getString("TotalHoursInWeek") + ':' + resultSet.getString("TotalMinutesInWeek"));
listOfEmpEffortsData.add(employeeEfforts);
}
} catch (Exception e) {
e.printStackTrace();
MyTeamLogger.getInstance().error(e.getMessage());
}
return listOfEmpEffortsData;
}
}
......@@ -89,6 +89,16 @@ public class MyTeamUtils {
public final static String ABESENT_STATUS_QUERY2 =" and emp.EmployeeCode = ";
public final static String ABESENT_STATUS_QUERY3 =" group by convert(varchar,tr.aDateTime, 111), emp.EmployeeCode, emp.FirstName";
public final static String EMPLOYEE_EFFORTS_QUERY = "Select EmployeeCode, FirstName, SUM(MinutesInOffice)/60 TotalHoursInWeek ,"
+ "SUM(MinutesInOffice)%60 TotalMinutesInWeek FROM(select emp.EmployeeCode,emp.FirstName, "
+ "DATEDIFF(MINUTE, MIN(tr.aDateTime),MAX(tr.aDateTime)) MinutesInOffice "
+" from [Transactions] as tr,EmployeeMaster as emp "+
" where tr.EmployeemasterID=emp.EmployeeMasterID and convert(varchar,tr.aDateTime, 111) >=";
public final static String EMPLOYEE_EFFORTS_QUERY1 = " and convert(varchar,tr.aDateTime, 111) <=";
public final static String EMPLOYEE_EFFORTS_QUERY2 = " group by convert(varchar,tr.aDateTime, 111), emp.EmployeeCode, emp.FirstName)"
+"A Group by EmployeeCode, FirstName HAVING SUM(MinutesInOffice) >=3000";
public final static String UNION=" Union ";
//public final static String PRESENT_QUERY = "SELECT DISTINCT Emp.EmployeeCode, Emp.FirstName FROM Transactions AS Tr, EmployeeMaster AS Emp WHERE Tr.EmployeemasterID = Emp.EmployeeMasterID AND CONVERT(VARCHAR,Tr.aDateTime, 111) = '<REPORTDATE>' AND Emp.EmployeeCode IN (<EMPIDS>)";
......
......@@ -8,6 +8,12 @@ myApp.controller("assignEmployeeEffortrsController",function($scope, myFactory,
"account":"",
"functionalOrg":""
};
var today = new Date();
var priorDt = new Date(today.getTime() - (6 * 24 * 60 * 60 * 1000));
$scope.maxDate = today;
$scope.toDate = today;
$scope.fromDate = priorDt;
// +'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i ng-show="row.entity.status == \'InActive\'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</i><i class="fa fa-minus-circle fa-2x" aria-hidden="true" style="font-size:1.5em;margin-top:3px;cursor:pointer;" data-placement="left" title="Delete" onmouseenter="$(this).tooltip(\'show\')" ng-click="grid.appScope.getRowData(row,\'Delete\')"></i></p>';
......@@ -22,8 +28,8 @@ myApp.controller("assignEmployeeEffortrsController",function($scope, myFactory,
columnDefs : [
{field : 'employeeId',displayName: 'Employee Id', enableColumnMenu: false, enableSorting: false,enableFiltering: true},
{field : 'employeeName',displayName: 'Employee Name', enableColumnMenu: false, enableSorting: true,enableFiltering: true},
{name : 'totalHoursSpent', displayName: 'Total Hours Spent', enableColumnMenu: false, enableSorting: false, enableFiltering:false},
{field : 'projectName',displayName: 'Project Name', enableColumnMenu: false, enableSorting: true,enableFiltering: true,},
{name : 'totalHoursSpentInWeek', displayName: 'Total Hours(HH:MM)', enableColumnMenu: false, enableSorting: false, enableFiltering:false,width :230},
{field : 'projectName',displayName: 'Project Name', enableColumnMenu: false, enableSorting: true,enableFiltering: true},
{name : 'account', displayName: 'Account', enableColumnMenu: false, enableSorting: false, enableFiltering:false},
{name : 'functionalOrg', displayName: 'Functional Org', enableColumnMenu: false, enableSorting: false, enableFiltering:false}
],
......@@ -70,5 +76,33 @@ myApp.controller("assignEmployeeEffortrsController",function($scope, myFactory,
};
$scope.gridOptions.data = $scope.records;
$scope.getEmployeeEffortsData = function(){
var fromDate = getFormattedDate($scope.fromDate);
var toDate = getFormattedDate($scope.toDate);
$http({
method : "GET",
url : appConfig.appUri + "employeeEfforts/getWeeklyReport?fromDate=" + fromDate + "&toDate=" +toDate
}).then(function mySuccess(response) {
$scope.gridOptions.data = response.data;
if(response.data.length > 10){
$scope.gridOptions.enablePaginationControls = true;
}
else{
$scope.gridOptions.enablePaginationControls = false;
}
}, function myError(response) {
showAlert("Something went wrong while fetching data!!!");
$scope.gridOptions.data = [];
});
}
function getFormattedDate(date){
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
return year + '-' + (month < 10 ? "0" + month : month) + '-'
+ (day < 10 ? "0" + day : day);
}
});
......@@ -217,7 +217,7 @@ myApp.controller("loginController",function($scope, myFactory, $compile, $window
};
function addEmployee(record){
var urlRequest = appConfig.appUri+ "user/assignEmployeeRole";
var urlRequest = appConfig.appUri+ "employees/"+myFactory.getEmpId();
var req = {
method : 'POST',
url : urlRequest,
......
......@@ -587,6 +587,8 @@ myApp.controller("projectController", function ($scope, myFactory, exportUiGridS
$scope.projectId = dataToPass.projectId;
$scope.projectName = dataToPass.projectName;
$scope.account = dataToPass.account;
$scope.projectStartDate = dataToPass.projectStartDate;
$scope.projectEndDate = dataToPass.projectEndDate;
$scope.managerIds=dataToPass.managerIds;
$scope.projectStatus = dataToPass.status;
$scope.domain = dataToPass.domain;
......
<div class="md-padding" id="popupContainer" ng-controller="assignEmployeeEffortrsController">
<div class="md-padding" id="popupContainer" ng-controller="assignEmployeeEffortrsController" ng-init = "getEmployeeEffortsData()">
<div class="container-fluid mainDivHeaderClass">
<div class="row">
<div class="col-lg-12">
......@@ -12,15 +12,35 @@
<div class="clearfix"></div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div id="gridTest" ui-grid="gridOptions" ui-grid-pagination ui-grid-exporter
class="myGrid">
<div class="form-horizontal">
<div class="form-group">
<div class="form-inline">
<div class="col-lg-4 col-md-4">
<label class="" for="toDate">To Date: <md-datepicker
ng-model="toDate" md-placeholder="Enter date"
md-min-date="minDate" md-max-date="maxDate"
onkeydown="return false"
ng-change="validateDates(toDate, 'ToDate')"></md-datepicker></label>
</div>
<div class="col-lg-2 col-md-2">
<label class="" for="submitBtn"><md-button
class="md-raised md-primary"
ng-click="getEmployeeEffortsData('click');"> <i
class="fa fa-search fa-1x"></i>
Search</md-button></label>
</div>
</div>
</div>
<div class="form-group">
<div class="form-inline col-lg-12">
<div id="gridTest" ui-grid="gridOptions" ui-grid-pagination
class="mygrid grid-full-view">
<div class="watermark" ng-show="!gridOptions.data.length">No
data available</div>
</div>
</div>
</div>
</div>
</div>
......@@ -26,10 +26,10 @@
<b>Project Name:</b> {{projectName}}
</p>
<p>
<b>Project Start Date:</b>
<b>Project Start Date:</b> {{projectStartDate | date : 'dd-MMM-yyyy'}}
</p>
<p>
<b>Project End Date:</b>
<b>Project End Date:</b> {{projectEndDate | date : 'dd-MMM-yyyy'}}
</p>
</div>
<div class="col-xs-6 text-right ">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment