From 5252d3b81f35868aa7597792443ca29b2047f70a Mon Sep 17 00:00:00 2001
From: lakshmikommalapati <lakshmi.kommalapati@tarento.com>
Date: Fri, 4 Aug 2023 18:43:45 +0530
Subject: [PATCH] create new Api for guest user can create ticket

---
 .../controller/GrievanceRaiseController.java  | 36 +++++++++++
 .../upsmf/grievance/model/GrievanceRaise.java | 40 +++++++++++++
 .../grievance/model/GrievanceTicket.java      | 16 +++++
 .../org/upsmf/grievance/model/Ticket.java     |  5 ++
 .../service/GrievanceRaiseService.java        | 10 ++++
 .../impl/GrievanceRaiseServiceImpl.java       | 59 +++++++++++++++++++
 .../java/org/upsmf/grievance/util/Sql.java    |  2 +-
 src/main/resources/application.properties     |  8 ++-
 8 files changed, 172 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java
 create mode 100644 src/main/java/org/upsmf/grievance/model/GrievanceRaise.java
 create mode 100644 src/main/java/org/upsmf/grievance/model/GrievanceTicket.java
 create mode 100644 src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java
 create mode 100644 src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java

diff --git a/src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java b/src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java
new file mode 100644
index 0000000..ef8bb8c
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java
@@ -0,0 +1,36 @@
+package org.upsmf.grievance.controller;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.upsmf.grievance.model.GrievanceRaise;
+import org.upsmf.grievance.model.GrievanceTicket;
+import org.upsmf.grievance.model.Ticket;
+import org.upsmf.grievance.service.GrievanceRaiseService;
+import org.upsmf.grievance.util.*;
+
+import javax.annotation.security.PermitAll;
+
+@RestController
+@RequestMapping("/grievance")
+public class GrievanceRaiseController {
+    @Autowired
+    private GrievanceRaiseService service;
+    @Autowired
+    private Ticket ticket;
+
+    @PostMapping(value ="/grievanceRaise")
+    public String addGrievance(@RequestBody GrievanceRaise grievance)
+            throws JsonProcessingException {
+        GrievanceTicket grievanceTicket = service.addGrievance(grievance);
+        // validating response
+        if (grievanceTicket != null) {
+            // return success response
+            return ResponseGenerator.successResponse(grievanceTicket);
+        }
+        // return error response
+        return ResponseGenerator.failureResponse();
+    }
+
+
+}
diff --git a/src/main/java/org/upsmf/grievance/model/GrievanceRaise.java b/src/main/java/org/upsmf/grievance/model/GrievanceRaise.java
new file mode 100644
index 0000000..503ae7b
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/GrievanceRaise.java
@@ -0,0 +1,40 @@
+package org.upsmf.grievance.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+public class GrievanceRaise {
+
+    private String name;
+
+    private String emailId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private String phone;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private Long orgId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private Long helpdeskId;
+
+    private String description;
+
+    private List<String> filePath;
+
+    private String appKey;
+
+    private Long appId;
+
+    private  String appName;
+
+
+
+}
diff --git a/src/main/java/org/upsmf/grievance/model/GrievanceTicket.java b/src/main/java/org/upsmf/grievance/model/GrievanceTicket.java
new file mode 100644
index 0000000..0bbe8fe
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/GrievanceTicket.java
@@ -0,0 +1,16 @@
+package org.upsmf.grievance.model;
+
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+@Builder
+public class GrievanceTicket {
+
+    private Long ticketId;
+
+    private String date;
+}
diff --git a/src/main/java/org/upsmf/grievance/model/Ticket.java b/src/main/java/org/upsmf/grievance/model/Ticket.java
index 87337b0..22b6b95 100644
--- a/src/main/java/org/upsmf/grievance/model/Ticket.java
+++ b/src/main/java/org/upsmf/grievance/model/Ticket.java
@@ -3,6 +3,7 @@ package org.upsmf.grievance.model;
 import java.sql.Timestamp;
 import java.util.List;
 
+import org.springframework.stereotype.Component;
 import org.upsmf.grievance.dto.TicketWorkflowDto;
 
 import lombok.AllArgsConstructor;
@@ -16,6 +17,7 @@ import lombok.ToString;
 @NoArgsConstructor
 @AllArgsConstructor
 @ToString(includeFieldNames = true)
