Skip to content
This repository has been archived by the owner on Sep 1, 2024. It is now read-only.

Feature/js develop/private education query controller main #210

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4bc84a7
EducationExceptionHandling
huseynhasanov07 Mar 15, 2024
d7d493f
Merge remote-tracking branch 'origin/huseyn' into huseyn
huseynhasanov07 Mar 15, 2024
8ac91da
EducationExceptionHandling
huseynhasanov07 Mar 15, 2024
b7e22bd
Merge branch 'huseyn' into feature/js-develop/peqc-huseyn
huseynhasanov07 Mar 15, 2024
396380a
Merge remote-tracking branch 'origin/develop' into feature/js-develop…
huseynhasanov07 Mar 15, 2024
0966f36
Merge remote-tracking branch 'origin/develop' into feature/js-develop…
huseynhasanov07 Mar 15, 2024
f1a6662
EducationBatisRepository
huseynhasanov07 Mar 18, 2024
8115d1b
EducationBatisRepository
huseynhasanov07 Mar 18, 2024
3c2624d
EducationBatisRepository
huseynhasanov07 Mar 18, 2024
178f75d
Merge remote-tracking branch 'origin/develop' into feature/js-develop…
huseynhasanov07 Mar 18, 2024
750a4f7
EducationBatisRepository
huseynhasanov07 Mar 18, 2024
bfa20fa
Merge remote-tracking branch 'origin/develop' into feature/js-develop…
huseynhasanov07 Mar 18, 2024
4fa32db
EducationBatisRepository
huseynhasanov07 Mar 18, 2024
d35c550
EducationBatisRepository
huseynhasanov07 Mar 20, 2024
ca518d3
EducationBatisRepository
huseynhasanov07 Mar 20, 2024
694347b
EducationBatisRepository
huseynhasanov07 Mar 24, 2024
e84f897
EducationBatisRepository
huseynhasanov07 Mar 24, 2024
4893e5a
EducationBatisRepository
huseynhasanov07 Mar 26, 2024
e9de06a
EducationBatisRepository
huseynhasanov07 Mar 26, 2024
c4a3256
EducationBatisRepository
huseynhasanov07 Mar 27, 2024
f966f0a
EducationBatisRepository
huseynhasanov07 Mar 27, 2024
0b023b8
EducationBatisRepository
huseynhasanov07 Mar 27, 2024
de14cba
EducationBatisRepository
huseynhasanov07 Mar 27, 2024
7f47e1f
Merge remote-tracking branch 'origin/develop' into feature/js-develop…
huseynhasanov07 Mar 27, 2024
23c7995
Merge remote-tracking branch 'origin/feature/js-develop/peqc-huseyn' …
huseynhasanov07 Mar 27, 2024
7f06394
EducationBatisRepository
huseynhasanov07 Mar 30, 2024
1b667b7
EducationBatisRepository
huseynhasanov07 Mar 31, 2024
37b1232
EducationBatisRepository
huseynhasanov07 Mar 31, 2024
3f72948
Merge remote-tracking branch 'origin/develop' into feature/js-develop…
huseynhasanov07 Mar 31, 2024
60aa95f
EducationBatisRepository
huseynhasanov07 Mar 31, 2024
e1f3c52
Merge branch 'develop' into feature/js-develop/private-education-quer…
huseynhasanov07 Apr 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

