Skip to content

Commit 4ab2c38

Browse files
authored
Merge pull request #22 from iammangod96/master
Added reasons feature, view request functionality, logout and others
2 parents 42f3cca + 0f34a4b commit 4ab2c38

File tree

50 files changed

+355
-177
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+355
-177
lines changed

src/main/java/com/sba6/srm/controller/RequestController.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121

2222
import com.sba6.srm.entity.Comment;
2323
import com.sba6.srm.entity.Employee;
24+
import com.sba6.srm.entity.Reason;
2425
import com.sba6.srm.entity.Request;
2526

2627
import com.sba6.srm.service.CommentService;
2728
import com.sba6.srm.service.EmailService;
2829
import com.sba6.srm.service.EmployeeService;
30+
import com.sba6.srm.service.ReasonService;
2931
import com.sba6.srm.service.RequestService;
3032

3133
import io.swagger.annotations.Api;
@@ -44,6 +46,8 @@ public class RequestController {
4446
private EmailService emailService;
4547
@Autowired
4648
private CommentService commentService;
49+
@Autowired
50+
private ReasonService reasonService;
4751

4852

4953
//1. GET Requests for manager GET/api/requests/{mgrId}
@@ -65,7 +69,7 @@ public ResponseEntity updateRequestStatus(@RequestBody Request updateRequest) {
6569
}
6670
req.setTentativeEndDtm(updateRequest.getTentativeEndDtm());
6771
requestService.updateRequest(req);
68-
emailService.mailRequestStatusUpdate(req, "ps2@gmail.com");
72+
emailService.mailRequestStatusUpdate(req, req.getEmployee().getEmail());
6973
return new ResponseEntity<>(HttpStatus.OK);
7074
}
7175

