Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая работа Головков И.Е. 12002108

.pdf
Скачиваний:
4
Добавлен:
26.06.2024
Размер:
1.72 Mб
Скачать

@Override

public void deleteById(Long id) { productRepository.deleteById(id);

}

}

package com.sportline.service.impl;

import com.sportline.exc.CustomNotFoundException; import com.sportline.model.entity.SpecialOffer;

import com.sportline.repository.SpecialOfferRepository; import com.sportline.service.SpecialOfferService; import lombok.AllArgsConstructor;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service

@AllArgsConstructor @Transactional(readOnly = true)

public class SpecialOfferServiceImpl implements SpecialOfferService {

private final SpecialOfferRepository specialOfferRepository;

@Transactional

@Override

public void create(SpecialOffer specialOffer) {

41

specialOfferRepository.save(specialOffer);

}

@Override

public List<SpecialOffer> findAll() { return specialOfferRepository.findAll();

}

@Override

public Page<SpecialOffer> findAllByPage(int pageNum, int pageSize) { return specialOfferRepository.findAll(PageRequest.of(pageNum, pageSize));

}

@Override

public SpecialOffer getById(Long id) { return specialOfferRepository

.findById(id)

.orElseThrow(() -> new CustomNotFoundException("Специальное предложение", id));

}

@Transactional

@Override

public void updateById(SpecialOffer specialOffer, long id) { SpecialOffer specialOfferBefore = getById(id); specialOffer.setId(id);

if (specialOffer.getStartDate() == null) { specialOffer.setStartDate(specialOfferBefore.getStartDate());

}

if (specialOffer.getEndDate() == null) {

42

specialOffer.setEndDate(specialOfferBefore.getEndDate());

}

specialOfferRepository.save(specialOffer);

}

@Transactional

@Override

public void deleteById(Long id) { specialOfferRepository.deleteById(id);

}

}

43

Приложение В

Сущности

package com.sportline.model.entity;

import jakarta.persistence.*;

import lombok.AllArgsConstructor; import lombok.Data;

import lombok.NoArgsConstructor;

import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

@Data

@AllArgsConstructor

@NoArgsConstructor

@Entity

@Table(name = "blog_posts") public class BlogPost {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

private String heading;

private String content;

@DateTimeFormat(pattern = "dd-MM-yyyy HH:mm:ss") @Temporal(TemporalType.TIMESTAMP)

44

private LocalDateTime publicationDate;

}

package com.sportline.model.entity;

import jakarta.persistence.*;

import lombok.AllArgsConstructor; import lombok.Data;

import lombok.NoArgsConstructor; import lombok.ToString;

import java.util.List;

@Data

@AllArgsConstructor

@NoArgsConstructor

@Entity

@Table(name = "brands") public class Brand {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

private String name;

private String country;

private String description;

private String website;

45

@ToString.Exclude @OneToMany(mappedBy = "brand") private List<Product> products;

}

package com.sportline.model.entity;

import jakarta.persistence.*;

import lombok.AllArgsConstructor; import lombok.Data;

import lombok.NoArgsConstructor; import lombok.ToString;

@Data

@AllArgsConstructor

@NoArgsConstructor

@Entity

@Table(name = "products") public class Product {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

private String name;

private String description;

private String imgSrc;

46

private Double price;

@Enumerated(EnumType.STRING) private Status status;

@ToString.Exclude

@ManyToOne @JoinColumn(name = "brand_id") private Brand brand;

}

package com.sportline.model.entity;

import jakarta.persistence.*;

import lombok.AllArgsConstructor; import lombok.Data;

import lombok.NoArgsConstructor;

import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;

@Data

@AllArgsConstructor

@NoArgsConstructor

@Entity

@Table(name = "special_offers") public class SpecialOffer {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

47

private Long id;

private String name;

private String description;

@DateTimeFormat(pattern = "dd/MM/yyyy") @Temporal(TemporalType.DATE)

private LocalDate startDate;

@DateTimeFormat(pattern = "dd/MM/yyyy") @Temporal(TemporalType.DATE)

private LocalDate endDate;

}

package com.sportline.model.entity;

public enum Status { IN_STOCK, OUT_OF_STOCK, PRE_ORDER, WILL_BE_SOON;

public String getTranslated() { if (this.equals(IN_STOCK)) {

return "В наличии";

}else if (this.equals(OUT_OF_STOCK)) { return "Нет в наличии";

}else if (this.equals(PRE_ORDER)) {

return "По предзаказу";

48

}else if (this.equals(WILL_BE_SOON)) { return "Скоро в продаже";

}else {

return "";

}

}

}

49