Skip to content

Shaurya - Individual Seed + Debugging #7

@STG-7

Description

@STG-7

Individual Seed

Github Analytics

image

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

image

AP Prep

2015 FRQs

Debugging

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions