Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
@@ -1,11 +1,14 @@
package com.example.expencetrackerapi.dto.request;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

@Data
@NoArgsConstructor
@AllArgsConstructor
Expand All @@ -14,5 +17,9 @@ public class UpdateAccountRequest {
@Size(min = 2, max = 100, message = "Name must be between 2 and 100 characters")
private String fullName;

@Email private String email;
@Email
private String email;

@Positive
private BigDecimal currentBalance;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,9 @@

import com.example.expencetrackerapi.entity.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

public interface AccountRepository extends JpaRepository<Account, Long> {}
@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {
Account findAccountByEmail(String email);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,60 +8,85 @@
import com.example.expencetrackerapi.exception.ResourceNotFoundException;
import com.example.expencetrackerapi.mapper.AccountMapper;
import com.example.expencetrackerapi.repository.AccountRepository;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;

@Service
public class AccountService {
private final AccountRepository accountRepository;
private final AccountMapper accountMapper;
private final AccountRepository accountRepository;
private final AccountMapper accountMapper;

public AccountService(AccountRepository accountRepository, AccountMapper accountMapper) {
this.accountRepository = accountRepository;
this.accountMapper = accountMapper;
}

public List<AccountResponseSummary> findAll() {
List<Account> accounts = accountRepository.findAll();
List<AccountResponseSummary> summary = new ArrayList<>();

for (Account account : accounts) {
summary.add(accountMapper.toSummary(account));
}
return summary;
}

public Account findById(Long id) {
return accountRepository
.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Account not found with this id: " + id));
}

public AccountService(AccountRepository accountRepository, AccountMapper accountMapper) {
this.accountRepository = accountRepository;
this.accountMapper = accountMapper;
}
public AccountResponse create(CreateAccountRequest request) {
checkEmailExists(request.getEmail());

public List<AccountResponseSummary> findAll() {
List<Account> accounts = accountRepository.findAll();
List<AccountResponseSummary> summary = new ArrayList<>();
Account account = new Account();
account.setEmail(request.getEmail());
account.setFullName(request.getFullName());
account.setCurrentBalance(request.getCurrentBalance());
accountRepository.save(account);

for (Account account : accounts) {
summary.add(accountMapper.toSummary(account));
return accountMapper.toResponse(account);
}
return summary;
}

public Account findById(Long id) {
return accountRepository
.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Account not found with this id: " + id));
}

public AccountResponse create(CreateAccountRequest request) {
Account account = new Account();
account.setEmail(request.getEmail());
account.setFullName(request.getFullName());
account.setCurrentBalance(request.getCurrentBalance());
accountRepository.save(account);

return accountMapper.toResponse(account);
}

public AccountResponse update(Long id, UpdateAccountRequest request) {
Account account = findById(id);
if (request.getEmail() != null) {
account.setEmail(request.getEmail());

public AccountResponse update(Long id, UpdateAccountRequest request) {
checkEmailExists(request.getEmail());

Account account = findById(id);
if (request.getEmail() != null) {
account.setEmail(request.getEmail());
}
if (request.getFullName() != null) {
account.setFullName(request.getFullName());
}
if (request.getCurrentBalance() != null) {
account.setCurrentBalance(request.getCurrentBalance());
}

if (request.getFullName() != null) {
account.setFullName(request.getFullName());

}
accountRepository.save(account);
return accountMapper.toResponse(account);
}

public void checkEmailExists(String email) {
Account account = accountRepository.findAccountByEmail(email);

if (account == null) {
return;
} else {
throw new IllegalArgumentException("Account with this email exists");
}
}
if (request.getFullName() != null) {
account.setFullName(request.getFullName());

public void delete(Long id) {
Account account = findById(id);
accountRepository.delete(account);
}
accountRepository.save(account);
return accountMapper.toResponse(account);
}

public void delete(Long id) {
Account account = findById(id);
accountRepository.delete(account);
}
}


Loading