generated from nighthawkcoders/Nighthawk-Pages
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Individual Seed
Github Analytics
Key Commits + Project Work
Key Commit backend - sparkwizbackend
Key Commit backend - spark
Chat Feature
chat.java:
package com.nighthawk.spring_portfolio.mvc.chat;
import java.sql.Date;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.validation.constraints.NotNull;
@Entity (name = "chat")
public class Chat {
public Chat() {}
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@Column(name = "message")
private String message;
@NotNull
@Column(name = "email")
private String email;
@NotNull
@Column(name = "person_id")
private Long personId;
@NotNull
@Column(name = "from_person_id")
private Long fromPersonId;
@NotNull
@Column(name = "from_email")
private String fromEmail;
@NotNull
@Column(name = "read_flag")
private boolean readFlag = false;
@Column(name = "date_sent")
private Date dateSent;
@Column(name = "date_read")
private Date dateRead;
/*@ManyToOne
@JoinColumn(name = "id")
private Person person;*/
public Chat (String email, String message, String fromEmail, long personId, long fromPersonId){
this.email = email;
this.message = message;
this.fromEmail = fromEmail;
this.readFlag = false;
this.personId = personId;
this.fromPersonId = fromPersonId;
this.dateSent = new Date(System.currentTimeMillis());
}
public Long getId() {
return id;
}
public Long getPersonId() {
return personId;
}
public Long getFromPersonId() {
return fromPersonId;
}
public String getMessage() {
return message;
}
public String getEmail() {
return email;
}
public String getFromEmail() {
return fromEmail;
}
public boolean isReadFlag(){
return readFlag;
}
public void setReadFlag(boolean readFlag) {
this.readFlag = readFlag;
}
public Date getDateSent() {
return dateSent;
}
public void setDateSent(Date dateSent) {
this.dateSent = dateSent;
}
public Date getDateRead() {
return dateRead;
}
public void setDateRead(Date dateRead) {
this.dateRead = dateRead;
}
}
chatapicontroller.java:
package com.nighthawk.spring_portfolio.mvc.chat;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@RestController
@RequestMapping("/chat")
public class ChatApiController {
@Autowired
private ChatJpaRepository chatJpaRepository;
@PostMapping("create")
public String sendMessage(@RequestParam String email, @RequestParam String message, @RequestParam String fromEmail, @RequestParam long personId, @RequestParam long fromPersonId){
Chat chat = new Chat(email, message, fromEmail, personId, fromPersonId);
Chat savedChat = chatJpaRepository.save(chat);
// store this message somewhere and deliver to user
return "Message Sent Successfully. ID: " + savedChat.getId();
}
@GetMapping("read")
public String readUnreadMessages(@RequestParam String email, @RequestParam String fromEmail) throws JsonProcessingException{
List<Chat> unreadMessages = chatJpaRepository.findByEmailAndFromEmailAndReadFlagOrderByDateSent(email, fromEmail, false);
for (Chat c : unreadMessages) {
c.setReadFlag(true);
chatJpaRepository.save(c);
}
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(unreadMessages);
System.out.println(json);
// store this message somewhere and deliver to user
return json;
}
@GetMapping("history")
public String readAllMessages(@RequestParam String email, @RequestParam String fromEmail) throws JsonProcessingException{
System.out.println("Email: " + email);
System.out.println("From Email: " + fromEmail);
List<Chat> histMessages = chatJpaRepository.findByEmailAndFromEmailOrFromEmailAndEmailOrderByDateSent(email, fromEmail);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(histMessages);
System.out.println(json);
// store this message somewhere and deliver to user
return json;
}
@DeleteMapping("history/clear")
public void deleteMessages(@RequestParam String email, @RequestParam String fromEmail) throws JsonProcessingException{
System.out.println("Email: " + email);
System.out.println("From Email: " + fromEmail);
if (fromEmail.equals("All")) {
chatJpaRepository.deleteAllByEmail(email);
} else {
chatJpaRepository.deleteAllByEmailAndFromEmail(email, fromEmail);
}
}
}
Last Trimester
AP Prep
Debugging
Metadata
Metadata
Assignees
Labels
No labels