알림 설정

Yuri Lee·2020년 11월 13일
0

알람 설정 뷰, 부트스트랩

  • Form

알람 설정

  • 특정 웹 서비스 이벤트(스터디 생성, 참가 신청 결과, 참여중인 스터디)에 대한 정보를 이메일로 받을지, 웹 알림 메시지로 받을지 선택하는 기능. 물론 둘 다 받을 수도 있음

SettingsController.java

    @GetMapping(SETTINGS_NOTIFICATIONS_URL)
    public String updateNotificationsForm(@CurrentUser Account account, Model model) {
        model.addAttribute(account);
        model.addAttribute(new Notifications(account));
        return SETTINGS_NOTIFICATIONS_VIEW_NAME;
    }

account 를 보여주고,
form을 채울 객체인 Notifications 안에는 Notifications 타입을 만들었음. 여기서는 account에 들어있는 정보를 맵핑해서 사용하고 있다.

nullpointException 이 발생할 수 있으므로 @NoArgsConstructor 꼭 붙여주기!

package com.yuri.studyolle.domain;

import lombok.*;

import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.UUID;

@Entity
@Getter @Setter @EqualsAndHashCode(of = "id") // id만 사용하도록 함
@Builder @AllArgsConstructor @NoArgsConstructor
public class Account {

    @Id @GeneratedValue
    private Long id;

    @Column(unique = true)
    private String email;

    @Column(unique = true)
    private String nickname;

    private String password;

    private boolean emailVerified;

    private String emailCheckToken; // 이메일을 검색할 때 사용할 토큰값을 db에 저장해놓고 매치하는지 확인하기 위해

    private LocalDateTime emailCheckTokenGeneratedAt;

    private LocalDateTime joinedAt; // 인증이 된 사용자를 그제야 가입될 수 있도록!

    private String bio;

    private String url;

    private String occupation;  // 직업

    private String location;

    @Lob @Basic(fetch = FetchType.EAGER)
    private String profileImage;

    private boolean studyCreatedByEmail;  // study가 만들어졌다는 것을 이메일로 받을 것인지
 
    private boolean studyCreatedByWeb = true; // ... 웹으로 받을 것인지

    private boolean studyEnrollmentResultByEmail;  // 가입 신청 결과를 이메일로 받을 것인지

    private boolean studyEnrollmentResultByWeb = true;

    private boolean studyUpdatedByEmail; // study에 대한 업데이트를 이메일로 받을 것인지

    private boolean studyUpdatedByWeb = true;

    public void generateEmailCheckToken() {
        this.emailCheckToken = UUID.randomUUID().toString();
        this.emailCheckTokenGeneratedAt = LocalDateTime.now();
    }

    public void completeSignUp() {
        this.emailVerified = true;
        this.joinedAt = LocalDateTime.now();
    }

    public boolean isValidToken(String token) {
        return this.emailCheckToken.equals(token);
    }

    public boolean canSendConfirmEmail() {
        return this.emailCheckTokenGeneratedAt.isBefore(LocalDateTime.now().minusHours(1));
    }
}

웹으로 받는 것을 ture로 입력하였음 ~
정말로 관심있는 알림이 아닌 이상 웹으로만 받고, 이메일은 false로..

20220115 복습

AccountService.java

    public void updateNotifications(Account account, Notifications notifications) {
        account.setMeetCreatedByWeb(notifications.isMeetCreatedByWeb());
        account.setMeetCreatedByEmail(notifications.isMeetCreatedByEmail());
        account.setMeetUpdatedByEmail(notifications.isMeetUpdatedByEmail());
        account.setMeetUpdatedByWeb(notifications.isMeetUpdatedByWeb());
        account.setMeetEnrollmentResultByEmail(notifications.isMeetEnrollmentResultByEmail());
        account.setMeetEnrollmentResultByWeb(notifications.isMeetEnrollmentResultByWeb());

      
    }

왜 도대체 객체가 저장이 안되나 싶었는데 알고보니 가장 중요한 코드를 빼먹음..🙄🙄🙄🙄🙄🙄

accountRepository.save(account);

근데 왜 .. 첫번째 값 true 해제되는 겨,,,,,


출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발

profile
Step by step goes a long way ✨

0개의 댓글