From c8a20da5be3df37ecdb4376f99b3b6cc7989b9bf Mon Sep 17 00:00:00 2001 From: Hams-Mohamed Date: Wed, 19 Apr 2023 14:58:06 +0200 Subject: [PATCH 1/6] #153_calculate_profit_amount(crud API) --- .../rms/domain/investor/ProfitDetails.java | 28 ++++++++ .../repository/ProfitDetailsRepository.java | 9 +++ .../controller/ProfitDetailsController.java | 50 +++++++++++++ .../com/rms/rest/dto/ProfitDetailsDto.java | 13 ++++ .../rest/handler/ProfitDetailsHandler.java | 70 +++++++++++++++++++ .../rest/modelmapper/ProfitDetailsMapper.java | 49 +++++++++++++ .../com/rms/service/ProfitDetailsService.java | 38 ++++++++++ .../db/changelog/2023/04/19-01-changelog.xml | 35 ++++++++++ .../db/changelog/db.changelog-master.xml | 1 + 9 files changed, 293 insertions(+) create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/domain/investor/ProfitDetails.java create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/rest/dto/ProfitDetailsDto.java create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/rest/modelmapper/ProfitDetailsMapper.java create mode 100644 retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java create mode 100644 retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/domain/investor/ProfitDetails.java b/retail-managment-system/rms-api/src/main/java/com/rms/domain/investor/ProfitDetails.java new file mode 100644 index 00000000..9c2ea75b --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/domain/investor/ProfitDetails.java @@ -0,0 +1,28 @@ +package com.rms.domain.investor; + +import com.rms.domain.common.JPAEntity; +import com.rms.domain.core.Product; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Data +@Entity +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "Profit_Details") +public class ProfitDetails extends JPAEntity { + @Column(name = "Bill_Price") + private double billPrice; + + @Column(name = "Product_Price") + private double productPrice; + + @Column(name = "count") + private int count; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "product_id") + private Product product; +} diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java new file mode 100644 index 00000000..83cb245f --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java @@ -0,0 +1,9 @@ +package com.rms.repository; + +import com.rms.domain.investor.ProfitDetails; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProfitDetailsRepository extends JpaRepository { +} diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java new file mode 100644 index 00000000..df86b53a --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java @@ -0,0 +1,50 @@ +package com.rms.rest.controller; + +import com.rms.rest.dto.ProfitDetailsDto; +import com.rms.rest.handler.ProfitDetailsHandler; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/profitDetails") +@AllArgsConstructor +@Tag(name = "ProfitDetails", description = "Rest Api For ProfitDetails") +public class ProfitDetailsController { + private ProfitDetailsHandler profitDetailsHandler; + + @GetMapping + @Operation(summary = "Get All", description = "this api for get all profit Details") + public ResponseEntity getAll(@RequestParam(value = "page", defaultValue = "0") Integer page, + @RequestParam(value = "size", defaultValue = "10") Integer size) { + return profitDetailsHandler.getAll(page, size); + } + + @GetMapping("/{id}") + @Operation(summary = "Get By Id", description = "this api for get profit Details by id") + public ResponseEntity getById(@PathVariable("id") Integer id) { + return profitDetailsHandler.getById(id); + } + + @PostMapping + @Operation(summary = "Add", description = "this api for add profit Details") + public ResponseEntity add(@RequestBody ProfitDetailsDto profitDetails) { + return profitDetailsHandler.save(profitDetails); + } + + + @PutMapping("/{id}") + @Operation(summary = "Update", description = "this api for update profit Details") + public ResponseEntity updateProfit(@RequestBody ProfitDetailsDto profitDetailsdto, @PathVariable Integer id) { + return profitDetailsHandler.update(profitDetailsdto, id); + } + + @DeleteMapping("/{id}") + @Operation(summary = "delete profit By Id") + public ResponseEntity delete(@PathVariable Integer id) { + return profitDetailsHandler.delete(id); + } + +} diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/dto/ProfitDetailsDto.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/dto/ProfitDetailsDto.java new file mode 100644 index 00000000..6f8361d2 --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/dto/ProfitDetailsDto.java @@ -0,0 +1,13 @@ +package com.rms.rest.dto; + +import com.rms.rest.dto.common.GenericDto; +import lombok.Data; + + +@Data +public class ProfitDetailsDto extends GenericDto { + private double billPrice; + private double productPrice; + private int count; + private ProductDto product; +} diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java new file mode 100644 index 00000000..4aff37b0 --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java @@ -0,0 +1,70 @@ +package com.rms.rest.handler; + +import com.rms.domain.investor.Profit; +import com.rms.domain.investor.ProfitDetails; +import com.rms.rest.dto.ProfitDetailsDto; +import com.rms.rest.dto.common.PaginatedResultDto; +import com.rms.rest.exception.*; +import com.rms.rest.modelmapper.ProfitDetailsMapper; +import com.rms.rest.modelmapper.common.PaginationMapper; +import com.rms.service.ProfitDetailsService; +import lombok.AllArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@AllArgsConstructor +public class ProfitDetailsHandler { + private ProfitDetailsService profitDetailsService; + private ProfitDetailsMapper mapper; + private PaginationMapper paginationMapper; + + public ResponseEntity getAll(Integer page, Integer size) { + Page profitDetails = profitDetailsService.getAll(page, size); + List dtos = mapper.toDto(profitDetails.getContent()); + PaginatedResultDto paginatedResult = new PaginatedResultDto<>(); + paginatedResult.setData(dtos); + paginatedResult.setPagination(paginationMapper.toDto(profitDetails)); + return ResponseEntity.ok(paginatedResult); + } + + public ResponseEntity getById(Integer id) { + ProfitDetails profitDetails = profitDetailsService.getById(id) + .orElseThrow(() -> new ResourceNotFoundException(ProfitDetails.class.getSimpleName(), id)); + ProfitDetailsDto dto = mapper.toDto(profitDetails); + return ResponseEntity.ok(dto); + } + + public ResponseEntity save(ProfitDetailsDto profitDetailsDto) { + + ProfitDetails profitDetails = mapper.toEntity(profitDetailsDto); + profitDetailsService.save(profitDetails); + ProfitDetailsDto dto = mapper.toDto(profitDetails); + return ResponseEntity.ok(dto); + } + + public ResponseEntity update(ProfitDetailsDto profitDetailsDto, Integer id) { + ProfitDetails profitDetails = profitDetailsService.getById(id) + .orElseThrow(() -> new ResourceNotFoundException(ProfitDetails.class.getSimpleName(), id)); + mapper.updateEntityFromDto(profitDetailsDto, profitDetails); + profitDetailsService.update(profitDetails); + ProfitDetailsDto dto = mapper.toDto(profitDetails); + return ResponseEntity.ok(dto); + } + + public ResponseEntity delete(Integer id) { + ProfitDetails profitDetails = profitDetailsService.getById(id) + .orElseThrow(() -> new ResourceNotFoundException(Profit.class.getSimpleName(), id)); + try { + profitDetailsService.delete(profitDetails); + } catch (Exception exception) { + throw new ResourceRelatedException(Profit.class.getSimpleName(), "Id", id.toString(), ErrorCodes.RELATED_RESOURCE.getCode()); + } + return ResponseEntity.status(HttpStatus.NO_CONTENT).body(new Response("deleted")); + } + +} diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/modelmapper/ProfitDetailsMapper.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/modelmapper/ProfitDetailsMapper.java new file mode 100644 index 00000000..0b5bb32f --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/modelmapper/ProfitDetailsMapper.java @@ -0,0 +1,49 @@ +package com.rms.rest.modelmapper; + +import com.rms.domain.investor.ProfitDetails; +import com.rms.rest.dto.ProfitDetailsDto; +import com.rms.service.ProductService; +import com.rms.utils.HibernateUtils; +import org.mapstruct.*; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class ProfitDetailsMapper { + @Autowired + private ProductMapper productMapper; + @Autowired + private ProductService productService; + + @Mappings({ + @Mapping(source = "product", target = "product", ignore = true) + }) + public abstract ProfitDetailsDto toDto(ProfitDetails profitDetails); + + public abstract List toDto(List list); + + @AfterMapping + public void toDtoAfterMapping(ProfitDetails entity, @MappingTarget ProfitDetailsDto dto) { + if (HibernateUtils.isConvertable(entity.getProduct())) { + dto.setProduct(productMapper.toDto(entity.getProduct())); + } + } + + @InheritInverseConfiguration + public abstract ProfitDetails toEntity(ProfitDetailsDto profitDetailsDto); + + public abstract List toEntity(List list); + + @AfterMapping + public void toEntityAfterMapping(ProfitDetailsDto dto, @MappingTarget ProfitDetails entity) { + if (dto.getProduct() != null) { + entity.setProduct(productService.getById(dto.getProduct().getId()).get()); + } + } + + @InheritInverseConfiguration + @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE) + public abstract ProfitDetails updateEntityFromDto(ProfitDetailsDto profitDetailsDto, @MappingTarget ProfitDetails profitDetails); + +} diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java new file mode 100644 index 00000000..f8858ba6 --- /dev/null +++ b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java @@ -0,0 +1,38 @@ +package com.rms.service; + +import com.rms.domain.investor.ProfitDetails; +import com.rms.repository.ProfitDetailsRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@AllArgsConstructor +public class ProfitDetailsService { + + private ProfitDetailsRepository profitDetailsRepository; + + public Page getAll(Integer page, Integer size) { + return profitDetailsRepository.findAll(PageRequest.of(page, size)); + } + + public Optional getById(Integer id) { + return profitDetailsRepository.findById(id); + } + + public ProfitDetails save(ProfitDetails profitDetails) { + return profitDetailsRepository.save(profitDetails); + } + + public ProfitDetails update(ProfitDetails profitDetails) { + return profitDetailsRepository.save(profitDetails); + } + + public void delete(ProfitDetails profitDetails) { + profitDetailsRepository.delete(profitDetails); + } + +} diff --git a/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml b/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml new file mode 100644 index 00000000..77132101 --- /dev/null +++ b/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/retail-managment-system/rms-api/src/main/resources/db/changelog/db.changelog-master.xml b/retail-managment-system/rms-api/src/main/resources/db/changelog/db.changelog-master.xml index 047f2ddb..b011512d 100644 --- a/retail-managment-system/rms-api/src/main/resources/db/changelog/db.changelog-master.xml +++ b/retail-managment-system/rms-api/src/main/resources/db/changelog/db.changelog-master.xml @@ -15,4 +15,5 @@ + \ No newline at end of file From b71666af29ddfe75f84f88f11695681f56174615 Mon Sep 17 00:00:00 2001 From: Hams-Mohamed Date: Wed, 19 Apr 2023 15:07:18 +0200 Subject: [PATCH 2/6] #153_calculate_profit_amount(crud API) --- .../rms-api/.jpb/jpb-settings.xml | 11 +++++++++++ .../rms-api/.jpb/persistence-units.xml | 12 ++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 retail-managment-system/rms-api/.jpb/jpb-settings.xml create mode 100644 retail-managment-system/rms-api/.jpb/persistence-units.xml diff --git a/retail-managment-system/rms-api/.jpb/jpb-settings.xml b/retail-managment-system/rms-api/.jpb/jpb-settings.xml new file mode 100644 index 00000000..ae03b0cf --- /dev/null +++ b/retail-managment-system/rms-api/.jpb/jpb-settings.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/retail-managment-system/rms-api/.jpb/persistence-units.xml b/retail-managment-system/rms-api/.jpb/persistence-units.xml new file mode 100644 index 00000000..868e60f3 --- /dev/null +++ b/retail-managment-system/rms-api/.jpb/persistence-units.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file From 4e783bff9748cc9835ab7521d213d801e9d24470 Mon Sep 17 00:00:00 2001 From: Hams-Mohamed Date: Wed, 19 Apr 2023 15:22:17 +0200 Subject: [PATCH 3/6] #153_calculate_profit_amount(crud API) update --- .../main/resources/db/changelog/2023/04/19-01-changelog.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml b/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml index 77132101..1ae98b07 100644 --- a/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml +++ b/retail-managment-system/rms-api/src/main/resources/db/changelog/2023/04/19-01-changelog.xml @@ -28,8 +28,5 @@ constraintName="FK_PROFIT_DETAILS_ON_PRODUCT" referencedColumnNames="id" referencedTableName="products"/> - - - \ No newline at end of file From 2d0821f1c6006ae94a199f6e7f95deebb59b6d9c Mon Sep 17 00:00:00 2001 From: HemmatMofty <125792071+HemmatMofty@users.noreply.github.com> Date: Wed, 19 Apr 2023 15:27:08 +0200 Subject: [PATCH 4/6] Delete jpb-settings.xml --- retail-managment-system/rms-api/.jpb/jpb-settings.xml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 retail-managment-system/rms-api/.jpb/jpb-settings.xml diff --git a/retail-managment-system/rms-api/.jpb/jpb-settings.xml b/retail-managment-system/rms-api/.jpb/jpb-settings.xml deleted file mode 100644 index ae03b0cf..00000000 --- a/retail-managment-system/rms-api/.jpb/jpb-settings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file From 75c6e820dc9bfbea04d8300f21b0a3f8b0f8a968 Mon Sep 17 00:00:00 2001 From: HemmatMofty <125792071+HemmatMofty@users.noreply.github.com> Date: Wed, 19 Apr 2023 15:27:22 +0200 Subject: [PATCH 5/6] Delete persistence-units.xml --- .../rms-api/.jpb/persistence-units.xml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 retail-managment-system/rms-api/.jpb/persistence-units.xml diff --git a/retail-managment-system/rms-api/.jpb/persistence-units.xml b/retail-managment-system/rms-api/.jpb/persistence-units.xml deleted file mode 100644 index 868e60f3..00000000 --- a/retail-managment-system/rms-api/.jpb/persistence-units.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file From 9b3006617c2babd85f15e20e9a5c1a8fc742a8e3 Mon Sep 17 00:00:00 2001 From: Hams-Mohamed Date: Wed, 3 May 2023 12:42:10 +0300 Subject: [PATCH 6/6] #153_calculate_profit_amount --- .../repository/ProfitDetailsRepository.java | 7 ++ .../controller/ProfitDetailsController.java | 6 -- .../rms/rest/handler/BillDetailsHandler.java | 36 +++++----- .../com/rms/rest/handler/BillHandler.java | 68 +++++++++---------- .../rms/rest/handler/OrderItemHandler.java | 55 +++++++-------- .../rest/handler/ProfitDetailsHandler.java | 31 +++++++-- .../com/rms/service/ProfitDetailsService.java | 4 ++ 7 files changed, 115 insertions(+), 92 deletions(-) diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java index 83cb245f..7fe61de5 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/repository/ProfitDetailsRepository.java @@ -2,8 +2,15 @@ import com.rms.domain.investor.ProfitDetails; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface ProfitDetailsRepository extends JpaRepository { + + @Query("select p from ProfitDetails p where p.product.id = :productId") + Optional findProfitDetailsByProductId(@Param("productId") Integer productId); } diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java index df86b53a..a318260a 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/controller/ProfitDetailsController.java @@ -28,12 +28,6 @@ public ResponseEntity getById(@PathVariable("id") Integer id) { return profitDetailsHandler.getById(id); } - @PostMapping - @Operation(summary = "Add", description = "this api for add profit Details") - public ResponseEntity add(@RequestBody ProfitDetailsDto profitDetails) { - return profitDetailsHandler.save(profitDetails); - } - @PutMapping("/{id}") @Operation(summary = "Update", description = "this api for update profit Details") diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillDetailsHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillDetailsHandler.java index 999d81c7..610b24e9 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillDetailsHandler.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillDetailsHandler.java @@ -1,4 +1,5 @@ package com.rms.rest.handler; + import com.rms.domain.core.Product; import com.rms.domain.purchase.Bill; import com.rms.domain.purchase.BillDetails; @@ -18,6 +19,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; + import java.util.List; @Component @@ -29,6 +31,8 @@ public class BillDetailsHandler { private BillDetailsMapper billDetailsMapper; private PaginationMapper paginationMapper; + private ProfitDetailsHandler profitDetailsHandler; + public ResponseEntity getAll(Integer page, Integer size) { Page billDetaills = billDetailsService.getAll(page, size); List dtos = billDetailsMapper.toDto(billDetaills.getContent()); @@ -38,19 +42,19 @@ public ResponseEntity getAll(Integer page, Integer size) { return ResponseEntity.ok(paginatedResultDto); } - - public ResponseEntity save(int billId,List billDetailsDtoList) - { - for (BillDetailsDto billDetailsDto :billDetailsDtoList ){ + + public ResponseEntity save(int billId, List billDetailsDtoList) { + for (BillDetailsDto billDetailsDto : billDetailsDtoList) { Product product = productService.getById(billDetailsDto.getProduct().getId()) - .orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(),billDetailsDto.getProduct().getId())); - product.setQuantity(billDetailsDto.getQuantity()+product.getQuantity()); + .orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(), billDetailsDto.getProduct().getId())); + product.setQuantity(billDetailsDto.getQuantity() + product.getQuantity()); } Bill bill = billService.getById(billId) - .orElseThrow(()->new ResourceNotFoundException(Bill.class.getSimpleName(),billId)); - List billDetails=billDetailsMapper.toEntity(billDetailsDtoList); - billDetailsService.save(bill,billDetails); - List dtos =billDetailsMapper.toDto(billDetails); + .orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(), billId)); + List billDetails = billDetailsMapper.toEntity(billDetailsDtoList); + billDetailsService.save(bill, billDetails); + profitDetailsHandler.save(billDetails); + List dtos = billDetailsMapper.toDto(billDetails); return ResponseEntity.ok(dtos); } @@ -75,18 +79,16 @@ public ResponseEntity update(BillDetailsDto billDetailsDto, Integer id) { billDetails.setProduct(product); } - + billDetailsMapper.updateEntityFromDto(billDetailsDto, billDetails); billDetailsService.update(billDetails); BillDetailsDto dto = billDetailsMapper.toDto(billDetails); return ResponseEntity.ok(dto); - - + } - - + public ResponseEntity findAllBillDetailsByBillId(Integer id) { billService.getById(id).orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(), id)); List billDetails = billDetailsService.getAllBillDetailsByBillId(id); @@ -94,10 +96,10 @@ public ResponseEntity findAllBillDetailsByBillId(Integer id) { return ResponseEntity.ok(dtos); } - + public ResponseEntity delete(Integer id) { BillDetails billDetails = billDetailsService.getById(id).orElseThrow(() -> new ResourceNotFoundException(BillDetails.class.getSimpleName(), id)); - + try { billDetailsService.delete(billDetails); } catch (Exception e) { diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillHandler.java index 3a868894..6336ed0e 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillHandler.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/BillHandler.java @@ -1,4 +1,5 @@ package com.rms.rest.handler; + import com.rms.domain.purchase.Bill; import com.rms.domain.purchase.BillDetails; import com.rms.domain.purchase.Supplier; @@ -16,6 +17,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; + import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -33,46 +35,42 @@ public class BillHandler { private BillDetailsService billDetailsService; - public ResponseEntitygetById(Integer id) - { - Bill bill = billService.getById(id) - .orElseThrow(()-> new ResourceNotFoundException(Bill.class.getSimpleName(),id)); - BillDto billDto=billMapper.toDto(bill); + public ResponseEntity getById(Integer id) { + Bill bill = billService.getById(id) + .orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(), id)); + BillDto billDto = billMapper.toDto(bill); return ResponseEntity.ok(billDto); } - public ResponseEntitygetAll(Integer page , Integer size) - { - Page bills =billService.getAll(page,size); - ListbillDtos = billMapper.toDto(bills.getContent()); + + public ResponseEntity getAll(Integer page, Integer size) { + Page bills = billService.getAll(page, size); + List billDtos = billMapper.toDto(bills.getContent()); PaginatedResultDto paginatedResultDto = new PaginatedResultDto<>(); paginatedResultDto.setData(billDtos); paginatedResultDto.setPagination(paginationMapper.toDto(bills)); return ResponseEntity.ok(paginatedResultDto); } - public ResponseEntitysave(BillDto billDto) - { - Supplier supplier =supplierService.getById(billDto.getSupplierDto().getId()) - .orElseThrow(() -> new ResourceNotFoundException(Supplier.class.getSimpleName(),billDto.getId())); - if(billDto.getBillDetailsDtoList()==null || billDto.getBillDetailsDtoList().size()==0) - { - throw new BusinessValidationException(Bill.class.getName()," requested id",billDto.getId().toString(),ErrorCodes.BUSINESS_VALIDATION.getCode()); + + public ResponseEntity save(BillDto billDto) { + Supplier supplier = supplierService.getById(billDto.getSupplierDto().getId()) + .orElseThrow(() -> new ResourceNotFoundException(Supplier.class.getSimpleName(), billDto.getId())); + if (billDto.getBillDetailsDtoList() == null || billDto.getBillDetailsDtoList().size() == 0) { + throw new BusinessValidationException(Bill.class.getName(), " requested id", billDto.getId().toString(), ErrorCodes.BUSINESS_VALIDATION.getCode()); } Bill bill = billMapper.toEntity(billDto); bill.setSupplier(supplier); bill.setDate(LocalDate.now()); - if(billService.findBillNumber(bill.getBillNo()).isPresent()) - { - throw new ResourceAlreadyExistsException(Bill.class.getSimpleName(),"bill Number",bill.getBillNo(),ErrorCodes.RELATED_RESOURCE.getCode()); + if (billService.findBillNumber(bill.getBillNo()).isPresent()) { + throw new ResourceAlreadyExistsException(Bill.class.getSimpleName(), "bill Number", bill.getBillNo(), ErrorCodes.RELATED_RESOURCE.getCode()); } - billService.save(bill); - BillDto dto = billMapper.toDto(bill); - if(billDto.getBillDetailsDtoList()!=null) - { - billDetailsHandler.save(bill.getId(),billDto.getBillDetailsDtoList()); - } - return ResponseEntity.ok(dto); + billService.save(bill); + BillDto dto = billMapper.toDto(bill); + if (billDto.getBillDetailsDtoList() != null) { + billDetailsHandler.save(bill.getId(), billDto.getBillDetailsDtoList()); + } + return ResponseEntity.ok(dto); } @@ -81,16 +79,15 @@ public ResponseEntity update(BillDto billDto, Integer id) { Bill bill = billService.getById(id) .orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(), id)); - if(billDto.getSupplierDto()!=null) { + if (billDto.getSupplierDto() != null) { Supplier supplier = supplierService.getById(billDto.getSupplierDto().getId()) .orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(), billDto.getSupplierDto().getId())); bill.setSupplier(supplier); } - OptionalbillNumExist=billService.findBillNumber(billDto.getBillNo()); - if(billNumExist.isPresent() && !billNumExist.get().getId().equals(id)) - { - throw new ResourceAlreadyExistsException(Bill.class.getSimpleName(),"bill Number",bill.getBillNo(),ErrorCodes.DUPLICATE_RESOURCE.getCode()); + Optional billNumExist = billService.findBillNumber(billDto.getBillNo()); + if (billNumExist.isPresent() && !billNumExist.get().getId().equals(id)) { + throw new ResourceAlreadyExistsException(Bill.class.getSimpleName(), "bill Number", bill.getBillNo(), ErrorCodes.DUPLICATE_RESOURCE.getCode()); } @@ -102,10 +99,10 @@ public ResponseEntity update(BillDto billDto, Integer id) { BillDto dto = billMapper.toDto(bill); return ResponseEntity.ok(dto); } - + public ResponseEntity delete(Integer id) { - Bill bill= billService.getById(id) - .orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(),id)); + Bill bill = billService.getById(id) + .orElseThrow(() -> new ResourceNotFoundException(Bill.class.getSimpleName(), id)); try { billService.delete(bill); } catch (Exception exception) { @@ -115,7 +112,4 @@ public ResponseEntity delete(Integer id) { } - - - } diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/OrderItemHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/OrderItemHandler.java index 0a32b538..6495ca01 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/OrderItemHandler.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/OrderItemHandler.java @@ -1,8 +1,7 @@ package com.rms.rest.handler; + import com.rms.domain.core.Product; -import com.rms.domain.sales.Customer; import com.rms.domain.sales.OrderItem; -import com.rms.domain.sales.PaymentType; import com.rms.rest.dto.OrderItemDto; import com.rms.rest.dto.common.PaginatedResultDto; import com.rms.rest.exception.*; @@ -11,7 +10,6 @@ import com.rms.service.OrderItemService; import com.rms.service.ProductService; import lombok.AllArgsConstructor; -import org.omg.CORBA.DynAnyPackage.Invalid; import org.springframework.data.domain.Page; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -26,65 +24,68 @@ public class OrderItemHandler { private ProductService productService; private OrderItemService orderItemService; private OrderItemMapper mapper; - private PaginationMapper paginationMapper ; + private PaginationMapper paginationMapper; + + private ProfitDetailsHandler profitDetailsHandler; - public ResponseEntity getAll(Integer page , Integer size) - { + public ResponseEntity getAll(Integer page, Integer size) { Page OrderItems = orderItemService.getAll(page, size); - List dtos =mapper.toDto(OrderItems.getContent()); + List dtos = mapper.toDto(OrderItems.getContent()); PaginatedResultDto paginatedResultDto = new PaginatedResultDto<>(); paginatedResultDto.setData(dtos); paginatedResultDto.setPagination(paginationMapper.toDto(OrderItems)); return ResponseEntity.ok(paginatedResultDto); } - public List findOrderItemsByOrderId(Integer orderId) - { + public List findOrderItemsByOrderId(Integer orderId) { List OrderItems = orderItemService.getOrderItemsByOrderId(orderId); - List dtos =mapper.toDto(OrderItems); + List dtos = mapper.toDto(OrderItems); return dtos; } - public ResponseEntity save(OrderItemDto orderItemDto) { + public ResponseEntity save(OrderItemDto orderItemDto) { Product product = productService.getById(orderItemDto.getProduct().getId()) - .orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(),orderItemDto.getProduct().getId())); + .orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(), orderItemDto.getProduct().getId())); - if(product.getQuantity() getById(Integer id) { - OrderItem orderItem= orderItemService.getById(id) - .orElseThrow(() -> new ResourceNotFoundException(OrderItem.class.getSimpleName(),id)); + OrderItem orderItem = orderItemService.getById(id) + .orElseThrow(() -> new ResourceNotFoundException(OrderItem.class.getSimpleName(), id)); OrderItemDto dto = mapper.toDto(orderItem); return ResponseEntity.ok(dto); } - public ResponseEntity update(OrderItemDto orderItemDto,Integer id) { + public ResponseEntity update(OrderItemDto orderItemDto, Integer id) { OrderItem orderItem = orderItemService.getById(id) - .orElseThrow(() -> new ResourceNotFoundException(OrderItem.class.getSimpleName(),id)); - Product product =productService.getById(orderItemDto.getProduct().getId()) + .orElseThrow(() -> new ResourceNotFoundException(OrderItem.class.getSimpleName(), id)); + Product product = productService.getById(orderItemDto.getProduct().getId()) .orElseThrow(() -> new ResourceNotFoundException(Product.class.getSimpleName(), orderItemDto.getProduct().getId())); mapper.updateEntityFromDto(orderItemDto, orderItem); - orderItem.setUnitPrice(product.getCashPrice()*orderItem.getQuantity()); + orderItem.setUnitPrice(product.getCashPrice() * orderItem.getQuantity()); orderItemService.update(orderItem); OrderItemDto dto = mapper.toDto(orderItem); return ResponseEntity.ok(dto); } + public ResponseEntity delete(Integer id) { OrderItem orderItem = orderItemService.getById(id) - .orElseThrow(() -> new ResourceNotFoundException(OrderItem.class.getSimpleName(),id)); + .orElseThrow(() -> new ResourceNotFoundException(OrderItem.class.getSimpleName(), id)); try { orderItemService.delete(orderItem); } catch (Exception exception) { diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java index 4aff37b0..73140cdf 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/rest/handler/ProfitDetailsHandler.java @@ -2,6 +2,7 @@ import com.rms.domain.investor.Profit; import com.rms.domain.investor.ProfitDetails; +import com.rms.domain.purchase.BillDetails; import com.rms.rest.dto.ProfitDetailsDto; import com.rms.rest.dto.common.PaginatedResultDto; import com.rms.rest.exception.*; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Component; import java.util.List; +import java.util.Optional; @Component @AllArgsConstructor @@ -39,12 +41,31 @@ public ResponseEntity getById(Integer id) { return ResponseEntity.ok(dto); } - public ResponseEntity save(ProfitDetailsDto profitDetailsDto) { + public void save(List billDetails) { + ProfitDetails profitDetails; - ProfitDetails profitDetails = mapper.toEntity(profitDetailsDto); - profitDetailsService.save(profitDetails); - ProfitDetailsDto dto = mapper.toDto(profitDetails); - return ResponseEntity.ok(dto); + for (BillDetails billdetail : billDetails) { + profitDetails = new ProfitDetails(); + Optional profitDetail = profitDetailsService.findByProductId(billdetail.getProduct().getId()); + if (!profitDetail.isPresent()) { + + profitDetails.setBillPrice(billdetail.getPrice()); + profitDetails.setProductPrice(billdetail.getProduct().getCashPrice()); + profitDetails.setProduct(billdetail.getProduct()); + profitDetailsService.save(profitDetails); + } else { + profitDetail.get().setBillPrice(billdetail.getPrice()); + profitDetail.get().setProductPrice(billdetail.getProduct().getCashPrice()); + profitDetailsService.save(profitDetail.get()); + } + } + + + } + + public void createCount(Integer productId, Integer quantity) { + Optional profitDetail = profitDetailsService.findByProductId(productId); + profitDetail.get().setCount(profitDetail.get().getCount() + quantity); } public ResponseEntity update(ProfitDetailsDto profitDetailsDto, Integer id) { diff --git a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java index f8858ba6..7a8b773b 100644 --- a/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java +++ b/retail-managment-system/rms-api/src/main/java/com/rms/service/ProfitDetailsService.java @@ -31,6 +31,10 @@ public ProfitDetails update(ProfitDetails profitDetails) { return profitDetailsRepository.save(profitDetails); } + public Optional findByProductId(Integer productId) { + return profitDetailsRepository.findProfitDetailsByProductId(productId); + } + public void delete(ProfitDetails profitDetails) { profitDetailsRepository.delete(profitDetails); }