+@Component
 public class Ticket {
 
 	private Long userId;
@@ -79,5 +81,8 @@ public class Ticket {
 	private List<String> attachmentUrl;
 	private List<String> selectedTags;
 	private List<Tags> tags;
+	private String requesterEmail;
+	private String requesterPhoneNumber;
+	private String requesterUser;
 
 }
\ No newline at end of file
diff --git a/src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java b/src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java
new file mode 100644
index 0000000..785e5c4
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java
@@ -0,0 +1,10 @@
+package org.upsmf.grievance.service;
+
+import org.upsmf.grievance.model.GrievanceRaise;
+import org.upsmf.grievance.model.GrievanceTicket;
+
+
+public interface GrievanceRaiseService {
+
+    GrievanceTicket addGrievance(GrievanceRaise grievanceRaise);
+}
diff --git a/src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java b/src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java
new file mode 100644
index 0000000..725184e
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java
@@ -0,0 +1,59 @@
+package org.upsmf.grievance.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.upsmf.grievance.model.GrievanceRaise;
+import org.upsmf.grievance.model.GrievanceTicket;
+import org.upsmf.grievance.model.Ticket;
+import org.upsmf.grievance.service.GrievanceRaiseService;
+import org.upsmf.grievance.service.TicketService;
+
+@Service(value = "GrievanceRaiseService")
+public class GrievanceRaiseServiceImpl implements GrievanceRaiseService {
+
+    @Autowired
+    private TicketService ticketService;
+
+    @Autowired
+    private  Ticket ticket;
+
+    @Value("${source_default_request_id}")
+    private Long sourceId;
+
+    @Value("${default_app_name}")
+    private String appName;
+
+    @Value("${default_app_id}")
+    private Long appId;
+
+    @Value("${default_app_key}")
+    private String appKey;
+
+
+    @Override
+    public GrievanceTicket addGrievance(GrievanceRaise grievance) {
+
+        ticket.setUserName(grievance.getName());
+        ticket.setHelpdeskId(grievance.getHelpdeskId());
+        ticket.setSourceId(sourceId);
+        ticket.setAppKey(appKey);
+        ticket.setAppId(appId);
+        ticket.setDescription(grievance.getDescription());
+        ticket.setAppName(appName);
+        ticket.setRequesterUser(grievance.getName());
+        ticket.setRequesterEmail(grievance.getEmailId());
+        ticket.setRequesterPhoneNumber(grievance.getPhone());
+
+        ticket=ticketService.addTicket(ticket);
+
+        // checking response
+        GrievanceTicket grievanceTicket = null;
+        if(ticket!=null && ticket.getId()>0){
+            grievanceTicket = GrievanceTicket.builder().ticketId(ticket.getId())
+                    .date(ticket.getCreatedTime().toString()).build();
+            // send mail to stakeholder i.e. requestor, admins
+        }
+        return grievanceTicket;
+    }
+}
diff --git a/src/main/java/org/upsmf/grievance/util/Sql.java b/src/main/java/org/upsmf/grievance/util/Sql.java
index 6ed78a0..04c433d 100644
--- a/src/main/java/org/upsmf/grievance/util/Sql.java
+++ b/src/main/java/org/upsmf/grievance/util/Sql.java
@@ -294,7 +294,7 @@ public final class Sql {
 		public static final String GET_USER_ID_AND_USER_NAME = "SELECT id,name FROM \"user\" where is_active is true;";
 		public static final String UPDATE_ALLOW_ALL_USERS = "UPDATE helpdesk SET allow_all_users = ? WHERE id = ?";
 		public static final String REMOVE_ALL_TICKET_ATTACHMENT = "DELETE FROM ticket_attachment where ticket_id=?";
-		public static final String GET_HELPDESK_CHANNELS = "SELECT direct, playstore, appstore, aurora_sdk FROM helpdesk where id=? and is_active is true ";
+		public static final String GET_HELPDESK_CHANNELS = "SELECT direct, playstore, appstore, grievance_sdk FROM helpdesk where id=? and is_active is true ";
 
 		public static final String QUERY1 = "SELECT toa.aut_id as id, toa.base_url as name, auth_name as description from organization_auth toa, ";
 		public static final String QUERY2 = " authentication auth WHERE toa.aut_id = auth.id AND  toa.org_id = ";
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index ba08c5b..22fd476 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -13,7 +13,7 @@ spring.jpa.hibernate.ddl-auto=none
 spring.datasource.initialization-mode=always
 spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
 
-urls.whitelist=/,/user/login,/user/logout,/signup,/token/validate,/upload,/user/forgotPassword,/superadmin/getAuthTypes,/tickets/getTemplateVersion,/user/updateEkstepUser,/superadmin/addOrganization,/helpdesk/getPerformanceWithoutAccessControl
+urls.whitelist=/,/user/login,/user/logout,/signup,/token/validate,/upload,/user/forgotPassword,/superadmin/getAuthTypes,/tickets/getTemplateVersion,/user/updateEkstepUser,/superadmin/addOrganization,/helpdesk/getPerformanceWithoutAccessControl,/grievance/grievanceRaise
 
 services.esindexer.host=es.rain.idc.tarento.com
 services.esindexer.host.name=http://es.rain.idc.tarento.com/
@@ -32,7 +32,9 @@ elk.data.up=true
 image.source.aws=true
 image.source.attachment.aws=true
 
-
-
+source_default_request_id=3
+default_app_name=test app 9
+default_app_id=1
+default_app_key=26f3847b-74f5-418d-9621-c331b1907131
 
 
-- 
GitLab