@Compose
public class BaseCompose {

private UUID uuid;

private Long version;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
package az.rock.auth.domain.presentation.ports.input.service.query.concretes.user;

import az.rock.auth.domain.presentation.dto.response.user.*;
import az.rock.auth.domain.presentation.ports.input.service.query.abstracts.user.AbstractUserQueryDomainPresentation;
import az.rock.auth.domain.presentation.ports.output.publisher.AbstractNotificationMessagePublisher;
import az.rock.auth.domain.presentation.ports.output.repository.query.user.AbstractUserProfileQueryRepositoryAdapter;
import az.rock.auth.domain.presentation.security.AbstractSecurityContextHolder;
import az.rock.auth.domain.presentation.exception.AuthDomainPresentationException;
import az.rock.auth.domain.presentation.ports.input.service.query.abstracts.user.AbstractUserQueryDomainPresentation;
import az.rock.auth.domain.presentation.ports.output.repository.query.user.AbstractUserQueryRepositoryAdapter;
import az.rock.auth.domain.presentation.security.AbstractSecurityContextHolder;
import az.rock.flyjob.auth.exception.user.MyFollowersNotFoundException;
import az.rock.flyjob.auth.exception.user.MyNetworksNotFoundException;
import az.rock.flyjob.auth.exception.user.MyUserProfileNotFoundException;
import az.rock.flyjob.auth.exception.user.UserProfileNotFoundException;
import az.rock.flyjob.auth.model.query.AnyProfileQueryRecord;
import az.rock.flyjob.auth.model.root.network.FollowRelationRoot;
import az.rock.flyjob.auth.model.root.user.UserRoot;
import az.rock.lib.domain.id.auth.UserID;
import az.rock.lib.valueObject.common.PageableRequest;
import com.intellibucket.lib.fj.notificatin.api.notifications.ViewedProfileNotification;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -55,11 +51,10 @@ public MyUserProfileResponse myProfile() {
public AnyUserProfileResponse anyProfile(UUID userID) {
var currentUser = this.securityContextHolder.availableUser();
Optional<AnyProfileQueryRecord> optionalUserProfile = this.userProfileQueryRepositoryAdapter.findAnyProfile(currentUser.getAbsoluteID(), userID);
if (optionalUserProfile.isPresent()){
if (optionalUserProfile.isPresent()) {
this.notificationMessagePublisher.send(ViewedProfileNotification.of(currentUser.getAbsoluteID(), userID));
return AnyUserProfileResponse.of(optionalUserProfile.get());
}
else throw new UserProfileNotFoundException();
} else throw new UserProfileNotFoundException();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,49 +4,66 @@
import az.rock.flyjob.js.domain.presentation.dto.response.resume.education.MyEducationResponseModel;
import az.rock.flyjob.js.domain.presentation.dto.response.resume.education.simple.SimpleAnyEducationResponseModel;
import az.rock.flyjob.js.domain.presentation.dto.response.resume.education.simple.SimpleMyEducationResponseModel;
import az.rock.flyjob.js.domain.presentation.ports.input.services.query.abstracts.AbstractEducationQueryDomainPresentationService;
import az.rock.flyjob.js.spec.privates.query.resume.detail.EducationQueryPrivateSpec;
import az.rock.lib.jresponse.response.success.JSuccessDataResponse;
import az.rock.lib.valueObject.SimplePageableRequest;
import az.rock.lib.valueObject.SimplePageableResponse;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import java.util.UUID;

@RestController
@CrossOrigin
@RequestMapping(value = "/js/1.0/private/query/education", produces = MediaType.APPLICATION_JSON_VALUE)
public class EducationQueryPrivateController implements EducationQueryPrivateSpec {
private final AbstractEducationQueryDomainPresentationService educationQueryDomainPresentationService;

public EducationQueryPrivateController(AbstractEducationQueryDomainPresentationService educationQueryDomainPresentationService) {
this.educationQueryDomainPresentationService = educationQueryDomainPresentationService;
}

@Override
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<MyEducationResponseModel>>> queryAllMyEducations(SimplePageableRequest pageableRequest) {

return null;
@GetMapping("/get-my/educations")
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<MyEducationResponseModel>>> queryAllMyEducations(@ModelAttribute("pageableRequest") SimplePageableRequest pageableRequest) {
var response = educationQueryDomainPresentationService.queryAllMyEducations(pageableRequest);
return ResponseEntity.ok(new JSuccessDataResponse<>(response));
}

@Override
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<AnyEducationResponseModel>>> queryAllAnyEducations(UUID targetResumeId, SimplePageableRequest pageableRequest) {

return null;
@GetMapping("/get-any/educations/{targetResumeId}")
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<AnyEducationResponseModel>>> queryAllAnyEducations(@PathVariable UUID targetResumeId, @ModelAttribute("pageableRequest") SimplePageableRequest pageableRequest) {
var response = educationQueryDomainPresentationService.queryAllAnyEducations(targetResumeId, pageableRequest);
return ResponseEntity.ok(new JSuccessDataResponse<>(response));
}

@Override
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<SimpleMyEducationResponseModel>>> queryAllMySimpleEducations(SimplePageableRequest pageableRequest) {

return null;
@GetMapping("/get-my/simple-educations")
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<SimpleMyEducationResponseModel>>> queryAllMySimpleEducations(@ModelAttribute("pageableRequest") SimplePageableRequest pageableRequest) {
var response = educationQueryDomainPresentationService.queryAllMySimpleEducations(pageableRequest);
return ResponseEntity.ok(new JSuccessDataResponse<>(response));
}

@Override
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<SimpleAnyEducationResponseModel>>> queryAllAnySimpleEducations(UUID targetResumeId, SimplePageableRequest pageableRequest) {
return null;
@GetMapping("/get-any/simple-educations/{targetResumeId}")
public ResponseEntity<JSuccessDataResponse<SimplePageableResponse<SimpleAnyEducationResponseModel>>> queryAllAnySimpleEducations(@PathVariable UUID targetResumeId, @ModelAttribute("pageableRequest") SimplePageableRequest pageableRequest) {
var response = educationQueryDomainPresentationService.queryAllAnySimpleEducations(targetResumeId, pageableRequest);
return ResponseEntity.ok(new JSuccessDataResponse<>(response));
}

@Override
public ResponseEntity<JSuccessDataResponse<MyEducationResponseModel>> findMyEducationById(UUID id) {
return null;
@GetMapping("/get-my/education/{id}")
public ResponseEntity<JSuccessDataResponse<MyEducationResponseModel>> findMyEducationById(@PathVariable UUID id) {
var response = educationQueryDomainPresentationService.findMyEducationById(id);
return ResponseEntity.ok(new JSuccessDataResponse<>(response));
}

@Override
public ResponseEntity<JSuccessDataResponse<AnyEducationResponseModel>> findAnyEducationById(UUID id) {
return null;
@GetMapping("/get-any/education/{id}")
public ResponseEntity<JSuccessDataResponse<AnyEducationResponseModel>> findAnyEducationById(@PathVariable UUID id) {
var response = educationQueryDomainPresentationService.findAnyEducationById(id);
return ResponseEntity.ok(new JSuccessDataResponse<>(response));
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package az.rock.flyjob.js.dataaccess.adapter.query;

import az.rock.flyjob.js.dataaccess.mapper.abstracts.AbstractEducationDataAccessMapper;
import az.rock.flyjob.js.dataaccess.mapper.concretes.PageableDataAccessMapper;
import az.rock.flyjob.js.dataaccess.model.batis.model.EducationComposeExample;
import az.rock.flyjob.js.dataaccess.repository.abstracts.query.batis.EducationBatisRepository;
import az.rock.flyjob.js.dataaccess.repository.abstracts.query.jpa.EducationQueryJpaRepository;
import az.rock.flyjob.js.domain.core.root.detail.EducationRoot;
import az.rock.flyjob.js.domain.presentation.dto.criteria.EducationCriteria;
import az.rock.flyjob.js.domain.presentation.ports.output.repository.query.AbstractEducationQueryRepositoryAdapter;
import az.rock.lib.domain.id.js.EducationID;
import az.rock.lib.domain.id.js.ResumeID;
import az.rock.lib.valueObject.SimplePageableRequest;
import com.intellibucket.lib.fj.dataaccess.BatisPageable;
import org.springframework.stereotype.Component;

import java.util.List;
Expand All @@ -15,12 +21,15 @@
@Component
public class EducationQueryRepositoryAdapter implements AbstractEducationQueryRepositoryAdapter {

private final static String orderByOrderNumber = "order_number";
private final EducationQueryJpaRepository educationQueryJpaRepository;
private final AbstractEducationDataAccessMapper educationDataAccessMapper;
private final EducationBatisRepository educationBatisRepository;

public EducationQueryRepositoryAdapter(EducationQueryJpaRepository educationQueryJpaRepository, AbstractEducationDataAccessMapper educationDataAccessMapper) {
public EducationQueryRepositoryAdapter(EducationQueryJpaRepository educationQueryJpaRepository, AbstractEducationDataAccessMapper educationDataAccessMapper, EducationBatisRepository educationBatisRepository) {
this.educationQueryJpaRepository = educationQueryJpaRepository;
this.educationDataAccessMapper = educationDataAccessMapper;
this.educationBatisRepository = educationBatisRepository;
}

@Override
Expand All @@ -30,6 +39,27 @@ public Optional<EducationRoot> findByResumeAndUuidAndRowStatusTrue(ResumeID resu
return educationDataAccessMapper.toRoot(entity.get());
}

@Override
public List<EducationRoot> fetchAllEducations(EducationCriteria educationCriteria, SimplePageableRequest simplePageableRequest) {
var educationComposeExample = EducationComposeExample.of(educationCriteria, orderByOrderNumber, BatisPageable.of(simplePageableRequest.getSize(), simplePageableRequest.getPage()));
var composes = educationBatisRepository.selectByExample(educationComposeExample);
System.out.println(composes);
return composes
.stream()
.map(educationDataAccessMapper::composeToRoot)
.filter(Optional::isPresent)
.map(Optional::get)
.toList();
}

@Override
public Optional<EducationRoot> fetchEducation(EducationCriteria educationCriteria) {
var educationComposeExample = EducationComposeExample.of(educationCriteria);
var educationCompose = educationBatisRepository.selectFirstByExample(educationComposeExample);
return educationDataAccessMapper.composeToRoot(educationCompose);
}


@Override
public Optional<EducationRoot> findById(EducationID rootId) {
var entity = educationQueryJpaRepository.findById(rootId.getAbsoluteID());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package az.rock.flyjob.js.dataaccess.mapper.abstracts;

import az.rock.flyjob.js.dataaccess.model.batis.model.EducationCompose;
import az.rock.flyjob.js.dataaccess.model.entity.resume.details.EducationEntity;
import az.rock.flyjob.js.domain.core.root.detail.EducationRoot;
import com.intellibucket.lib.fj.dataaccess.AbstractDataAccessMapper;

import java.util.Optional;


public interface AbstractEducationDataAccessMapper extends AbstractDataAccessMapper<EducationEntity, EducationRoot> {

Optional<EducationRoot> composeToRoot(EducationCompose educationCompose);

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,23 @@


import az.rock.flyjob.js.dataaccess.mapper.abstracts.AbstractEducationDataAccessMapper;
import az.rock.flyjob.js.dataaccess.model.batis.model.EducationCompose;
import az.rock.flyjob.js.dataaccess.model.entity.resume.ResumeEntity;
import az.rock.flyjob.js.dataaccess.model.entity.resume.details.EducationEntity;
import az.rock.flyjob.js.domain.core.root.detail.EducationRoot;
import az.rock.lib.domain.id.js.EducationID;
import az.rock.lib.domain.id.js.ResumeID;
import az.rock.lib.util.GDateTime;
import az.rock.lib.valueObject.AccessModifier;
import az.rock.lib.valueObject.ProcessStatus;
import az.rock.lib.valueObject.RowStatus;
import az.rock.lib.valueObject.Version;
import az.rock.lib.valueObject.js.EducationDegree;
import az.rock.lib.valueObject.js.EducationState;
import org.springframework.stereotype.Component;

import java.util.Optional;
import java.util.UUID;

@Component
public class EducationDataAccessMapper implements AbstractEducationDataAccessMapper {
Expand Down Expand Up @@ -68,5 +75,30 @@ public Optional<EducationEntity> toEntity(EducationRoot root) {
}


@Override
public Optional<EducationRoot> composeToRoot(EducationCompose educationCompose) {
var optionalEducationCompose = Optional.ofNullable(educationCompose);
return optionalEducationCompose.map(compose -> EducationRoot.Builder.builder()
.uuid(EducationID.of(compose.getUuid()))
.resume(ResumeID.of(compose.getResumeUuid()))
.version(Version.of(compose.getVersion()))
.rowStatus(RowStatus.valueOf(compose.getRowStatus()))
.processStatus(ProcessStatus.of(compose.getProcessStatus()))
.createdDate(GDateTime.of(compose.getCreatedDate()))
.lastModifiedDate(GDateTime.of(compose.getModificationDate()))
.accessModifier(AccessModifier.valueOf(compose.getAccessModifier()))
.cityId((UUID) compose.getCityId())
.establishmentUUID((UUID) compose.getEstablishmentUuid())
.establishmentName(compose.getEstablishmentName())
.orderNumber(compose.getOrderNumber())
.startDate(GDateTime.convertToLocalDate(compose.getStartDate()))
.endDate(GDateTime.convertToLocalDate(compose.getEndDate()))
.description(compose.getDescription())
.link(compose.getLink())
.state(EducationState.valueOf(compose.getState()))
.degree(EducationDegree.valueOf(compose.getDegree()))
.build());
}


}
Loading
Loading