Initial commit: proyecto ContabilidadSaPolar completo
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package com.sapolar.maintenance;
|
||||
|
||||
import com.sapolar.auth.SecurityUser;
|
||||
import com.sapolar.common.dto.ApiResponse;
|
||||
import com.sapolar.finance.expense.ExpenseCategory;
|
||||
import com.sapolar.finance.expense.ExpenseCategoryRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/maintenance")
|
||||
@RequiredArgsConstructor
|
||||
public class MaintenanceController {
|
||||
|
||||
private final MaintenanceService maintenanceService;
|
||||
private final ExpenseCategoryRepository expenseCategoryRepository;
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<ApiResponse<List<ScheduledMaintenance>>> findAll(
|
||||
@RequestParam(required = false) Long propertyId) {
|
||||
if (propertyId != null) {
|
||||
return ResponseEntity.ok(ApiResponse.success(maintenanceService.findByProperty(propertyId)));
|
||||
}
|
||||
return ResponseEntity.ok(ApiResponse.success(maintenanceService.findAll()));
|
||||
}
|
||||
|
||||
@GetMapping("/pending")
|
||||
public ResponseEntity<ApiResponse<List<ScheduledMaintenance>>> getPending() {
|
||||
return ResponseEntity.ok(ApiResponse.success(maintenanceService.findPending()));
|
||||
}
|
||||
|
||||
@GetMapping("/upcoming")
|
||||
public ResponseEntity<ApiResponse<List<ScheduledMaintenance>>> getUpcoming(
|
||||
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate from,
|
||||
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate to) {
|
||||
return ResponseEntity.ok(ApiResponse.success(maintenanceService.findUpcoming(from, to)));
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public ResponseEntity<ApiResponse<ScheduledMaintenance>> findById(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(ApiResponse.success(maintenanceService.findById(id)));
|
||||
}
|
||||
|
||||
@GetMapping("/expense-categories")
|
||||
public ResponseEntity<ApiResponse<List<ExpenseCategory>>> getExpenseCategories() {
|
||||
return ResponseEntity.ok(ApiResponse.success(expenseCategoryRepository.findAll()));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<ApiResponse<ScheduledMaintenance>> create(@RequestBody ScheduledMaintenance maintenance,
|
||||
@AuthenticationPrincipal SecurityUser user) {
|
||||
return ResponseEntity.ok(ApiResponse.success("Mantenimiento creado",
|
||||
maintenanceService.create(maintenance, user.userId())));
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public ResponseEntity<ApiResponse<ScheduledMaintenance>> update(@PathVariable Long id,
|
||||
@RequestBody ScheduledMaintenance maintenance) {
|
||||
return ResponseEntity.ok(ApiResponse.success("Mantenimiento actualizado",
|
||||
maintenanceService.update(id, maintenance)));
|
||||
}
|
||||
|
||||
@PatchMapping("/{id}/complete")
|
||||
public ResponseEntity<ApiResponse<ScheduledMaintenance>> complete(@PathVariable Long id,
|
||||
@AuthenticationPrincipal SecurityUser user) {
|
||||
return ResponseEntity.ok(ApiResponse.success("Mantenimiento completado",
|
||||
maintenanceService.markCompleted(id, user.userId())));
|
||||
}
|
||||
|
||||
@PatchMapping("/{id}/reopen")
|
||||
public ResponseEntity<ApiResponse<ScheduledMaintenance>> reopen(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(ApiResponse.success("Mantenimiento reabierto",
|
||||
maintenanceService.reopen(id)));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<ApiResponse<Void>> delete(@PathVariable Long id) {
|
||||
maintenanceService.delete(id);
|
||||
return ResponseEntity.ok(ApiResponse.success("Mantenimiento eliminado", null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user