-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOrganizationController.java
More file actions
102 lines (82 loc) · 3.78 KB
/
OrganizationController.java
File metadata and controls
102 lines (82 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.writon.admin.domain.controller;
import com.writon.admin.domain.dto.request.organization.CreateOrganizationRequestDto;
import com.writon.admin.domain.dto.request.organization.EditOrganizationRequestDto;
import com.writon.admin.domain.dto.response.organization.CreateOrganizationResponseDto;
import com.writon.admin.domain.dto.response.organization.EditOrganizationResponseDto;
import com.writon.admin.domain.entity.organization.Organization;
import com.writon.admin.domain.service.ImageService;
import com.writon.admin.domain.service.OrganizationService;
import com.writon.admin.domain.util.TokenUtil;
import com.writon.admin.global.response.SuccessDto;
import java.util.List;
import java.util.Objects;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/organization")
@RequiredArgsConstructor
public class OrganizationController {
private final OrganizationService organizationService;
private final ImageService imageService;
private final TokenUtil tokenUtil;
private static final String DEFAULT_LOGO_URL = "https://writon-data2.s3.ap-northeast-2.amazonaws.com/logo/d4fdaf92-eb71-4f3a-979e-75211814d364.png";
@PostMapping
public SuccessDto<CreateOrganizationResponseDto> createOrganization(
@RequestPart(required = false) MultipartFile file,
@RequestPart CreateOrganizationRequestDto createOrganizationRequestDto
) {
String logoUrl = null;
if (file != null && !file.isEmpty()) {
logoUrl = imageService.uploadImage(file);
}
CreateOrganizationResponseDto createOrganizationResponseDto
= organizationService.createOrganization(createOrganizationRequestDto, logoUrl);
return new SuccessDto<>(createOrganizationResponseDto);
}
@GetMapping("/position")
public SuccessDto<List<String>> getPositions() {
return new SuccessDto<>(organizationService.getPositions());
}
@PatchMapping("/info")
public SuccessDto<EditOrganizationResponseDto> editOrganization(
@RequestPart(required = false) MultipartFile file,
@RequestPart EditOrganizationRequestDto editOrganizationRequestDto
) {
String logoUrl = editOrganizationRequestDto.getLogo();
// 로고를 그대로 유지하는 경우에는 requestDto에 logo 추가, file은 null
if (file != null && !file.isEmpty()) {
deleteImage();
logoUrl = imageService.uploadImage(file);
}
// 로고를 삭제하고자 하는 경우에는 requestDto logo를 null로 전송, file도 null
if (file == null &&
(Objects.equals(logoUrl, "") || Objects.equals(logoUrl, DEFAULT_LOGO_URL))) {
deleteImage();
}
EditOrganizationResponseDto editOrganizationResponseDto
= organizationService.editOrganization(editOrganizationRequestDto, logoUrl);
return new SuccessDto<>(editOrganizationResponseDto);
}
@PatchMapping("/position")
public SuccessDto<List<String>> editPositions(
@RequestBody List<String> positionList
) {
List<String> savedPositionList = organizationService.editPositions(positionList);
return new SuccessDto<>(savedPositionList);
}
private void deleteImage() {
Organization organization = tokenUtil.getOrganization();
String imageUrl = organization.getLogo();
if (!Objects.equals(imageUrl, "") &&
!Objects.equals(imageUrl, DEFAULT_LOGO_URL)) {
imageService.deleteImage(imageUrl);
}
}
}