Skip to content

Commit 495c320

Browse files
authored
feat(admin_back): create CRUD for company adress (#1214)
1 parent eb14803 commit 495c320

File tree

12 files changed

+597
-9
lines changed

12 files changed

+597
-9
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.xpeho.yaki_admin_backend.data.models;
2+
3+
import jakarta.persistence.*;
4+
5+
import java.util.Objects;
6+
7+
@Entity
8+
@Table(name = "locations", schema = "public")
9+
public class LocationModel {
10+
11+
@Id
12+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "location_seq")
13+
@SequenceGenerator(name = "location_seq", sequenceName = "location_id_seq", allocationSize = 1)
14+
int locationId;
15+
16+
@Column(name = "location_name")
17+
private String locationName;
18+
19+
@Column(name = "location_adress")
20+
private String locationAdress;
21+
22+
@Column(name = "location_entity_log_id")
23+
private int entityLogId;
24+
25+
@Column(name = "location_is_active")
26+
private boolean actif;
27+
28+
29+
public boolean isActif() {
30+
return actif;
31+
}
32+
33+
public void setActif(boolean actif) {
34+
this.actif = actif;
35+
}
36+
37+
38+
public LocationModel() {
39+
}
40+
41+
public LocationModel(String locationName, String locationAdress, int entityLogId) {
42+
this.locationName = locationName;
43+
this.locationAdress = locationAdress;
44+
this.entityLogId = entityLogId;
45+
this.actif = true;
46+
47+
}
48+
49+
public int getLocationId() {
50+
return this.locationId;
51+
}
52+
53+
public void setLocationId(int locationId) {
54+
this.locationId = locationId;
55+
}
56+
57+
public String getLocationName() {
58+
return this.locationName;
59+
}
60+
61+
public void setLocationName(String locationName) {
62+
this.locationName = locationName;
63+
}
64+
65+
public String getLocationAdress() {
66+
return this.locationAdress;
67+
}
68+
69+
public void setLocationAdress(String locationAdress) {
70+
this.locationAdress = locationAdress;
71+
}
72+
73+
public int getEntityLogId() {
74+
return this.entityLogId;
75+
}
76+
77+
public void setEntityLogId(int entityLogId) {
78+
this.entityLogId = entityLogId;
79+
}
80+
81+
@Override
82+
public boolean equals(Object currentInstance) {
83+
if (this == currentInstance) return true;
84+
if (currentInstance == null || getClass() != currentInstance.getClass()) return false;
85+
LocationModel that = (LocationModel) currentInstance;
86+
return locationId == that.locationId &&
87+
entityLogId == that.entityLogId &&
88+
actif == that.actif &&
89+
Objects.equals(locationName, that.locationName) &&
90+
Objects.equals(locationAdress, that.locationAdress);
91+
}
92+
93+
@Override
94+
public int hashCode() {
95+
return Objects.hash(locationId, locationName, locationAdress, entityLogId, actif);
96+
}
97+
98+
}
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package com.xpeho.yaki_admin_backend.data.services;
2+
3+
import com.xpeho.yaki_admin_backend.data.models.EntityLogModel;
4+
import com.xpeho.yaki_admin_backend.data.models.LocationModel;
5+
import com.xpeho.yaki_admin_backend.data.sources.LocationRepository;
6+
import com.xpeho.yaki_admin_backend.domain.entities.LocationEntity;
7+
import com.xpeho.yaki_admin_backend.domain.services.LocationService;
8+
import jakarta.persistence.EntityNotFoundException;
9+
import org.springframework.stereotype.Service;
10+
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
import java.util.Optional;
14+
15+
@Service
16+
public class LocationServiceImpl implements LocationService {
17+
18+
final LocationRepository locationRepository;
19+
private final EntityLogServiceImpl entityLogService;
20+
21+
public LocationServiceImpl(LocationRepository locationRepository, EntityLogServiceImpl entityLogService) {
22+
this.locationRepository = locationRepository;
23+
this.entityLogService = entityLogService;
24+
}
25+
26+
@Override
27+
public List<LocationEntity> getLocations() {
28+
List<LocationModel> result = locationRepository.findByActifTrue();
29+
30+
List<LocationEntity> locationEntities = new ArrayList<>();
31+
32+
for (LocationModel locationModel : result) {
33+
if (!locationModel.isActif()) continue;
34+
locationEntities.add(
35+
new LocationEntity(
36+
locationModel.getLocationId(),
37+
locationModel.getLocationName(),
38+
locationModel.getLocationAdress()));
39+
}
40+
return locationEntities;
41+
}
42+
43+
44+
@Override
45+
public LocationEntity createLocation(LocationEntity locationEntity) {
46+
EntityLogModel entityLogModel = entityLogService.createEntityLog();
47+
final LocationModel locationModel = new LocationModel(
48+
locationEntity.locationName(),
49+
locationEntity.locationAdress(),
50+
entityLogModel.getId()
51+
);
52+
LocationModel createdLocation = locationRepository.save(locationModel);
53+
54+
return new LocationEntity(
55+
createdLocation.getLocationId(),
56+
createdLocation.getLocationName(),
57+
createdLocation.getLocationAdress());
58+
}
59+
60+
61+
@Override
62+
public LocationEntity getLocationById(Integer id) {
63+
final LocationModel locationModel = locationRepository
64+
.findById(id)
65+
.orElseThrow(() -> new EntityNotFoundException("Location" + id + "not found"));
66+
67+
return new LocationEntity(
68+
locationModel.getLocationId(),
69+
locationModel.getLocationName(),
70+
locationModel.getLocationAdress());
71+
}
72+
73+
@Override
74+
public LocationEntity saveOrUpdate(int id, LocationEntity entity) {
75+
Optional<LocationModel> locationModelOpt = locationRepository.findById(id);
76+
77+
if (locationModelOpt.isPresent()) {
78+
LocationModel locationToUpdate = locationModelOpt.get();
79+
locationToUpdate.setLocationName(entity.locationName());
80+
locationToUpdate.setLocationAdress(entity.locationAdress());
81+
82+
LocationModel updatedLocation = locationRepository.save(locationToUpdate);
83+
84+
return new LocationEntity(
85+
updatedLocation.getLocationId(),
86+
updatedLocation.getLocationName(),
87+
updatedLocation.getLocationAdress());
88+
} else {
89+
return this.createLocation(entity);
90+
}
91+
}
92+
93+
@Override
94+
public LocationEntity disable(int id) {
95+
LocationModel locationToDisable = locationRepository
96+
.findById(id)
97+
.orElseThrow(() -> new EntityNotFoundException("Location" + id + "not found"));
98+
99+
entityLogService.disabledEntity(locationToDisable.getEntityLogId());
100+
locationToDisable.setActif(false);
101+
LocationModel locationDisabled = locationRepository.save(locationToDisable);
102+
103+
return new LocationEntity(
104+
locationDisabled.getLocationId(),
105+
locationDisabled.getLocationName(),
106+
locationDisabled.getLocationAdress());
107+
}
108+
109+
@Override
110+
public LocationEntity deleteById(Integer id) {
111+
LocationModel locationToDelete = locationRepository
112+
.findById(id)
113+
.orElseThrow(() -> new EntityNotFoundException("Location" + id + "not found"));
114+
115+
locationRepository.deleteById(id);
116+
117+
return new LocationEntity(
118+
locationToDelete.getLocationId(),
119+
locationToDelete.getLocationName(),
120+
locationToDelete.getLocationAdress());
121+
}
122+
123+
124+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.xpeho.yaki_admin_backend.data.sources;
2+
3+
import com.xpeho.yaki_admin_backend.data.models.LocationModel;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
import java.util.List;
7+
8+
public interface LocationRepository extends JpaRepository<LocationModel,Integer> {
9+
List<LocationModel> findByActifTrue();
10+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.xpeho.yaki_admin_backend.domain.entities;
2+
3+
public record LocationEntity(Integer locationId, String locationName, String locationAdress) {
4+
}

yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/domain/services/CustomerService.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.xpeho.yaki_admin_backend.domain.services;
22

3-
import com.xpeho.yaki_admin_backend.domain.entities.CaptainEntity;
43
import com.xpeho.yaki_admin_backend.domain.entities.CustomerEntity;
54
import com.xpeho.yaki_admin_backend.domain.entities.CustomerRightsEntity;
6-
import com.xpeho.yaki_admin_backend.domain.entities.UserEntityWithID;
75

86
import java.util.List;
97

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.xpeho.yaki_admin_backend.domain.services;
2+
3+
import com.xpeho.yaki_admin_backend.domain.entities.LocationEntity;
4+
5+
import java.util.List;
6+
7+
public interface LocationService {
8+
9+
List<LocationEntity> getLocations();
10+
11+
LocationEntity createLocation(LocationEntity locationEntity);
12+
13+
LocationEntity getLocationById(Integer id);
14+
15+
LocationEntity saveOrUpdate(int locationId, LocationEntity entity);
16+
17+
LocationEntity disable(int id);
18+
19+
LocationEntity deleteById(Integer id);
20+
21+
22+
}

yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/presentation/controllers/CustomerController.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.xpeho.yaki_admin_backend.presentation.controllers;
22

3-
import com.xpeho.yaki_admin_backend.domain.entities.CaptainEntity;
43
import com.xpeho.yaki_admin_backend.domain.entities.CustomerEntity;
54
import com.xpeho.yaki_admin_backend.domain.entities.CustomerRightsEntity;
6-
import com.xpeho.yaki_admin_backend.domain.entities.UserEntityWithID;
75
import com.xpeho.yaki_admin_backend.domain.services.CustomerService;
86
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
97
import org.springframework.web.bind.annotation.*;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.xpeho.yaki_admin_backend.presentation.controllers;
2+
3+
import com.xpeho.yaki_admin_backend.domain.entities.LocationEntity;
4+
import com.xpeho.yaki_admin_backend.domain.services.LocationService;
5+
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
6+
import org.springframework.web.bind.annotation.*;
7+
8+
import java.util.List;
9+
10+
@RestController
11+
@CrossOrigin
12+
@RequestMapping("/locations")
13+
@SecurityRequirement(name = "bearerAuth")
14+
public class LocationController {
15+
final LocationService locationService;
16+
17+
LocationController(LocationService locationService) {
18+
this.locationService = locationService;
19+
}
20+
21+
@GetMapping
22+
public List<LocationEntity> getLocations() {
23+
return locationService.getLocations();
24+
}
25+
26+
@PostMapping
27+
public LocationEntity createLocation(@RequestBody LocationEntity locationEntity) {
28+
return locationService.createLocation(locationEntity);
29+
}
30+
31+
@GetMapping("{id}")
32+
public LocationEntity getLocation(@PathVariable Integer id) {
33+
return locationService.getLocationById(id);
34+
}
35+
36+
@PutMapping("{id}")
37+
public LocationEntity updateLocation(@PathVariable Integer id, @RequestBody LocationEntity locationEntity) {
38+
return locationService.saveOrUpdate(id, locationEntity);
39+
}
40+
41+
@PutMapping("/disable/{id}")
42+
public LocationEntity disableLocation(@PathVariable Integer id) {
43+
return locationService.disable(id);
44+
}
45+
46+
@DeleteMapping("{id}")
47+
public LocationEntity deleteLocation(@PathVariable Integer id) {
48+
return locationService.deleteById(id);
49+
}
50+
51+
52+
}

0 commit comments

Comments
 (0)