@@ -77,16 +81,22 @@ public Request getRequest(@PathVariable Long empId) {
7781

7882
@ApiOperation(value = "Create request for employee")
7983
@PostMapping(value = "/api/request")
80-
public ResponseEntity createRequest(@RequestBody Request newRequest) {
81-
Employee emp = employeeService.getEmployee(newRequest.getEmployee().getId());
82-
Request req = newRequest;
83-
req.setEmployee(emp);
84+
public ResponseEntity createRequest(@RequestBody Request request) {
85+
Employee emp = employeeService.getEmployee(request.getEmployee().getId());
86+
request.setEmployee(emp);
8487
Date dt = new Date();
85-
req.setStartDtm(dt);
86-
req.setTentativeEndDtm( Date.from( dt.toInstant().plus(10, ChronoUnit.DAYS) ) );
87-
requestService.addRequest(req);
88-
emailService.mailAddRequest(req, "ps2@gmail.com");
89-
return new ResponseEntity<>(HttpStatus.OK);
88+
request.setStartDtm(dt);
89+
request.setTentativeEndDtm( Date.from( dt.toInstant().plus(10, ChronoUnit.DAYS) ) );
90+
requestService.addRequest(request);
91+
//add reasons in reason table
92+
Request addedReq = requestService.getRequestForEmployee(emp.getId());
93+
request.getReasons().forEach(res -> {
94+
res.setRequest(addedReq);
95+
reasonService.addReason(res);
96+
});
97+
98+
emailService.mailAddRequest(request, request.getEmployee().getEmail());
99+
return new ResponseEntity(HttpStatus.OK);
90100
}
91101

92102
@ApiOperation(value = "Get employee details")
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.sba6.srm.entity;
2+
3+
import javax.persistence.Column;
4+
import javax.persistence.Entity;
5+
import javax.persistence.GeneratedValue;
6+
import javax.persistence.Id;
7+
import javax.persistence.JoinColumn;
8+
import javax.persistence.ManyToOne;
9+
import javax.persistence.Table;
10+
11+
import lombok.Data;
12+
13+
@Entity
14+
@Table(name = "reason")
15+
public @Data class Reason {
16+
17+
@Id @GeneratedValue
18+
@Column(name = "ID")
19+
private Long id;
20+
21+
@ManyToOne
22+
@JoinColumn(name = "REQ_ID")
23+
private Request request;
24+
25+
@Column(name = "REASON_ID")
26+
private Long reasonId;
27+
}

src/main/java/com/sba6/srm/entity/Request.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import java.util.Date;
5+
import java.util.List;
56

67
import javax.persistence.Column;
78
import javax.persistence.Entity;
@@ -12,11 +13,11 @@
1213
import javax.persistence.Id;
1314
import javax.persistence.JoinColumn;
1415
import javax.persistence.ManyToOne;
16+
import javax.persistence.OneToMany;
1517
import javax.persistence.Table;
16-
import javax.persistence.Temporal;
17-
import javax.persistence.TemporalType;
1818

1919
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
20+
import com.fasterxml.jackson.annotation.JsonIgnore;
2021
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2122
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
2223
import com.sba6.srm.enumsconstants.RequestStatus;
@@ -55,5 +56,8 @@
5556

5657
@Column(name="TENTATIVE_END_DTM")
5758
private Date tentativeEndDtm;
59+
60+
@OneToMany(mappedBy="request")
61+
private List<Reason> reasons;
5862

5963
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.sba6.srm.repository;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
5+
import com.sba6.srm.entity.Reason;
6+
7+
public interface ReasonRepository extends JpaRepository<Reason, Long> {
8+
9+
}

src/main/java/com/sba6/srm/repository/RequestRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
public interface RequestRepository extends JpaRepository<Request, Long>{
1212

13-
@Query("select r from Request r JOIN r.employee e where e.mgrId=:mgrId and r.employee.id=e.id and r.status!= 'INACTIVATED'")
13+
@Query("select r from Request r JOIN r.employee e where e.mgrId=:mgrId and r.employee.id=e.id and r.status!= 'INACTIVATED' "
14+
+ "order by (case when r.status='OPEN' then 0 else 1 end), (case when r.status='INDISCUSSION' then 0 else 1 end), r.status")
1415
public List<Request> getRequestsForManager(@Param("mgrId") Long mgrId);
1516

1617
@Query("select r from Request r JOIN r.employee e where e.id=:empid and r.employee.id=e.id and (r.status= 'OPEN' or r.status= 'INDISCUSSION')")
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.sba6.srm.service;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.stereotype.Service;
5+
6+
import com.sba6.srm.entity.Reason;
7+
import com.sba6.srm.entity.Request;
8+
import com.sba6.srm.repository.ReasonRepository;
9+
10+
@Service
11+
public class ReasonService {
12+
13+
@Autowired
14+
private ReasonRepository reasonRepository;
15+
16+
public void addReason(Reason reason) {
17+
reasonRepository.save(reason);
18+
}
19+
}

src/main/web-app/src/app/app-routing.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { BaseViewComponent } from './base-view/base-view.component';
55
import { RequestComponent } from './request/request.component';
66
import { ManagerDashboardComponent } from './manager-dashboard/manager-dashboard.component';
77
import { LoginComponent } from './login/login.component';
8-
import { AuthGuard } from './auth.guard';
9-
import { ManagerGuard } from './manager.guard';
8+
import { AuthGuard } from './auth-guards/auth.guard';
9+
import { ManagerGuard } from './auth-guards/manager.guard';
1010

1111

1212
const routes: Routes = [

src/main/web-app/src/app/app.module.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ import { ManagerDashboardComponent } from './manager-dashboard/manager-dashboard
1212
import { AppRoutingModule } from './app-routing.module';
1313

1414
import { MaterialModules } from './material';
15-
import { HttpClientModule,HTTP_INTERCEPTORS } from '@angular/common/http';
15+
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
1616

1717
import 'hammerjs';
18-
import { GenericDialogComponent } from './generic-dialog/generic-dialog.component';
19-
import { DisplayDataDialogComponent } from './display-data-dialog/display-data-dialog.component';
20-
import { RequestDialogComponent } from './request-dialog/request-dialog.component';
18+
import { GenericDialogComponent } from './dialog-boxes/generic-dialog/generic-dialog.component';
19+
import { DisplayDataDialogComponent } from './dialog-boxes/display-data-dialog/display-data-dialog.component';
20+
import { RequestDialogComponent } from './dialog-boxes/request-dialog/request-dialog.component';
2121
import { LoginComponent } from './login/login.component';
22-
import { DiscussionDialogComponent } from './discussion-dialog/discussion-dialog.component';
23-
import {TokenInterceptorService} from './token-interceptor.service';
22+
import { DiscussionDialogComponent } from './dialog-boxes/discussion-dialog/discussion-dialog.component';
23+
import {TokenInterceptorService} from './services/token-interceptor.service';
2424

2525

2626

@@ -46,11 +46,11 @@ import {TokenInterceptorService} from './token-interceptor.service';
4646
ReactiveFormsModule,
4747
HttpClientModule
4848
],
49-
entryComponents:[GenericDialogComponent, DisplayDataDialogComponent, RequestDialogComponent, DiscussionDialogComponent],
49+
entryComponents: [GenericDialogComponent, DisplayDataDialogComponent, RequestDialogComponent, DiscussionDialogComponent],
5050
providers: [{
51-
provide:HTTP_INTERCEPTORS,
52-
useClass:TokenInterceptorService,
53-
multi:true
51+
provide: HTTP_INTERCEPTORS,
52+
useClass: TokenInterceptorService,
53+
multi: true
5454
}],
5555
bootstrap: [AppComponent]
5656
})

src/main/web-app/src/app/auth.guard.ts renamed to src/main/web-app/src/app/auth-guards/auth.guard.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Injectable } from '@angular/core';
22
import { CanActivate, Router,RouterStateSnapshot,ActivatedRouteSnapshot} from '@angular/router';
3-
import {AuthService} from './auth.service';
3+
import {AuthService} from '../services/auth.service';
44

55
@Injectable({
66
providedIn: 'root'

0 commit comments

Comments
 (0)