Skip to content

Commit

Permalink
Merge branch 'main' into additions-mainservice
Browse files Browse the repository at this point in the history
main has some useful stuff
  • Loading branch information
ReallyWeirdCat committed Nov 26, 2024
2 parents 599212e + 551caf4 commit 506c810
Show file tree
Hide file tree
Showing 11 changed files with 238 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package ru.espada.ep.iptip.study_groups;

import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import ru.espada.ep.iptip.study_groups.models.requests.*;

import java.security.Principal;

@RestController
@SecurityRequirement(name = "JWT")
Expand All @@ -13,6 +17,59 @@ public class StudyGroupController {
private StudyGroupRepository studyGroupRepository;

// TODO: add methods: create, add users, remove users, get users, set semester
@PostMapping("/studyGroup")
public ResponseEntity<?> createStudyGroup(Principal principal, @Valid @RequestBody CreateStudyGroupRequest createStudyGroupRequest) {
// TODO: implementation
return null;
}

@PostMapping("/studyGroupWithUsers")
public ResponseEntity<?> createStudyGroupWithUsers(Principal principal, @Valid @RequestBody CreateStudyGroupWithUsersRequest createStudyGroupWithUsersRequest) {
// TODO: implementation
return null;
}

@PatchMapping("/studyGroup")
public ResponseEntity<?> modifyStudyGroup(Principal principal, @Valid @RequestBody ModifyStudyGroupRequest modifyStudyGroupRequest) {
// TODO: implementation
return null;
}

@DeleteMapping("/studyGroup")
public ResponseEntity<?> deleteStudyGroup(Principal principal, Long studyGroupId) {
// TODO: implementation
return null;
}

@GetMapping("/studyGroup")
public ResponseEntity<?> getStudyGroup(Principal principal, Long studyGroupId) {
// TODO: implementation
return null;
}

@PostMapping("/attachUser")
public ResponseEntity<?> attachUserToStudyGroup(Principal principal, @Valid @RequestBody AttachUserToStudyGroupRequest attachUserToStudyGroupRequest) {
// TODO: implementation
return null;
}

@DeleteMapping("/detachUser")
public ResponseEntity<?> detachUserFromStudyGroup(Principal principal, @Valid @RequestBody DetachUserFromStudyGroupRequest detachUserFromStudyGroupRequest) {
// TODO: implementation
return null;
}

@PutMapping("/setStudyGroupSemester")
public ResponseEntity<?> setStudyGroupSemester(Principal principal, @Valid @RequestBody SetStudyGroupMembersSemesterRequest setStudyGroupMembersSemesterRequest) {
// TODO: implementation
return null;
}

@GetMapping("/getStudyGroupMembers")
public ResponseEntity<?> getStudyGroupMembers(Principal principal, Long studyGroupId) {
// TODO: implementation
return null;
}

@Autowired
public void setStudyGroupRepository(StudyGroupRepository studyGroupRepository) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
package ru.espada.ep.iptip.study_groups;

import ru.espada.ep.iptip.study_groups.models.requests.*;

import java.security.Principal;
import java.util.List;

public interface StudyGroupService {
boolean hasPermission(String name, Long studyGroupId);

StudyGroupEntity createStudyGroup(Principal principal, CreateStudyGroupRequest request);
StudyGroupEntity createStudyGroupWithUsers(Principal principal, CreateStudyGroupWithUsersRequest createRequest);
StudyGroupEntity modifyStudyGroup(Principal principal, ModifyStudyGroupRequest request);
StudyGroupEntity getStudyGroup(Principal principal, Long studyGroupId);
void deleteStudyGroup(Principal principal, Long studyGroupId);

void attachUserToStudyGroup(Principal principal, AttachUserToStudyGroupRequest request);
void detachUserFromStudyGroup(Principal principal, DetachUserFromStudyGroupRequest request);
void setStudyGroupMembersSemester(Principal principal, SetStudyGroupMembersSemesterRequest request);
List<Long> getStudyGroupMembers(Principal principal, Long studyGroupId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.espada.ep.iptip.study_groups.models.requests.*;
import ru.espada.ep.iptip.university.UniversityEntity;
import ru.espada.ep.iptip.university.institute.InstituteEntity;
import ru.espada.ep.iptip.university.institute.major.MajorEntity;
Expand All @@ -12,6 +13,7 @@
import ru.espada.ep.iptip.user.permission.UserPermissionEntity;
import ru.espada.ep.iptip.user.permission.UserPermissionService;

import java.security.Principal;
import java.util.List;

@RequiredArgsConstructor
Expand Down Expand Up @@ -55,6 +57,59 @@ public boolean hasPermission(String username, Long studyGroupId) {
));
}

@Override
public StudyGroupEntity createStudyGroup(Principal principal, CreateStudyGroupRequest request) {
// TODO: implementation
return null;
}

@Override
public StudyGroupEntity createStudyGroupWithUsers(Principal principal, CreateStudyGroupWithUsersRequest createRequest) {
// TODO: implementation
return null;
}

@Override
public StudyGroupEntity modifyStudyGroup(Principal principal, ModifyStudyGroupRequest request) {
// TODO: implementation
return null;
}

@Override
public StudyGroupEntity getStudyGroup(Principal principal, Long studyGroupId) {
// TODO: implementation
return null;
}

@Override
public void deleteStudyGroup(Principal principal, Long studyGroupId) {
// TODO: implementation

}

@Override
public void attachUserToStudyGroup(Principal principal, AttachUserToStudyGroupRequest request) {
// TODO: implementation

}

@Override
public void detachUserFromStudyGroup(Principal principal, DetachUserFromStudyGroupRequest request) {
// TODO: implementation

}

@Override
public void setStudyGroupMembersSemester(Principal principal, SetStudyGroupMembersSemesterRequest request) {
// TODO: implementation
}

@Override
public List<Long> getStudyGroupMembers(Principal principal, Long studyGroupId) {
// TODO: implementation
return List.of();
}

@Autowired
public void setStudyGroupRepository(StudyGroupRepository studyGroupRepository) {
this.studyGroupRepository = studyGroupRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.espada.ep.iptip.study_groups.models.requests;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AttachUserToStudyGroupRequest {
private Long studyGroupId;
private Long userId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.espada.ep.iptip.study_groups.models.requests;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CreateStudyGroupRequest {
private String name;
private Long facultyId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.espada.ep.iptip.study_groups.models.requests;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CreateStudyGroupWithUsersRequest {
private Long id;
private String name;
private Long facultyId;
private List<Long> users;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.espada.ep.iptip.study_groups.models.requests;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DetachUserFromStudyGroupRequest {
private Long studyGroupId;
private Long userId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ru.espada.ep.iptip.study_groups.models.requests;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ModifyStudyGroupRequest {
private Long id;
private String name;
private Long facultyId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.espada.ep.iptip.study_groups.models.requests;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SetStudyGroupMembersSemesterRequest {
private Long studyGroupId;
private Long semesterId;
}
24 changes: 12 additions & 12 deletions MainService/src/main/java/ru/espada/ep/iptip/user/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -159,26 +159,26 @@ public String getAvatarUrl(String name) {
@Transactional
public InstituteInfoResponse getInstituteInfo(String username) {

UserEntity user = getUser(username);
ProfileEntity profile = user.getProfile();
UserEntity user = userRepository.findByUsername(username).orElseThrow(() -> new UsernameNotFoundException("User not found"));
ProfileEntity profile = profileRepository.findByUserId(user.getId());
int semester = profile.getSemester();
int course = semester / 2;

StudyGroupEntity studyGroup = user.getStudyGroups().stream().findFirst().orElse(null);

// FIXME: this may be null
FacultyEntity faculty = studyGroup.getFaculty();
MajorEntity major = faculty.getMajor();
InstituteEntity insitute = major.getInstitute();
UniversityEntity university = insitute.getUniversity();
FacultyEntity faculty = studyGroup == null ? null : studyGroup.getFaculty();
MajorEntity major = faculty == null ? null : faculty.getMajor();
InstituteEntity insitute = major == null ? null : major.getInstitute();
UniversityEntity university = insitute == null ? null : insitute.getUniversity();

return InstituteInfoResponse.builder()
.major(major.getName())
.majorCode(major.getMajorCode())
.faculty(faculty.getName())
.institute(insitute.getName())
.university(university.getName())
.studyGroup(studyGroup.getName())
.major(major == null ? null : major.getName())
.majorCode(major == null ? null : major.getMajorCode())
.faculty(faculty == null ? null : faculty.getName())
.institute(insitute == null ? null : insitute.getName())
.university(university == null ? null : university.getName())
.studyGroup(studyGroup == null ? null : studyGroup.getName())
.semester(semester)
.course(course)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@

@Repository
public interface ProfileRepository extends JpaRepository<ProfileEntity, Long> {
ProfileEntity findByUserId(Object unknownAttr1);
}

0 comments on commit 506c810

Please sign in to comment.