Skip to content

Commit c19b088

Browse files
committed
✨ add new entity class and edited bank service
1 parent 2f59f1d commit c19b088

File tree

6 files changed

+140
-4
lines changed

6 files changed

+140
-4
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,51 @@
11
package uz.pdp.springsecurityatm.entity;
22

3+
import lombok.*;
4+
import org.hibernate.Hibernate;
5+
6+
import javax.persistence.*;
7+
import java.util.Objects;
8+
import java.util.Set;
9+
10+
@AllArgsConstructor
11+
@NoArgsConstructor
12+
@Getter
13+
@Setter
14+
@ToString
15+
@Entity
316
public class ATM {
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
private Long id;
20+
21+
@Column(name = "card_type", nullable = false)
22+
@ManyToMany
23+
@ToString.Exclude
24+
private Set<CardType> cardType;
25+
26+
@ManyToOne
27+
private Bank bank;
28+
29+
@OneToOne
30+
private Address address;
31+
32+
@ManyToOne
33+
private User user;
34+
35+
private Double balance;
36+
private Double commission;
37+
private Double maxWithdraw;
38+
39+
@Override
40+
public boolean equals(Object o) {
41+
if (this == o) return true;
42+
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
43+
ATM atm = (ATM) o;
44+
return id != null && Objects.equals(id, atm.id);
45+
}
46+
47+
@Override
48+
public int hashCode() {
49+
return getClass().hashCode();
50+
}
451
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package uz.pdp.springsecurityatm.entity;
2+
3+
import lombok.*;
4+
import org.hibernate.Hibernate;
5+
import org.hibernate.annotations.CreationTimestamp;
6+
7+
import javax.persistence.*;
8+
import java.sql.Timestamp;
9+
import java.util.Objects;
10+
11+
@NoArgsConstructor
12+
@Getter
13+
@Setter
14+
@ToString
15+
@Entity(name = "atm_history")
16+
public class ATMHistory {
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
private Long id;
20+
21+
private Double summa; // sumda qancha miqdor yechilganligi
22+
23+
private Double dollar; // dollarda qancha miqdor yechilganligi
24+
25+
@ManyToOne(optional = false)
26+
private ATM atm;
27+
28+
@ManyToOne(optional = false)
29+
private Card card;
30+
31+
@Column(name = "created_at")
32+
@CreationTimestamp
33+
private Timestamp createdAt;
34+
35+
public ATMHistory(Double summa, Double dollar, ATM atm, Card card) {
36+
this.summa = summa;
37+
this.dollar = dollar;
38+
this.atm = atm;
39+
this.card = card;
40+
}
41+
42+
@Override
43+
public boolean equals(Object o) {
44+
if (this == o) return true;
45+
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
46+
ATMHistory that = (ATMHistory) o;
47+
return id != null && Objects.equals(id, that.id);
48+
}
49+
50+
@Override
51+
public int hashCode() {
52+
return getClass().hashCode();
53+
}
54+
}

src/main/java/uz/pdp/springsecurityatm/entity/Bank.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import org.hibernate.Hibernate;
55

66
import javax.persistence.*;
7+
import javax.validation.constraints.NotBlank;
8+
import javax.validation.constraints.NotNull;
79
import java.util.Objects;
810

911
@AllArgsConstructor
@@ -17,7 +19,8 @@ public class Bank {
1719
@GeneratedValue(strategy = GenerationType.IDENTITY)
1820
private Integer id;
1921

20-
@Column(nullable = false)
22+
@NotBlank
23+
@Column(nullable = false, unique = true)
2124
private String name;
2225

2326
@Override
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package uz.pdp.springsecurityatm.entity.enums;
2+
3+
public enum UZS {
4+
_1000, _5000, _10000, _50000, _100000
5+
}

src/main/java/uz/pdp/springsecurityatm/service/BankService.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package uz.pdp.springsecurityatm.service;
22

33
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.http.HttpStatus;
45
import org.springframework.http.ResponseEntity;
56
import org.springframework.stereotype.Service;
67
import uz.pdp.springsecurityatm.entity.Bank;
78
import uz.pdp.springsecurityatm.repository.BankRepository;
89

910
import static org.springframework.http.HttpStatus.CONFLICT;
1011
import static org.springframework.http.HttpStatus.CREATED;
11-
import static org.springframework.http.ResponseEntity.ok;
12-
import static org.springframework.http.ResponseEntity.status;
12+
import static org.springframework.http.ResponseEntity.*;
1313

1414
@Service
1515
public class BankService {
@@ -24,8 +24,35 @@ public ResponseEntity<?> getAllBank() {
2424
return ok(bankRepository.findAll());
2525
}
2626

27+
public ResponseEntity<?> getOneBank(Integer id) {
28+
return bankRepository.findById(id).map(ResponseEntity::ok).orElseGet(() -> notFound().build());
29+
}
30+
2731
public ResponseEntity<?> addBank(Bank bank) {
2832
if (bankRepository.existsByName(bank.getName())) return status(CONFLICT).body("Name already exist");
2933
return status(CREATED).body(bankRepository.save(new Bank(null, bank.getName())));
3034
}
35+
36+
public ResponseEntity<?> editBank(Integer id, Bank bank) {
37+
return bankRepository.findById(id)
38+
.map(b -> {
39+
if (bankRepository.existsByName(bank.getName())) return status(CONFLICT).body("Name already exist");
40+
b.setName(bank.getName());
41+
return status(CREATED).body(bankRepository.save(b));
42+
})
43+
.orElseGet(() -> notFound().build());
44+
}
45+
46+
public ResponseEntity<?> deleteBank(Integer id) {
47+
return bankRepository.findById(id)
48+
.map(bank -> {
49+
try {
50+
bankRepository.delete(bank);
51+
return status(HttpStatus.NO_CONTENT).body("Bank deleted");
52+
} catch (Exception e) {
53+
return status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
54+
}
55+
})
56+
.orElseGet(() -> notFound().build());
57+
}
3158
}

src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ spring.jackson.time-zone=Asia/Tashkent
1111
# JWT EXPIRATION TIME
1212
spring.jwt.expiration=3600
1313
# DATA INITIALIZATION
14-
spring.data.initialization=never
14+
spring.data.initialization=always
1515
# FOR EMAIL INTEGRATION
1616
spring.mail.host=smtp.gmail.com
1717
spring.mail.port=587

0 commit comments

Comments
 (0)