From 68f75eb39575a9b6b25501a5c59b466a49189cb1 Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Sat, 19 Feb 2022 14:53:18 +0300 Subject: [PATCH 1/7] Added Result Package 19/02/2022 Added Result package Added getAllByPaged method Added getAllBySorted method --- rentacar/.gitignore | 33 ++ rentacar/mvnw | 316 ++++++++++++++++++ rentacar/mvnw.cmd | 188 +++++++++++ rentacar/pom.xml | 90 +++++ .../rentacar/RentacarApplication.java | 28 ++ .../api/controllers/BrandsController.java | 50 +++ .../api/controllers/CarsController.java | 92 +++++ .../api/controllers/ColorsController.java | 50 +++ .../business/abstracts/BrandService.java | 24 ++ .../business/abstracts/CarService.java | 37 ++ .../business/abstracts/ColorService.java | 23 ++ .../business/concretes/BrandManager.java | 87 +++++ .../business/concretes/CarManager.java | 146 ++++++++ .../business/concretes/ColorManager.java | 87 +++++ .../rentacar/business/dtos/BrandListDto.java | 15 + .../rentacar/business/dtos/CarListDto.java | 19 ++ .../rentacar/business/dtos/ColorListDto.java | 15 + .../createRequests/CreateBrandRequest.java | 14 + .../createRequests/CreateCarRequest.java | 19 ++ .../createRequests/CreateColorRequest.java | 13 + .../deleteRequests/DeleteBrandRequest.java | 13 + .../deleteRequests/DeleteCarRequest.java | 14 + .../deleteRequests/DeleteColorRequest.java | 13 + .../updateRequests/UpdateBrandRequest.java | 15 + .../UpdateBrandToCarRequest.java | 15 + .../updateRequests/UpdateCarRequest.java | 16 + .../updateRequests/UpdateColorRequest.java | 14 + .../UpdateColorToCarRequest.java | 15 + .../utilities/mapping/ModelMapperManager.java | 30 ++ .../utilities/mapping/ModelMapperService.java | 10 + .../core/utilities/results/DataResult.java | 21 ++ .../utilities/results/ErrorDataResult.java | 16 + .../core/utilities/results/ErrorResult.java | 13 + .../core/utilities/results/Result.java | 26 ++ .../utilities/results/SuccessDataResult.java | 17 + .../core/utilities/results/SuccessResult.java | 13 + .../dataAccess/abstracts/BrandDao.java | 14 + .../rentacar/dataAccess/abstracts/CarDao.java | 27 ++ .../dataAccess/abstracts/ColorDao.java | 14 + .../rentacar/entities/concretes/Brand.java | 35 ++ .../rentacar/entities/concretes/Car.java | 49 +++ .../rentacar/entities/concretes/Color.java | 31 ++ .../exceptions/BusinessException.java | 13 + .../src/main/resources/application.properties | 8 + .../rentacar/RentacarApplicationTests.java | 13 + 45 files changed, 1811 insertions(+) create mode 100644 rentacar/.gitignore create mode 100644 rentacar/mvnw create mode 100644 rentacar/mvnw.cmd create mode 100644 rentacar/pom.xml create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/BrandListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/CarListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/ColorListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/DataResult.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorDataResult.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorResult.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/Result.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessDataResult.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessResult.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/BrandDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Brand.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Color.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/BusinessException.java create mode 100644 rentacar/src/main/resources/application.properties create mode 100644 rentacar/src/test/java/com/turkcell/rentacar/RentacarApplicationTests.java diff --git a/rentacar/.gitignore b/rentacar/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/rentacar/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/rentacar/mvnw b/rentacar/mvnw new file mode 100644 index 0000000..8a8fb22 --- /dev/null +++ b/rentacar/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/rentacar/mvnw.cmd b/rentacar/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/rentacar/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/rentacar/pom.xml b/rentacar/pom.xml new file mode 100644 index 0000000..e599377 --- /dev/null +++ b/rentacar/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.6.3 + + + com.turkcell + rentacar + 0.0.1-SNAPSHOT + rentacar + demo northwind + + 11 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + org.postgresql + postgresql + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springdoc + springdoc-openapi-ui + 1.6.6 + + + + org.modelmapper + modelmapper + 2.3.9 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java new file mode 100644 index 0000000..2233caa --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar; + +import org.modelmapper.ModelMapper; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +import com.turkcell.rentacar.exceptions.BusinessException; + +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@SpringBootApplication +@EnableSwagger2 +public class RentacarApplication { + + public static void main(String[] args) { + SpringApplication.run(RentacarApplication.class, args); + } + @Bean + public ModelMapper getModelMapper() { + return new ModelMapper(); + } + @Bean + public BusinessException getBusinessException() { + return new BusinessException(); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java new file mode 100644 index 0000000..bd7c8f3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java @@ -0,0 +1,50 @@ +package com.turkcell.rentacar.api.controllers; + +import com.turkcell.rentacar.business.abstracts.BrandService; +import com.turkcell.rentacar.business.dtos.BrandListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/brands") +public class BrandsController { + + private BrandService brandService; + + public BrandsController(BrandService brandService) { + this.brandService = brandService; + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.brandService.getAll(); + } + + @PostMapping("/add") + public Result save(@RequestBody CreateBrandRequest createBrandRequest) throws BusinessException { + return this.brandService.add(createBrandRequest); + } + + @GetMapping("/getById") + public DataResult getById(@RequestParam int id) { + return this.brandService.getById(id); + } + + @PostMapping("/update") + public Result update(@RequestBody UpdateBrandRequest updateBrandRequest) throws BusinessException { + return this.brandService.update(updateBrandRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody DeleteBrandRequest deleteBrandRequest) { + return this.brandService.delete(deleteBrandRequest); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java new file mode 100644 index 0000000..e61bb27 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java @@ -0,0 +1,92 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.CarService; +import com.turkcell.rentacar.business.dtos.CarListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/cars") +public class CarsController { + + private CarService carService; + + public CarsController(CarService carService) { + super(); + this.carService = carService; + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.carService.getAll(); + } + + @GetMapping("/getById") + public DataResult getById(@RequestParam(value = "id") int id) { + return this.carService.getById(id); + } + + @PostMapping("/add") + public Result add(@RequestBody CreateCarRequest createCarRequest) throws BusinessException { + return this.carService.add(createCarRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody DeleteCarRequest deleteCarRequest) { + return this.carService.delete(deleteCarRequest); + } + + @PostMapping("/update") + public Result update(@RequestBody UpdateCarRequest updateCarRequest) throws BusinessException { + return this.carService.update(updateCarRequest); + } + + @Transactional + @PostMapping("updateColor") + public Result updateColor(@RequestBody UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException { + return this.carService.updateColor(updateColorToCarRequest); + } + + @Transactional + @PostMapping("updateBrand") + public Result updateBrand(@RequestBody UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException { + return this.carService.updateBrand(updateBrandToCarRequest); + } + + @GetMapping("/findByDailyPriceLessThanEqual") + public DataResult> findByDailyPriceLessThanEqual( + @RequestParam(value = "dailyPrice") double dailyPrice) { + return this.carService.findByDailyPriceLessThanEqual(dailyPrice); + } + + @GetMapping("/getAllPaged") + public DataResult> getAllPaged(@RequestParam(value = "pageNo") int pageNo, + @RequestParam(value = "pageSize") int pageSize) { + return this.carService.getAllPaged(pageNo, pageSize); + } + + @GetMapping("/getAllSorted") + public DataResult> getAllSorted(@RequestParam(value = "sort") boolean sort) { + return this.carService.getAllSorted(sort); + + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java new file mode 100644 index 0000000..b560305 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java @@ -0,0 +1,50 @@ +package com.turkcell.rentacar.api.controllers; + +import com.turkcell.rentacar.business.abstracts.ColorService; +import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/colors") +public class ColorsController { + + private ColorService colorService; + + public ColorsController(ColorService colorService) { + this.colorService = colorService; + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.colorService.getAll(); + } + + @PostMapping("/add") + public void save(@RequestBody CreateColorRequest createColorRequest) throws BusinessException { + this.colorService.add(createColorRequest); + } + + @GetMapping("/getById") + public DataResult getById(@RequestParam int id) { + return this.colorService.getById(id); + } + + @PostMapping("/update") + public Result update(@RequestBody UpdateColorRequest updateColorRequest) throws BusinessException{ + return this.colorService.update(updateColorRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody DeleteColorRequest deleteColorRequest) { + return this.colorService.delete(deleteColorRequest); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java new file mode 100644 index 0000000..28cc0e8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java @@ -0,0 +1,24 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.dtos.BrandListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +import java.util.List; + +public interface BrandService { + DataResult> getAll(); + + DataResult getById(int id); + + Result add(CreateBrandRequest createBrandRequest) throws BusinessException; + + Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException; + + Result delete(DeleteBrandRequest deleteBrandRequest); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java new file mode 100644 index 0000000..f8dc068 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java @@ -0,0 +1,37 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.CarListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface CarService { + + DataResult> getAll(); + + DataResult getById(int id); + + DataResult> getAllPaged(int pageNo, int pageSize); + + DataResult> getAllSorted(boolean sort); + + Result add(CreateCarRequest createCarRequest) throws BusinessException; + + Result update(UpdateCarRequest updateCarRequest) throws BusinessException; + + Result delete(DeleteCarRequest deleteCarRequest); + + Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException; + + Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException; + + DataResult> findByDailyPriceLessThanEqual(double dailyPrice); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java new file mode 100644 index 0000000..2c74934 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +import java.util.List; + +public interface ColorService { + DataResult> getAll(); + + DataResult getById(int id); + + Result add(CreateColorRequest createColorRequest) throws BusinessException; + + Result update(UpdateColorRequest updateColorRequest) throws BusinessException; + + Result delete(DeleteColorRequest deleteColorRequest); +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java new file mode 100644 index 0000000..52ef8df --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -0,0 +1,87 @@ +package com.turkcell.rentacar.business.concretes; + +import com.turkcell.rentacar.business.abstracts.BrandService; +import com.turkcell.rentacar.business.dtos.BrandListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.BrandDao; +import com.turkcell.rentacar.entities.concretes.Brand; +import com.turkcell.rentacar.exceptions.BusinessException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class BrandManager implements BrandService { + + private BrandDao brandDao; + private ModelMapperService modelMapperService; + + @Autowired + public BrandManager(BrandDao brandDao, ModelMapperService modelMapperService) { + this.brandDao = brandDao; + this.modelMapperService = modelMapperService; + } + + @Override + public DataResult> getAll() { + List result = this.brandDao.findAll(); + List response = result.stream() + .map(brand -> this.modelMapperService.forDto().map(brand, BrandListDto.class)) + .collect(Collectors.toList()); + return new SuccessDataResult>(response, "Markalar listelendi."); + } + + @Override + public Result add(CreateBrandRequest createBrandRequest) throws BusinessException { + Brand brand = this.modelMapperService.forRequest().map(createBrandRequest, Brand.class); + if (checkIfBrandNameExists(brand.getBrandName())) { + this.brandDao.save(brand); + return new SuccessResult("Marka eklendi."); + } + return new ErrorResult("Marka eklenemedi!"); + } + + @Override + public DataResult getById(int id) { + Brand result = this.brandDao.getBrandByBrandId(id); + BrandListDto response = this.modelMapperService.forDto().map(result, BrandListDto.class); + return new SuccessDataResult(response, "Marka goruntulendi."); + } + + @Override + public Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException{ + Brand brand = this.modelMapperService.forRequest().map(updateBrandRequest, Brand.class); + if (checkIfBrandNameExists(brand.getBrandName())) { + this.brandDao.save(brand); + return new SuccessResult("Marka eklendi."); + } + return new ErrorResult("Marka eklenemedi!"); + } + + @Override + public Result delete(DeleteBrandRequest deleteBrandRequest) { + Brand brand = this.modelMapperService.forRequest().map(deleteBrandRequest, Brand.class); + this.brandDao.deleteById(brand.getBrandId()); + return new SuccessResult("Marka silindi."); + } + + public boolean checkIfBrandNameExists(String brandName) throws BusinessException { + if (!this.brandDao.existsBrandByBrandName(brandName)) { + return true; + } else { + throw new BusinessException("Bu marka zaten kayitli!"); + } + + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java new file mode 100644 index 0000000..24926a7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -0,0 +1,146 @@ +package com.turkcell.rentacar.business.concretes; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.CarService; +import com.turkcell.rentacar.business.dtos.CarListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.CarDao; +import com.turkcell.rentacar.entities.concretes.Car; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class CarManager implements CarService { + + private CarDao carDao; + private ModelMapperService modelMapperService; + + @Autowired + public CarManager(CarDao carDao, ModelMapperService modelMapperService) { + super(); + this.carDao = carDao; + this.modelMapperService = modelMapperService; + } + + @Override + public DataResult> getAll() { + List result = this.carDao.findAll(); + List response = result.stream() + .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Arabalar listelendi."); + } + + @Override + public Result add(CreateCarRequest createCarRequest) throws BusinessException { + Car car = this.modelMapperService.forRequest().map(createCarRequest, Car.class); + this.carDao.save(car); + return new SuccessResult("Araba eklendi."); + } + + @Override + public Result update(UpdateCarRequest updateCarRequest) throws BusinessException { + Car car = this.carDao.getById(updateCarRequest.getCarId()); + if (checkIfCarExists(updateCarRequest.getCarId())) { + Car updatedCar = this.modelMapperService.forRequest().map(updateCarRequest, Car.class); + updatedCar.setBrand(car.getBrand()); + updatedCar.setColor(car.getColor()); + this.carDao.save(updatedCar); + return new SuccessResult("Araba guncellendi."); + } + return new ErrorResult("Araba guncellenemedi!"); + } + + @Override + public Result delete(DeleteCarRequest deleteCarRequest) { + Car car = this.modelMapperService.forRequest().map(deleteCarRequest, Car.class); + this.carDao.deleteById(car.getCarId()); + return new SuccessResult("Araba silindi."); + } + + @Override + public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException { + if (checkIfCarExists(updateColorToCarRequest.getCarId())) { + this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), + updateColorToCarRequest.getColorId()); + return new SuccessResult("Arabanin rengi guncellendi."); + } + return new ErrorResult("Arabanin rengi guncellenemedi!"); + } + + @Override + public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException { + if (checkIfCarExists(updateBrandToCarRequest.getCarId())) { + this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), + updateBrandToCarRequest.getBrandId()); + return new SuccessResult("Arabanin markasi guncellendi."); + } + return new ErrorResult("Arabanin markasi guncellenemedi!"); + } + + @Override + public DataResult getById(int id) { + Car result = this.carDao.getById(id); + CarListDto response = this.modelMapperService.forDto().map(result, CarListDto.class); + return new SuccessDataResult(response, "Araba goruntulendi."); + } + + @Override + public DataResult> findByDailyPriceLessThanEqual(double dailyPrice) { + List result = this.carDao.findByDailyPriceLessThanEqual(dailyPrice); + List response = result.stream() + .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Arabalar fiyata gore listelendi."); + } + + @Override + public DataResult> getAllPaged(int pageNo, int pageSize) { + Pageable pageable = PageRequest.of(pageNo - 1, pageSize); + List result = this.carDao.findAll(pageable).getContent(); + List response = result.stream() + .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Arabalar sayfalanarak listelendi."); + } + + @Override + public DataResult> getAllSorted(boolean sort) { + Sort sorted = Sort.by(checkSortDirectionType(sort), "dailyPrice"); + List result = this.carDao.findAll(sorted); + List response = result.stream() + .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Arabalar sayfalanarak listelendi."); + } + + public boolean checkIfCarExists(int carId) throws BusinessException { + if (this.carDao.existsByCarId(carId)) { + return true; + } else { + throw new BusinessException("Boyle bir araba bulunmamaktadir!"); + } + } + + public Sort.Direction checkSortDirectionType(boolean sort) { + if (sort) { + return Sort.Direction.ASC; + } else { + return Sort.Direction.DESC; + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java new file mode 100644 index 0000000..4f676d0 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -0,0 +1,87 @@ +package com.turkcell.rentacar.business.concretes; + +import com.turkcell.rentacar.business.abstracts.ColorService; +import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.ColorDao; +import com.turkcell.rentacar.entities.concretes.Color; +import com.turkcell.rentacar.exceptions.BusinessException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ColorManager implements ColorService { + + private ColorDao colorDao; + private ModelMapperService modelMapperService; + + @Autowired + public ColorManager(ColorDao colorDao, ModelMapperService modelMapperService) { + this.colorDao = colorDao; + this.modelMapperService = modelMapperService; + } + + @Override + public DataResult> getAll() { + List result = this.colorDao.findAll(); + List response = result.stream() + .map(color -> this.modelMapperService.forDto().map(color, ColorListDto.class)) + .collect(Collectors.toList()); + return new SuccessDataResult>(response, "Renkler Listelendi."); + } + + @Override + public Result add(CreateColorRequest createColorRequest) throws BusinessException { + Color color = this.modelMapperService.forRequest().map(createColorRequest, Color.class); + if (checkIfColorNameExists(color.getColorName())) { + this.colorDao.save(color); + return new SuccessResult("Renk eklendi."); + } + return new ErrorResult("Renk eklenemedi!"); + } + + @Override + public DataResult getById(int id) { + Color result = this.colorDao.getById(id); + ColorListDto response = this.modelMapperService.forDto().map(result, ColorListDto.class); + return new SuccessDataResult(response, "Renk goruntulendi."); + } + + @Override + public Result update(UpdateColorRequest updateColorRequest) throws BusinessException { + Color color = this.modelMapperService.forRequest().map(updateColorRequest, Color.class); + if (checkIfColorNameExists(color.getColorName())) { + this.colorDao.save(color); + return new SuccessResult("Renk guncellendi."); + } + return new ErrorResult("Renk guncellenemedi!"); + } + + @Override + public Result delete(DeleteColorRequest deleteColorRequest) { + Color color = this.modelMapperService.forRequest().map(deleteColorRequest, Color.class); + this.colorDao.deleteById(color.getColorId()); + return new SuccessResult("Renk silindi."); + } + + public boolean checkIfColorNameExists(String colorName) throws BusinessException { + if (!this.colorDao.existsColorByColorName(colorName)) { + return true; + } else { + throw new BusinessException("Bu renk zaten kayitli!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/BrandListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/BrandListDto.java new file mode 100644 index 0000000..484b7c7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/BrandListDto.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.dtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BrandListDto { + + private int id; + private String name; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/CarListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/CarListDto.java new file mode 100644 index 0000000..780504b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/CarListDto.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.dtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CarListDto { + + private double dailyPrice; + private String modelYear; + private String description; + + private String brandName; + private String colorName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/ColorListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/ColorListDto.java new file mode 100644 index 0000000..8025fa5 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/ColorListDto.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.dtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ColorListDto { + + private int id; + private String name; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java new file mode 100644 index 0000000..98717a9 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateBrandRequest { + + + private String brandName; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java new file mode 100644 index 0000000..73cf3a3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateCarRequest { + + private double dailyPrice; + private String modelYear; + private String description; + + private int brandId; + private int colorId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java new file mode 100644 index 0000000..aa7ccae --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateColorRequest { + + private String colorName; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java new file mode 100644 index 0000000..8e890f3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteBrandRequest { + private int brandId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java new file mode 100644 index 0000000..b552fa0 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteCarRequest { + + private int carId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java new file mode 100644 index 0000000..786517e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteColorRequest { + private int colorId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java new file mode 100644 index 0000000..cc449b1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateBrandRequest { + + private int brandId; + private String brandName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java new file mode 100644 index 0000000..e5e0e76 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateBrandToCarRequest { + + private int carId; + private int brandId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java new file mode 100644 index 0000000..36d654f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java @@ -0,0 +1,16 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCarRequest { + + private int carId; + private double dailyPrice; + private String modelYear; + private String description; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java new file mode 100644 index 0000000..7f27130 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateColorRequest { + private int colorId; + private String colorName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java new file mode 100644 index 0000000..1a55e82 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateColorToCarRequest { + + private int carId; + private int colorId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperManager.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperManager.java new file mode 100644 index 0000000..0586e63 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperManager.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.core.utilities.mapping; + +import org.modelmapper.ModelMapper; +import org.modelmapper.convention.MatchingStrategies; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +@Service +public class ModelMapperManager implements ModelMapperService{ + + private ModelMapper modelMapper; + + @Autowired + public ModelMapperManager(ModelMapper modelMapper) { + super(); + this.modelMapper = modelMapper; + } + + @Override + public ModelMapper forDto() { + this.modelMapper.getConfiguration().setAmbiguityIgnored(true).setMatchingStrategy(MatchingStrategies.LOOSE); + return this.modelMapper; + } + + @Override + public ModelMapper forRequest() { + this.modelMapper.getConfiguration().setAmbiguityIgnored(true).setMatchingStrategy(MatchingStrategies.STANDARD); + return this.modelMapper; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperService.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperService.java new file mode 100644 index 0000000..8a26651 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/mapping/ModelMapperService.java @@ -0,0 +1,10 @@ +package com.turkcell.rentacar.core.utilities.mapping; + +import org.modelmapper.ModelMapper; + +public interface ModelMapperService { + + ModelMapper forDto(); + ModelMapper forRequest(); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/DataResult.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/DataResult.java new file mode 100644 index 0000000..2195bd6 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/DataResult.java @@ -0,0 +1,21 @@ +package com.turkcell.rentacar.core.utilities.results; + +public class DataResult extends Result { + + private T data; + + public DataResult(T data, boolean success) { + super(success); + this.data = data; + } + + public DataResult(T data, boolean success, String message) { + super(success, message); + this.data = data; + } + + public T getData() { + return this.data; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorDataResult.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorDataResult.java new file mode 100644 index 0000000..d6cad67 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorDataResult.java @@ -0,0 +1,16 @@ +package com.turkcell.rentacar.core.utilities.results; + +public class ErrorDataResult extends DataResult { + + public ErrorDataResult(T data) { + super(data, false); + } + + public ErrorDataResult(String message) { + super(null, false, message); + } + + public ErrorDataResult(T data, String message) { + super(data, false, message); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorResult.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorResult.java new file mode 100644 index 0000000..7b4aef7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/ErrorResult.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.core.utilities.results; + +public class ErrorResult extends Result { + + public ErrorResult() { + super(false); + } + + public ErrorResult(String message) { + super(false, message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/Result.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/Result.java new file mode 100644 index 0000000..979b988 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/Result.java @@ -0,0 +1,26 @@ +package com.turkcell.rentacar.core.utilities.results; + +public class Result { + + private boolean success; + private String message; + + public Result(boolean success) { + super(); + this.success = success; + } + + public Result(boolean success, String message) { + this(success); + this.message = message; + } + + public boolean isSuccess() { + return this.success; + } + + public String getMessage() { + return this.message; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessDataResult.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessDataResult.java new file mode 100644 index 0000000..e18d4f4 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessDataResult.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.core.utilities.results; + +public class SuccessDataResult extends DataResult { + + public SuccessDataResult(T data) { + super(data, true); + } + + public SuccessDataResult(String message) { + super(null, true, message); + } + + public SuccessDataResult(T data, String message) { + super(data, true, message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessResult.java b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessResult.java new file mode 100644 index 0000000..9ad58a5 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/utilities/results/SuccessResult.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.core.utilities.results; + +public class SuccessResult extends Result { + + public SuccessResult() { + super(true); + } + + public SuccessResult(String message) { + super(true, message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/BrandDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/BrandDao.java new file mode 100644 index 0000000..8cce1a8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/BrandDao.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import com.turkcell.rentacar.entities.concretes.Brand; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface BrandDao extends JpaRepository { + + Brand getByBrandName(String name); + Brand getBrandByBrandId(int id); + + boolean existsBrandByBrandName(String name); +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java new file mode 100644 index 0000000..a4195aa --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java @@ -0,0 +1,27 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.turkcell.rentacar.entities.concretes.Car; + +@Repository +public interface CarDao extends JpaRepository { + + boolean existsByCarId(int carId); + + List findByDailyPriceLessThanEqual(double dailyPrice); + + @Modifying + @Query("update Car set color.colorId=?2 where carId=?1") + int updateColorToCarByCarId(int carId, int colorId); + + @Modifying + @Query("update Car set brand.brandId=?2 where carId=?1") + int updateBrandToCarByCarId(int carId, int brandId); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java new file mode 100644 index 0000000..a470eb1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.entities.concretes.Color; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ColorDao extends JpaRepository { + boolean existsColorByColorName(String name); + + ColorListDto getColorByColorId(int id); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Brand.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Brand.java new file mode 100644 index 0000000..f4ab15c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Brand.java @@ -0,0 +1,35 @@ +package com.turkcell.rentacar.entities.concretes; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.List; + +import javax.persistence.*; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode +@Table(name = "brands") +public class Brand { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "brand_id", unique = true, nullable = false) + private int brandId; + + @Column(name = "brand_name") + private String brandName; + + @JsonIgnore + @OneToMany(mappedBy = "brand") + private List cars; + + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java new file mode 100644 index 0000000..54842a2 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java @@ -0,0 +1,49 @@ +package com.turkcell.rentacar.entities.concretes; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "cars") +public class Car { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "car_id") + private int carId; + + @Column(name = "daily_price") + private double dailyPrice; + + @Column(name = "model_year") + private String modelYear; + + @Column(name = "description") + private String description; + + + @ManyToOne(cascade=CascadeType.MERGE) + @JoinColumn(name = "brand_id") + private Brand brand; + + + @ManyToOne(cascade=CascadeType.MERGE) + @JoinColumn(name = "color_id") + private Color color; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Color.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Color.java new file mode 100644 index 0000000..ea19455 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Color.java @@ -0,0 +1,31 @@ +package com.turkcell.rentacar.entities.concretes; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +import javax.persistence.*; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "colors") +public class Color { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "color_id", insertable = true, updatable = true) + private int colorId; + + @Column(name = "color_name") + private String colorName; + + @JsonIgnore + @OneToMany(mappedBy = "color") + private List cars; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/BusinessException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/BusinessException.java new file mode 100644 index 0000000..1ea5fc0 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/BusinessException.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.exceptions; + +import org.springframework.stereotype.Service; + +@Service +public class BusinessException extends Exception{ + public BusinessException() { + + } + public BusinessException(String message) { + super(message); + } +} diff --git a/rentacar/src/main/resources/application.properties b/rentacar/src/main/resources/application.properties new file mode 100644 index 0000000..971a5df --- /dev/null +++ b/rentacar/src/main/resources/application.properties @@ -0,0 +1,8 @@ +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect +spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.show-sql=true +spring.datasource.url=jdbc:postgresql://localhost:5432/rentacar +spring.datasource.username=postgres +spring.datasource.password=123123 +spring.jpa.properties.javax.persistence.validation.mode = none +spring.mvc.pathmatch.matching-strategy = ant-path-matcher \ No newline at end of file diff --git a/rentacar/src/test/java/com/turkcell/rentacar/RentacarApplicationTests.java b/rentacar/src/test/java/com/turkcell/rentacar/RentacarApplicationTests.java new file mode 100644 index 0000000..436a168 --- /dev/null +++ b/rentacar/src/test/java/com/turkcell/rentacar/RentacarApplicationTests.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class RentacarApplicationTests { + + @Test + void contextLoads() { + } + +} From b87088f7385961c4ff487f1f86f5d00be1763342 Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Tue, 8 Mar 2022 00:39:31 +0300 Subject: [PATCH 2/7] Added Rent Class 07/03/2022 Added Rent Added CarMaintenance Added CarMaintenance-Rent relationship Added @Lazy annotation --- rentacar/pom.xml | 6 + .../rentacar/RentacarApplication.java | 32 +++++ .../api/controllers/BrandsController.java | 2 +- .../CarMaintenancesController.java | 69 +++++++++ .../api/controllers/CarsController.java | 2 +- .../api/controllers/ColorsController.java | 2 +- .../api/controllers/RentsController.java | 65 +++++++++ .../business/abstracts/BrandService.java | 2 +- .../abstracts/CarMaintenanceService.java | 30 ++++ .../business/abstracts/CarService.java | 2 +- .../business/abstracts/ColorService.java | 2 +- .../business/abstracts/RentService.java | 28 ++++ .../business/concretes/BrandManager.java | 2 +- .../concretes/CarMaintenanceManager.java | 135 ++++++++++++++++++ .../business/concretes/CarManager.java | 2 +- .../business/concretes/ColorManager.java | 25 ++-- .../business/concretes/RentManager.java | 113 +++++++++++++++ .../dtos/getDtos/CarMaintenanceGetDto.java | 20 +++ .../business/dtos/getDtos/RentGetDto.java | 20 +++ .../business/dtos/listDtos/BrandListDto.java | 15 ++ .../business/dtos/listDtos/CarListDto.java | 19 +++ .../dtos/listDtos/CarMaintenanceListDto.java | 18 +++ .../business/dtos/listDtos/ColorListDto.java | 15 ++ .../business/dtos/listDtos/RentListDto.java | 19 +++ .../CreateCarMaintenanceRequest.java | 28 ++++ .../createRequests/CreateRentRequest.java | 25 ++++ .../DeleteCarMaintenanceRequest.java | 19 +++ .../deleteRequests/DeleteRentRequest.java | 17 +++ .../UpdateCarMaintenanceRequest.java | 33 +++++ .../updateRequests/UpdateRentRequest.java | 33 +++++ .../abstracts/CarMaintenanceDao.java | 17 +++ .../dataAccess/abstracts/ColorDao.java | 2 +- .../dataAccess/abstracts/RentDao.java | 12 ++ .../rentacar/entities/concretes/Car.java | 19 ++- .../entities/concretes/CarMaintenance.java | 40 ++++++ .../rentacar/entities/concretes/Rent.java | 43 ++++++ 36 files changed, 902 insertions(+), 31 deletions(-) create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CarMaintenanceGetDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/BrandListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarMaintenanceListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/ColorListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarMaintenanceRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarMaintenanceRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarMaintenanceRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarMaintenance.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java diff --git a/rentacar/pom.xml b/rentacar/pom.xml index e599377..5acfc1d 100644 --- a/rentacar/pom.xml +++ b/rentacar/pom.xml @@ -68,6 +68,12 @@ modelmapper 2.3.9 + + + org.springframework.boot + spring-boot-starter-validation + + diff --git a/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java index 2233caa..202fd1a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java @@ -1,28 +1,60 @@ package com.turkcell.rentacar; +import java.util.HashMap; +import java.util.Map; + import org.modelmapper.ModelMapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpStatus; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import com.turkcell.rentacar.core.utilities.results.ErrorDataResult; import com.turkcell.rentacar.exceptions.BusinessException; import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 +@RestControllerAdvice public class RentacarApplication { public static void main(String[] args) { SpringApplication.run(RentacarApplication.class, args); } + @Bean public ModelMapper getModelMapper() { return new ModelMapper(); } + @Bean public BusinessException getBusinessException() { return new BusinessException(); } + @ExceptionHandler + @ResponseStatus(code = HttpStatus.BAD_REQUEST) + public ErrorDataResult handleValidationException( + MethodArgumentNotValidException argumentNotValidException) { + Map validationErrors = new HashMap(); + for (FieldError fieldError : argumentNotValidException.getBindingResult().getFieldErrors()) { + validationErrors.put(fieldError.getField(), fieldError.getDefaultMessage()); + } + ErrorDataResult errorResults = new ErrorDataResult<>(validationErrors, "Validate.Error"); + return errorResults; + } + + @ExceptionHandler + @ResponseStatus(code = HttpStatus.BAD_REQUEST) + public ErrorDataResult handleBusinessException(BusinessException businessException) { + ErrorDataResult errorResults = new ErrorDataResult<>(businessException.getMessage(), "Validate.Error"); + return errorResults; + } + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java index bd7c8f3..d840bc2 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java @@ -1,7 +1,7 @@ package com.turkcell.rentacar.api.controllers; import com.turkcell.rentacar.business.abstracts.BrandService; -import com.turkcell.rentacar.business.dtos.BrandListDto; +import com.turkcell.rentacar.business.dtos.listDtos.BrandListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java new file mode 100644 index 0000000..f4551df --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java @@ -0,0 +1,69 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.CarMaintenanceService; +import com.turkcell.rentacar.business.dtos.getDtos.CarMaintenanceGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.CarMaintenanceListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarMaintenanceRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarMaintenanceRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarMaintenanceRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/carMaintenances") +public class CarMaintenancesController { + + private CarMaintenanceService carMaintenanceService; + + @Autowired + public CarMaintenancesController(CarMaintenanceService carMaintenanceService) { + this.carMaintenanceService = carMaintenanceService; + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.carMaintenanceService.getAll(); + } + + @GetMapping("/getCarMaintenanceDetailsByCarMaintenanceId") + public DataResult getCarMaintenanceDetailsByCarMaintenanceId( + @RequestParam int carMaintenanceId) { + return this.carMaintenanceService.getCarMaintenanceDetailsByCarMaintenanceId(carMaintenanceId); + } + + @PostMapping("/add") + public Result add(@RequestBody CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException { + return this.carMaintenanceService.add(createCarMaintenanceRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody UpdateCarMaintenanceRequest updateCarMaintenanceRequest) + throws BusinessException { + return this.carMaintenanceService.update(updateCarMaintenanceRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) + throws BusinessException { + return this.carMaintenanceService.delete(deleteCarMaintenanceRequest); + } + + @GetMapping("/checkIfCarIsAlreadyInMaintenance") + public Result checkIfCarIsAlreadyInMaintenance(@RequestParam int carId) throws BusinessException { + return this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java index e61bb27..e7478fe 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import com.turkcell.rentacar.business.abstracts.CarService; -import com.turkcell.rentacar.business.dtos.CarListDto; +import com.turkcell.rentacar.business.dtos.listDtos.CarListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java index b560305..33330c2 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java @@ -1,7 +1,7 @@ package com.turkcell.rentacar.api.controllers; import com.turkcell.rentacar.business.abstracts.ColorService; -import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.dtos.listDtos.ColorListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java new file mode 100644 index 0000000..43ca8d6 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java @@ -0,0 +1,65 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.dtos.getDtos.RentGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/rents") +public class RentsController { + + private RentService rentService; + + @Autowired + public RentsController(RentService rentService) { + this.rentService = rentService; + } + + @PostMapping("/add") + public Result add(@RequestBody CreateRentRequest createRentRequest) throws BusinessException { + return this.rentService.add(createRentRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody UpdateRentRequest updateRentRequest) throws BusinessException { + return this.rentService.update(updateRentRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody DeleteRentRequest deleteRentRequest) throws BusinessException { + return this.rentService.delete(deleteRentRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.rentService.getAll(); + } + + @GetMapping("/getRentDetailsByRentId") + public DataResult getRentDetailsByRentId(int rentId) { + return this.rentService.getRentDetailsByRentId(rentId); + } + + @GetMapping("/checkIfCarAlreadyInRent") + public Result checkIfCarAlreadyInRent(int carId) throws BusinessException { + return this.rentService.checkIfCarAlreadyInRent(carId); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java index 28cc0e8..a45b2d4 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java @@ -1,6 +1,6 @@ package com.turkcell.rentacar.business.abstracts; -import com.turkcell.rentacar.business.dtos.BrandListDto; +import com.turkcell.rentacar.business.dtos.listDtos.BrandListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java new file mode 100644 index 0000000..f9fc41b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.getDtos.CarMaintenanceGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.CarMaintenanceListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarMaintenanceRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarMaintenanceRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarMaintenanceRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface CarMaintenanceService { + + DataResult> getAll(); + + DataResult> getByCarId(int carId); + + DataResult getCarMaintenanceDetailsByCarMaintenanceId(int carMaintenanceId); + + Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException; + + Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) throws BusinessException; + + Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) throws BusinessException; + + Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessException; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java index f8dc068..0acaf40 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java @@ -2,7 +2,7 @@ import java.util.List; -import com.turkcell.rentacar.business.dtos.CarListDto; +import com.turkcell.rentacar.business.dtos.listDtos.CarListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java index 2c74934..df57a8d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java @@ -1,6 +1,6 @@ package com.turkcell.rentacar.business.abstracts; -import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.dtos.listDtos.ColorListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java new file mode 100644 index 0000000..3b44d2a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.getDtos.RentGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface RentService { + + Result add(CreateRentRequest createRentRequest) throws BusinessException; + + Result update(UpdateRentRequest updateRentRequest) throws BusinessException; + + Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException; + + DataResult> getAll(); + + DataResult getRentDetailsByRentId(int rentId); + + Result checkIfCarAlreadyInRent(int carId) throws BusinessException; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java index 52ef8df..275c4f0 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -1,7 +1,7 @@ package com.turkcell.rentacar.business.concretes; import com.turkcell.rentacar.business.abstracts.BrandService; -import com.turkcell.rentacar.business.dtos.BrandListDto; +import com.turkcell.rentacar.business.dtos.listDtos.BrandListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java new file mode 100644 index 0000000..1a12183 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java @@ -0,0 +1,135 @@ +package com.turkcell.rentacar.business.concretes; + +import java.time.LocalDate; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import com.turkcell.rentacar.business.abstracts.CarMaintenanceService; +import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.dtos.getDtos.CarMaintenanceGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.CarMaintenanceListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarMaintenanceRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarMaintenanceRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarMaintenanceRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.CarMaintenanceDao; +import com.turkcell.rentacar.entities.concretes.CarMaintenance; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class CarMaintenanceManager implements CarMaintenanceService { + + private CarMaintenanceDao carMaintenanceDao; + private ModelMapperService modelMapperService; + private RentService rentService; + + @Lazy + @Autowired + public CarMaintenanceManager(CarMaintenanceDao carMaintenanceDao, ModelMapperService modelMapperService, + RentService rentService) { + this.carMaintenanceDao = carMaintenanceDao; + this.modelMapperService = modelMapperService; + this.rentService = rentService; + } + + @Override + public DataResult> getAll() { + List result = this.carMaintenanceDao.findAll(); + List response = result.stream().map( + carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) + .collect(Collectors.toList()); + return new SuccessDataResult>(response, "Bakim bilgileri listelendi."); + } + + @Override + public DataResult getCarMaintenanceDetailsByCarMaintenanceId(int carMaintenanceId) { + CarMaintenance result = this.carMaintenanceDao.getById(carMaintenanceId); + CarMaintenanceGetDto response = this.modelMapperService.forDto().map(result, CarMaintenanceGetDto.class); + return new SuccessDataResult(response, "Detayli bakim bilgileri listelendi."); + } + + @Override + public Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException { + checkIfReturnDateIsAfterNow(createCarMaintenanceRequest.getReturnDate()); + checkIfCarIsAlreadyInMaintenanceIsSuccess(createCarMaintenanceRequest.getCarId()); + checkIfCarIsAlreadyInRent(createCarMaintenanceRequest.getCarId()); + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(createCarMaintenanceRequest, + CarMaintenance.class); + this.carMaintenanceDao.save(carMaintenance); + return new SuccessResult("Bakim bilgisi eklendi."); + } + + @Override + public Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) throws BusinessException { + existByCarMaintenance(updateCarMaintenanceRequest.getCarMaintenanceId()); + checkIfReturnDateIsAfterNow(updateCarMaintenanceRequest.getReturnDate()); + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(updateCarMaintenanceRequest, + CarMaintenance.class); + this.carMaintenanceDao.save(carMaintenance); + return new SuccessResult("Bakim bilgisi guncellendi."); + } + + @Override + public Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) throws BusinessException { + existByCarMaintenance(deleteCarMaintenanceRequest.getCarMaintenanceId()); + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(deleteCarMaintenanceRequest, + CarMaintenance.class); + this.carMaintenanceDao.delete(carMaintenance); + return new SuccessResult("Bakim bilgisi silindi."); + } + + @Override + public DataResult> getByCarId(int carId) { + List result = this.carMaintenanceDao.getByCar_CarId(carId); + List response = result.stream().map( + carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) + .collect(Collectors.toList()); + return new SuccessDataResult>(response, "Araca ait bakim bilgileri listelendi."); + } + + @Override + public Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessException { + for (CarMaintenance carMaintenance : this.carMaintenanceDao.getByCar_CarId(carId)) { + if (carMaintenance.getReturnDate() != null) { + return new SuccessResult("Arac bakimda degil."); + } + } + return new ErrorResult("Arac bakimda!"); + } + + private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) throws BusinessException { + var result = this.carMaintenanceDao.getByCar_CarId(carId); + if (!result.isEmpty()) { + if (!checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { + throw new BusinessException("Arac bakimda!"); + } + } + } + + private void checkIfCarIsAlreadyInRent(int carId) throws BusinessException { + this.rentService.checkIfCarAlreadyInRent(carId); + } + + private void existByCarMaintenance(int carMaintenanceId) throws BusinessException { + if (!this.carMaintenanceDao.existsById(carMaintenanceId)) { + throw new BusinessException("Bakim bilgisi bulunamadi."); + } + } + + private void checkIfReturnDateIsAfterNow(LocalDate returnDate) throws BusinessException { + if (returnDate != null) { + if (returnDate.isAfter(LocalDate.now())) { + throw new BusinessException("Ileri bir tarih girilemez!"); + } + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java index 24926a7..733a9c4 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -10,7 +10,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CarService; -import com.turkcell.rentacar.business.dtos.CarListDto; +import com.turkcell.rentacar.business.dtos.listDtos.CarListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java index 4f676d0..54f1556 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -1,13 +1,12 @@ package com.turkcell.rentacar.business.concretes; import com.turkcell.rentacar.business.abstracts.ColorService; -import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.dtos.listDtos.ColorListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; -import com.turkcell.rentacar.core.utilities.results.ErrorResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; import com.turkcell.rentacar.core.utilities.results.SuccessResult; @@ -45,11 +44,9 @@ public DataResult> getAll() { @Override public Result add(CreateColorRequest createColorRequest) throws BusinessException { Color color = this.modelMapperService.forRequest().map(createColorRequest, Color.class); - if (checkIfColorNameExists(color.getColorName())) { - this.colorDao.save(color); - return new SuccessResult("Renk eklendi."); - } - return new ErrorResult("Renk eklenemedi!"); + checkIfColorNameExists(color.getColorName()); + this.colorDao.save(color); + return new SuccessResult("Renk eklendi."); } @Override @@ -62,11 +59,9 @@ public DataResult getById(int id) { @Override public Result update(UpdateColorRequest updateColorRequest) throws BusinessException { Color color = this.modelMapperService.forRequest().map(updateColorRequest, Color.class); - if (checkIfColorNameExists(color.getColorName())) { - this.colorDao.save(color); - return new SuccessResult("Renk guncellendi."); - } - return new ErrorResult("Renk guncellenemedi!"); + checkIfColorNameExists(color.getColorName()); + this.colorDao.save(color); + return new SuccessResult("Renk guncellendi."); } @Override @@ -76,10 +71,8 @@ public Result delete(DeleteColorRequest deleteColorRequest) { return new SuccessResult("Renk silindi."); } - public boolean checkIfColorNameExists(String colorName) throws BusinessException { - if (!this.colorDao.existsColorByColorName(colorName)) { - return true; - } else { + public void checkIfColorNameExists(String colorName) throws BusinessException { + if (this.colorDao.existsColorByColorName(colorName)) { throw new BusinessException("Bu renk zaten kayitli!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java new file mode 100644 index 0000000..b0105bc --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -0,0 +1,113 @@ +package com.turkcell.rentacar.business.concretes; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.CarMaintenanceService; +import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.dtos.getDtos.RentGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.RentDao; +import com.turkcell.rentacar.entities.concretes.Rent; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class RentManager implements RentService { + + private RentDao rentDao; + private ModelMapperService modelMapperService; + private CarMaintenanceService carMaintenanceService; + + @Lazy + @Autowired + public RentManager(RentDao rentDao, ModelMapperService modelMapperService, + CarMaintenanceService carMaintenanceService) { + this.rentDao = rentDao; + this.modelMapperService = modelMapperService; + this.carMaintenanceService = carMaintenanceService; + } + + @Override + public Result add(CreateRentRequest createRentRequest) throws BusinessException { + checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); + checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); + Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); + this.rentDao.save(rent); + return new SuccessResult("Kira bilgisi eklendi."); + } + + @Override + public Result update(UpdateRentRequest updateRentRequest) throws BusinessException { + Rent rent = this.modelMapperService.forRequest().map(updateRentRequest, Rent.class); + this.rentDao.save(rent); + return new SuccessResult("Kira bilgisi guncellendi."); + } + + @Override + public Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException { + Rent rent = this.modelMapperService.forRequest().map(deleteRentRequest, Rent.class); + this.rentDao.delete(rent); + return new SuccessResult("Kira bilgisi silindi."); + } + + @Override + public DataResult> getAll() { + List result = this.rentDao.findAll(); + List response = result.stream() + .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Kira bilgileri listelendi."); + } + + @Override + public DataResult getRentDetailsByRentId(int rentId) { + Rent result = this.rentDao.getById(rentId); + RentGetDto response = this.modelMapperService.forDto().map(result, RentGetDto.class); + return new SuccessDataResult(response, "Kira bilgileri listelendi."); + } + + @Override + public Result checkIfCarAlreadyInRent(int carId) throws BusinessException { + Rent rent = this.rentDao.getByCar_CarId(carId); + if (!rent.isRentStatus()) { + return new SuccessResult("Arac kirada degil!"); + } + return new ErrorResult("Arac kirada!"); + } + + private void checkIfCarAlreadyInRentIsSuccess(int carId) throws BusinessException { + if (this.rentDao.existsByCar_CarId(carId)) { + if (!checkIfCarAlreadyInRent(carId).isSuccess()) { + throw new BusinessException("Arac kirada!"); + } + } + } + + private void checkIfCarAlreadyInMaintenance(int carId) throws BusinessException { + if (checkIfCarExistInCarMaintenanceTable(carId) == false) { + if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { + throw new BusinessException("Araba bakimda oldugundan kiralanamaz."); + } + } + } + + private boolean checkIfCarExistInCarMaintenanceTable(int id) { + if (this.carMaintenanceService.getByCarId(id).getData().isEmpty()) { + return true; + } + return false; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CarMaintenanceGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CarMaintenanceGetDto.java new file mode 100644 index 0000000..5f27cf8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CarMaintenanceGetDto.java @@ -0,0 +1,20 @@ +package com.turkcell.rentacar.business.dtos.getDtos; + +import java.time.LocalDate; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CarMaintenanceGetDto { + + private String description; + private LocalDate returnDate; + private int brandName; + private double dailyPrice; + private int modelYear; + private String colorName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java new file mode 100644 index 0000000..a561c0d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java @@ -0,0 +1,20 @@ +package com.turkcell.rentacar.business.dtos.getDtos; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RentGetDto { + private LocalDate rentDate; + private LocalDate rentReturnDate; + private boolean rentStatus; + private String brandName; + private String modelYear; + private String colorName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/BrandListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/BrandListDto.java new file mode 100644 index 0000000..24723d3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/BrandListDto.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BrandListDto { + + private int id; + private String name; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarListDto.java new file mode 100644 index 0000000..03bf4d2 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarListDto.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CarListDto { + + private double dailyPrice; + private String modelYear; + private String description; + + private String brandName; + private String colorName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarMaintenanceListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarMaintenanceListDto.java new file mode 100644 index 0000000..9cba59e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarMaintenanceListDto.java @@ -0,0 +1,18 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import java.time.LocalDate; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CarMaintenanceListDto { + + private String description; + private LocalDate returnDate; + private String brandName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/ColorListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/ColorListDto.java new file mode 100644 index 0000000..c39a97e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/ColorListDto.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ColorListDto { + + private int id; + private String name; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentListDto.java new file mode 100644 index 0000000..fd70cf1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentListDto.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RentListDto { + + private LocalDate rentDate; + private LocalDate rentReturnDate; + private boolean rentStatus; + private String brandName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarMaintenanceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarMaintenanceRequest.java new file mode 100644 index 0000000..d581516 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarMaintenanceRequest.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateCarMaintenanceRequest { + + @NotNull + @Size(min = 2, max = 50) + private String description; + + private LocalDate returnDate; + + @NotNull + @Min(1) + private int carId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java new file mode 100644 index 0000000..db643ac --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java @@ -0,0 +1,25 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateRentRequest { + + @NotNull + private LocalDate rentDate; + @NotNull + private LocalDate rentReturnDate; + @NotNull + private boolean rentStatus; + @NotNull + private int carId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarMaintenanceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarMaintenanceRequest.java new file mode 100644 index 0000000..2414ef4 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarMaintenanceRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteCarMaintenanceRequest { + + @NotNull + @Min(1) + private int carMaintenanceId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java new file mode 100644 index 0000000..d1866f7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteRentRequest { + + @NotNull + private int rentId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarMaintenanceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarMaintenanceRequest.java new file mode 100644 index 0000000..aee59bf --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarMaintenanceRequest.java @@ -0,0 +1,33 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCarMaintenanceRequest { + + @NotNull + @Min(1) + private int carMaintenanceId; + + @NotNull + @Size(min = 2, max = 50) + private String description; + + private LocalDate returnDate; + + @NotNull + @Min(1) + private int carId; + + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java new file mode 100644 index 0000000..426e588 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java @@ -0,0 +1,33 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateRentRequest { + + @NotNull + @Min(1) + private int rentId; + + @NotNull + private LocalDate rentDate; + + @NotNull + private LocalDate rentReturnDate; + + @NotNull + private boolean rentStatus; + + @NotNull + @Min(1) + private int carId; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java new file mode 100644 index 0000000..acb7458 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.CarMaintenance; + +public interface CarMaintenanceDao extends JpaRepository { + + List getByCar_CarId(int carId); + + + + + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java index a470eb1..e7dbed2 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java @@ -1,6 +1,6 @@ package com.turkcell.rentacar.dataAccess.abstracts; -import com.turkcell.rentacar.business.dtos.ColorListDto; +import com.turkcell.rentacar.business.dtos.listDtos.ColorListDto; import com.turkcell.rentacar.entities.concretes.Color; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java new file mode 100644 index 0000000..3eb711b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java @@ -0,0 +1,12 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.Rent; + +public interface RentDao extends JpaRepository { + + boolean existsByCar_CarId(int carId); + Rent getByCar_CarId(int carId); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java index 54842a2..38034f8 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java @@ -1,5 +1,7 @@ package com.turkcell.rentacar.entities.concretes; +import java.util.List; + import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -8,6 +10,7 @@ import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; import javax.persistence.Table; import lombok.AllArgsConstructor; @@ -20,13 +23,12 @@ @NoArgsConstructor @Table(name = "cars") public class Car { - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "car_id") private int carId; - + @Column(name = "daily_price") private double dailyPrice; @@ -36,14 +38,19 @@ public class Car { @Column(name = "description") private String description; - - @ManyToOne(cascade=CascadeType.MERGE) + @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name = "brand_id") private Brand brand; - - @ManyToOne(cascade=CascadeType.MERGE) + @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name = "color_id") private Color color; + @OneToMany(mappedBy = "car") + private List carMaintenences; + + @OneToMany(mappedBy = "car") + private List rent; + + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarMaintenance.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarMaintenance.java new file mode 100644 index 0000000..d409d89 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarMaintenance.java @@ -0,0 +1,40 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.time.LocalDate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "car_maintenances") +public class CarMaintenance { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "car_maintenance_id") + private int carMaintenanceId; + + @Column(name = "description") + private String description; + + @Column(name = "return_date") + private LocalDate returnDate; + + @ManyToOne + @JoinColumn(name = "car_id") + private Car car; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java new file mode 100644 index 0000000..97441bf --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -0,0 +1,43 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.time.LocalDate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "rents") +public class Rent { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "rent_id") + private int rentId; + + @Column(name = "rent_date") + private LocalDate rentDate; + + @Column(name = "rent_return_date") + private LocalDate rentReturnDate; + + @Column(name = "rent_status") + private boolean rentStatus; + + @ManyToOne + @JoinColumn(name = "car_id") + private Car car; + +} From 488739cec07b8472fcb42f54d122cadcaae56732 Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Fri, 11 Mar 2022 16:19:53 +0300 Subject: [PATCH 3/7] Added AdditionalProducts 11/03/2022 Added AdditionalProduct class Added OrderedAdditionalProduct class Added City class Added returnCity, rentalCity and additionalServicePrice columns in Rent class --- rentacar/pom.xml | 21 ++--- .../AdditionalProductsController.java | 56 +++++++++++++ .../api/controllers/BrandsController.java | 2 +- .../api/controllers/CarsController.java | 2 +- .../api/controllers/ColorsController.java | 2 +- .../OrderedAdditionalProductsController.java | 56 +++++++++++++ .../abstracts/AdditionalProductService.java | 23 ++++++ .../business/abstracts/BrandService.java | 2 +- .../business/abstracts/CarService.java | 2 +- .../business/abstracts/ColorService.java | 2 +- .../OrderedAdditionalProductService.java | 23 ++++++ .../business/abstracts/RentService.java | 2 + .../concretes/AdditionalProductManager.java | 82 +++++++++++++++++++ .../business/concretes/BrandManager.java | 38 ++++----- .../concretes/CarMaintenanceManager.java | 16 ++-- .../business/concretes/CarManager.java | 43 ++++------ .../business/concretes/ColorManager.java | 16 +++- .../OrderedAdditionalProductManager.java | 82 +++++++++++++++++++ .../business/concretes/RentManager.java | 45 ++++++++-- .../dtos/getDtos/AdditionalProductGetDto.java | 15 ++++ .../OrderedAdditionalProductGetDto.java | 20 +++++ .../business/dtos/getDtos/RentCityGetDto.java | 20 +++++ .../listDtos/AdditionalProductListDto.java | 17 ++++ .../OrderedAdditionalProductListDto.java | 16 ++++ .../dtos/listDtos/RentCityListDto.java | 20 +++++ .../CreateAdditionalProductRequest.java | 24 ++++++ .../createRequests/CreateBrandRequest.java | 6 +- .../createRequests/CreateCarRequest.java | 21 ++++- .../createRequests/CreateColorRequest.java | 5 ++ ...CreateOrderedAdditionalProductRequest.java | 27 ++++++ .../createRequests/CreateRentRequest.java | 14 +++- .../DeleteAdditionalProductRequest.java | 19 +++++ .../deleteRequests/DeleteBrandRequest.java | 6 ++ .../deleteRequests/DeleteCarRequest.java | 5 ++ .../deleteRequests/DeleteColorRequest.java | 6 ++ ...DeleteOrderedAdditionalProductRequest.java | 19 +++++ .../deleteRequests/DeleteRentRequest.java | 2 + .../UpdateAdditionalProductRequest.java | 28 +++++++ .../updateRequests/UpdateBrandRequest.java | 11 ++- .../UpdateBrandToCarRequest.java | 8 ++ .../updateRequests/UpdateCarRequest.java | 17 +++- .../updateRequests/UpdateColorRequest.java | 10 +++ .../UpdateColorToCarRequest.java | 10 ++- ...UpdateOrderedAdditionalProductRequest.java | 31 +++++++ .../updateRequests/UpdateRentRequest.java | 9 +- .../abstracts/AdditionalProductDao.java | 12 +++ .../abstracts/CarMaintenanceDao.java | 2 + .../dataAccess/abstracts/CityDao.java | 9 ++ .../OrderedAdditionalProductDao.java | 9 ++ .../dataAccess/abstracts/RentDao.java | 5 +- .../entities/concretes/AdditionalProduct.java | 38 +++++++++ .../rentacar/entities/concretes/City.java | 37 +++++++++ .../concretes/OrderedAdditionalProduct.java | 40 +++++++++ .../rentacar/entities/concretes/Rent.java | 21 ++++- .../src/main/resources/application.properties | 3 +- 55 files changed, 984 insertions(+), 93 deletions(-) create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/AdditionalProductGetDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/OrderedAdditionalProductGetDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentCityGetDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/AdditionalProductListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentCityListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateAdditionalProductRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteAdditionalProductRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteOrderedAdditionalProductRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateAdditionalProductRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/AdditionalProductDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CityDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/AdditionalProduct.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/City.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java diff --git a/rentacar/pom.xml b/rentacar/pom.xml index 5acfc1d..26bc9b2 100644 --- a/rentacar/pom.xml +++ b/rentacar/pom.xml @@ -1,12 +1,13 @@ - 4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.3 - + com.turkcell rentacar @@ -62,18 +63,18 @@ springdoc-openapi-ui 1.6.6 - + + + org.modelmapper + modelmapper + 2.3.9 + + - org.modelmapper - modelmapper - 2.3.9 - - - org.springframework.boot spring-boot-starter-validation - + diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java new file mode 100644 index 0000000..fdfcbf0 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java @@ -0,0 +1,56 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.AdditionalProductService; +import com.turkcell.rentacar.business.dtos.listDtos.AdditionalProductListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateAdditionalProductRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/additionalProducts") +public class AdditionalProductsController { + + private AdditionalProductService additionalProductService; + + @Autowired + public AdditionalProductsController(AdditionalProductService additionalProductService) { + this.additionalProductService = additionalProductService; + } + + @PostMapping("/add") + public Result add(@RequestBody CreateAdditionalProductRequest createAdditionalProductRequest) + throws BusinessException { + return this.additionalProductService.add(createAdditionalProductRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody UpdateAdditionalProductRequest updateAdditionalProductRequest) + throws BusinessException { + return this.additionalProductService.update(updateAdditionalProductRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody DeleteAdditionalProductRequest deleteAdditionalProductRequest) + throws BusinessException { + return this.additionalProductService.delete(deleteAdditionalProductRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.additionalProductService.getAll(); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java index d840bc2..e071a52 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java @@ -44,7 +44,7 @@ public Result update(@RequestBody UpdateBrandRequest updateBrandRequest) throws } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteBrandRequest deleteBrandRequest) { + public Result delete(@RequestBody DeleteBrandRequest deleteBrandRequest) throws BusinessException { return this.brandService.delete(deleteBrandRequest); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java index e7478fe..a4b110b 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java @@ -50,7 +50,7 @@ public Result add(@RequestBody CreateCarRequest createCarRequest) throws Busines } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteCarRequest deleteCarRequest) { + public Result delete(@RequestBody DeleteCarRequest deleteCarRequest) throws BusinessException{ return this.carService.delete(deleteCarRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java index 33330c2..2776521 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java @@ -44,7 +44,7 @@ public Result update(@RequestBody UpdateColorRequest updateColorRequest) throws } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteColorRequest deleteColorRequest) { + public Result delete(@RequestBody DeleteColorRequest deleteColorRequest) throws BusinessException{ return this.colorService.delete(deleteColorRequest); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java new file mode 100644 index 0000000..480989c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java @@ -0,0 +1,56 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; +import com.turkcell.rentacar.business.dtos.listDtos.OrderedAdditionalProductListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateOrderedAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteOrderedAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateOrderedAdditionalProductRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/orderedAdditionalProducts") +public class OrderedAdditionalProductsController { + + OrderedAdditionalProductService orderedAdditionalProductService; + + @Autowired + public OrderedAdditionalProductsController(OrderedAdditionalProductService orderedAdditionalProductService) { + this.orderedAdditionalProductService = orderedAdditionalProductService; + } + + @PostMapping("/add") + public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) + throws BusinessException { + return this.orderedAdditionalProductService.add(createOrderedAdditionalProductRequest); + } + + @PutMapping("/update") + public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) + throws BusinessException { + return this.orderedAdditionalProductService.update(updateOrderedAdditionalProductRequest); + } + + @DeleteMapping("/delete") + public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) + throws BusinessException { + return this.orderedAdditionalProductService.delete(deleteOrderedAdditionalProductRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.orderedAdditionalProductService.getAll(); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java new file mode 100644 index 0000000..cc087af --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.listDtos.AdditionalProductListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateAdditionalProductRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface AdditionalProductService { + + Result add(CreateAdditionalProductRequest createAdditionalProductRequest) throws BusinessException; + + Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) throws BusinessException; + + Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) throws BusinessException; + + DataResult> getAll(); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java index a45b2d4..b813a80 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java @@ -19,6 +19,6 @@ public interface BrandService { Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException; - Result delete(DeleteBrandRequest deleteBrandRequest); + Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessException; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java index 0acaf40..97132e4 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java @@ -26,7 +26,7 @@ public interface CarService { Result update(UpdateCarRequest updateCarRequest) throws BusinessException; - Result delete(DeleteCarRequest deleteCarRequest); + Result delete(DeleteCarRequest deleteCarRequest) throws BusinessException; Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java index df57a8d..d2c0d8c 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java @@ -19,5 +19,5 @@ public interface ColorService { Result update(UpdateColorRequest updateColorRequest) throws BusinessException; - Result delete(DeleteColorRequest deleteColorRequest); + Result delete(DeleteColorRequest deleteColorRequest) throws BusinessException; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java new file mode 100644 index 0000000..bb659db --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.listDtos.OrderedAdditionalProductListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateOrderedAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteOrderedAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateOrderedAdditionalProductRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface OrderedAdditionalProductService { + + Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) throws BusinessException; + + Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) throws BusinessException; + + Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) throws BusinessException; + + DataResult> getAll(); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java index 3b44d2a..f9ab496 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java @@ -20,6 +20,8 @@ public interface RentService { Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException; DataResult> getAll(); + + DataResult> getByCarId(int carId); DataResult getRentDetailsByRentId(int rentId); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java new file mode 100644 index 0000000..48e6e84 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java @@ -0,0 +1,82 @@ +package com.turkcell.rentacar.business.concretes; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.AdditionalProductService; +import com.turkcell.rentacar.business.dtos.listDtos.AdditionalProductListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateAdditionalProductRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.AdditionalProductDao; +import com.turkcell.rentacar.entities.concretes.AdditionalProduct; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class AdditionalProductManager implements AdditionalProductService { + + private AdditionalProductDao additionalProductDao; + private ModelMapperService modelMapperService; + + @Autowired + public AdditionalProductManager(AdditionalProductDao additionalProductDao, ModelMapperService modelMapperService) { + this.additionalProductDao = additionalProductDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateAdditionalProductRequest createAdditionalProductRequest) throws BusinessException { + checkIfAdditionalProducNameExists(createAdditionalProductRequest.getAdditionalProductName()); + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(createAdditionalProductRequest, + AdditionalProduct.class); + this.additionalProductDao.save(additionalProduct); + return new SuccessResult("Ek urun eklendi."); + } + + @Override + public Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) throws BusinessException { + checkIfAdditionalProductExists(updateAdditionalProductRequest.getAdditionalProductId()); + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(updateAdditionalProductRequest, + AdditionalProduct.class); + this.additionalProductDao.save(additionalProduct); + return new SuccessResult("Ek urun guncellendi."); + } + + @Override + public Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) throws BusinessException { + checkIfAdditionalProductExists(deleteAdditionalProductRequest.getAdditionalProductId()); + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(deleteAdditionalProductRequest, + AdditionalProduct.class); + this.additionalProductDao.delete(additionalProduct); + return new SuccessResult("Ek urun silindi."); + } + + @Override + public DataResult> getAll() { + List result = this.additionalProductDao.findAll(); + List response = result.stream().map(additionalProduct -> this.modelMapperService + .forDto().map(additionalProduct, AdditionalProductListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Ek urunler listelendi."); + } + + private void checkIfAdditionalProductExists(int additionalProductId) throws BusinessException { + if (!this.additionalProductDao.existsByAdditionalProductId(additionalProductId)) { + throw new BusinessException("Ek urun bulunamadi!"); + } + } + + private void checkIfAdditionalProducNameExists(String additionalProductName) throws BusinessException { + if (this.additionalProductDao.existsByAdditionalProductName(additionalProductName)) { + throw new BusinessException("Bu ek urun zaten kayitli!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java index 275c4f0..5fc052c 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -7,7 +7,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; -import com.turkcell.rentacar.core.utilities.results.ErrorResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; import com.turkcell.rentacar.core.utilities.results.SuccessResult; @@ -44,12 +43,10 @@ public DataResult> getAll() { @Override public Result add(CreateBrandRequest createBrandRequest) throws BusinessException { + checkIfBrandNameExists(createBrandRequest.getBrandName()); Brand brand = this.modelMapperService.forRequest().map(createBrandRequest, Brand.class); - if (checkIfBrandNameExists(brand.getBrandName())) { - this.brandDao.save(brand); - return new SuccessResult("Marka eklendi."); - } - return new ErrorResult("Marka eklenemedi!"); + this.brandDao.save(brand); + return new SuccessResult("Marka eklendi."); } @Override @@ -60,28 +57,31 @@ public DataResult getById(int id) { } @Override - public Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException{ + public Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException { + checkIfBrandExists(updateBrandRequest.getBrandId()); + checkIfBrandNameExists(updateBrandRequest.getBrandName()); Brand brand = this.modelMapperService.forRequest().map(updateBrandRequest, Brand.class); - if (checkIfBrandNameExists(brand.getBrandName())) { - this.brandDao.save(brand); - return new SuccessResult("Marka eklendi."); - } - return new ErrorResult("Marka eklenemedi!"); + this.brandDao.save(brand); + return new SuccessResult("Marka eklendi."); } - + @Override - public Result delete(DeleteBrandRequest deleteBrandRequest) { + public Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessException{ + checkIfBrandExists(deleteBrandRequest.getBrandId()); Brand brand = this.modelMapperService.forRequest().map(deleteBrandRequest, Brand.class); this.brandDao.deleteById(brand.getBrandId()); return new SuccessResult("Marka silindi."); } + + private void checkIfBrandExists(int brandId)throws BusinessException { + if(!this.brandDao.existsById(brandId)) { + throw new BusinessException("Marka bulunamadi!"); + } + } - public boolean checkIfBrandNameExists(String brandName) throws BusinessException { - if (!this.brandDao.existsBrandByBrandName(brandName)) { - return true; - } else { + private void checkIfBrandNameExists(String brandName) throws BusinessException { + if (this.brandDao.existsBrandByBrandName(brandName)) { throw new BusinessException("Bu marka zaten kayitli!"); } - } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java index 1a12183..d2612b0 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java @@ -31,10 +31,9 @@ public class CarMaintenanceManager implements CarMaintenanceService { private ModelMapperService modelMapperService; private RentService rentService; - @Lazy @Autowired public CarMaintenanceManager(CarMaintenanceDao carMaintenanceDao, ModelMapperService modelMapperService, - RentService rentService) { + @Lazy RentService rentService) { this.carMaintenanceDao = carMaintenanceDao; this.modelMapperService = modelMapperService; this.rentService = rentService; @@ -106,8 +105,7 @@ public Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessExcepti } private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) throws BusinessException { - var result = this.carMaintenanceDao.getByCar_CarId(carId); - if (!result.isEmpty()) { + if (this.carMaintenanceDao.existsByCar_CarId(carId)) { if (!checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { throw new BusinessException("Arac bakimda!"); } @@ -115,7 +113,15 @@ private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) throws Busines } private void checkIfCarIsAlreadyInRent(int carId) throws BusinessException { - this.rentService.checkIfCarAlreadyInRent(carId); + if (!checkIfCarExistInRentTable(carId)) { + if (!this.rentService.checkIfCarAlreadyInRent(carId).isSuccess()) { + throw new BusinessException("Arac kirada oldugu icin bakima gonderilemez!"); + } + } + } + + private boolean checkIfCarExistInRentTable(int carId) { + return this.rentService.getByCarId(carId).getData().isEmpty(); } private void existByCarMaintenance(int carMaintenanceId) throws BusinessException { diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java index 733a9c4..58d6390 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -18,7 +18,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; -import com.turkcell.rentacar.core.utilities.results.ErrorResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; import com.turkcell.rentacar.core.utilities.results.SuccessResult; @@ -34,7 +33,6 @@ public class CarManager implements CarService { @Autowired public CarManager(CarDao carDao, ModelMapperService modelMapperService) { - super(); this.carDao = carDao; this.modelMapperService = modelMapperService; } @@ -56,19 +54,18 @@ public Result add(CreateCarRequest createCarRequest) throws BusinessException { @Override public Result update(UpdateCarRequest updateCarRequest) throws BusinessException { + checkIfCarExists(updateCarRequest.getCarId()); Car car = this.carDao.getById(updateCarRequest.getCarId()); - if (checkIfCarExists(updateCarRequest.getCarId())) { - Car updatedCar = this.modelMapperService.forRequest().map(updateCarRequest, Car.class); - updatedCar.setBrand(car.getBrand()); - updatedCar.setColor(car.getColor()); - this.carDao.save(updatedCar); - return new SuccessResult("Araba guncellendi."); - } - return new ErrorResult("Araba guncellenemedi!"); + Car updatedCar = this.modelMapperService.forRequest().map(updateCarRequest, Car.class); + updatedCar.setBrand(car.getBrand()); + updatedCar.setColor(car.getColor()); + this.carDao.save(updatedCar); + return new SuccessResult("Araba guncellendi."); } @Override - public Result delete(DeleteCarRequest deleteCarRequest) { + public Result delete(DeleteCarRequest deleteCarRequest) throws BusinessException { + checkIfCarExists(deleteCarRequest.getCarId()); Car car = this.modelMapperService.forRequest().map(deleteCarRequest, Car.class); this.carDao.deleteById(car.getCarId()); return new SuccessResult("Araba silindi."); @@ -76,22 +73,16 @@ public Result delete(DeleteCarRequest deleteCarRequest) { @Override public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException { - if (checkIfCarExists(updateColorToCarRequest.getCarId())) { - this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), - updateColorToCarRequest.getColorId()); - return new SuccessResult("Arabanin rengi guncellendi."); - } - return new ErrorResult("Arabanin rengi guncellenemedi!"); + checkIfCarExists(updateColorToCarRequest.getCarId()); + this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), updateColorToCarRequest.getColorId()); + return new SuccessResult("Arabanin rengi guncellendi."); } @Override public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException { - if (checkIfCarExists(updateBrandToCarRequest.getCarId())) { - this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), - updateBrandToCarRequest.getBrandId()); - return new SuccessResult("Arabanin markasi guncellendi."); - } - return new ErrorResult("Arabanin markasi guncellenemedi!"); + checkIfCarExists(updateBrandToCarRequest.getCarId()); + this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), updateBrandToCarRequest.getBrandId()); + return new SuccessResult("Arabanin markasi guncellendi."); } @Override @@ -127,10 +118,8 @@ public DataResult> getAllSorted(boolean sort) { return new SuccessDataResult>(response, "Arabalar sayfalanarak listelendi."); } - public boolean checkIfCarExists(int carId) throws BusinessException { - if (this.carDao.existsByCarId(carId)) { - return true; - } else { + private void checkIfCarExists(int carId) throws BusinessException { + if (!this.carDao.existsByCarId(carId)) { throw new BusinessException("Boyle bir araba bulunmamaktadir!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java index 54f1556..d7f7785 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -43,8 +43,8 @@ public DataResult> getAll() { @Override public Result add(CreateColorRequest createColorRequest) throws BusinessException { + checkIfColorNameExists(createColorRequest.getColorName()); Color color = this.modelMapperService.forRequest().map(createColorRequest, Color.class); - checkIfColorNameExists(color.getColorName()); this.colorDao.save(color); return new SuccessResult("Renk eklendi."); } @@ -58,23 +58,31 @@ public DataResult getById(int id) { @Override public Result update(UpdateColorRequest updateColorRequest) throws BusinessException { + checkIfColorExists(updateColorRequest.getColorId()); + checkIfColorNameExists(updateColorRequest.getColorName()); Color color = this.modelMapperService.forRequest().map(updateColorRequest, Color.class); - checkIfColorNameExists(color.getColorName()); this.colorDao.save(color); return new SuccessResult("Renk guncellendi."); } @Override - public Result delete(DeleteColorRequest deleteColorRequest) { + public Result delete(DeleteColorRequest deleteColorRequest) throws BusinessException { + checkIfColorExists(deleteColorRequest.getColorId()); Color color = this.modelMapperService.forRequest().map(deleteColorRequest, Color.class); this.colorDao.deleteById(color.getColorId()); return new SuccessResult("Renk silindi."); } - public void checkIfColorNameExists(String colorName) throws BusinessException { + private void checkIfColorNameExists(String colorName) throws BusinessException { if (this.colorDao.existsColorByColorName(colorName)) { throw new BusinessException("Bu renk zaten kayitli!"); } } + private void checkIfColorExists(int colorId) throws BusinessException { + if (!this.colorDao.existsById(colorId)) { + throw new BusinessException("Renk bulunamadi!"); + } + } + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java new file mode 100644 index 0000000..a066513 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java @@ -0,0 +1,82 @@ +package com.turkcell.rentacar.business.concretes; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; +import com.turkcell.rentacar.business.dtos.listDtos.OrderedAdditionalProductListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateOrderedAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteOrderedAdditionalProductRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateOrderedAdditionalProductRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.OrderedAdditionalProductDao; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class OrderedAdditionalProductManager implements OrderedAdditionalProductService { + + private OrderedAdditionalProductDao orderedAdditionalProductDao; + private ModelMapperService modelMapperService; + + @Autowired + public OrderedAdditionalProductManager(OrderedAdditionalProductDao orderedAdditionalProductDao, + ModelMapperService modelMapperService) { + this.orderedAdditionalProductDao = orderedAdditionalProductDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) + throws BusinessException { + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() + .map(createOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + orderedAdditionalProduct.setOrderedAdditionalProductId(0); + this.orderedAdditionalProductDao.save(orderedAdditionalProduct); + return new SuccessResult("Ek urun bilgisi eklendi."); + } + + @Override + public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) + throws BusinessException { + checkIfOrderedAdditionalProductExists(updateOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() + .map(updateOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + this.orderedAdditionalProductDao.save(orderedAdditionalProduct); + return new SuccessResult("Ek urun bilgisi guncellendi."); + } + + @Override + public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) + throws BusinessException { + checkIfOrderedAdditionalProductExists(deleteOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() + .map(deleteOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + this.orderedAdditionalProductDao.delete(orderedAdditionalProduct); + return new SuccessResult("Ek urun bilgisi silindi."); + } + + @Override + public DataResult> getAll() { + List result = this.orderedAdditionalProductDao.findAll(); + List response = result.stream() + .map(orderedAdditionalProduct -> this.modelMapperService.forDto().map(orderedAdditionalProduct, + OrderedAdditionalProductListDto.class)) + .collect(Collectors.toList()); + return new SuccessDataResult>(response, "Ek urun bilgileri listelendi."); + } + + private void checkIfOrderedAdditionalProductExists(int orderedAdditionalProductId) throws BusinessException { + if (!this.orderedAdditionalProductDao.existsById(orderedAdditionalProductId)) { + throw new BusinessException("Ek urun bilgisi bulunamadi!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java index b0105bc..920ae93 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -1,5 +1,6 @@ package com.turkcell.rentacar.business.concretes; +import java.time.LocalDate; import java.util.List; import java.util.stream.Collectors; @@ -31,10 +32,9 @@ public class RentManager implements RentService { private ModelMapperService modelMapperService; private CarMaintenanceService carMaintenanceService; - @Lazy @Autowired public RentManager(RentDao rentDao, ModelMapperService modelMapperService, - CarMaintenanceService carMaintenanceService) { + @Lazy CarMaintenanceService carMaintenanceService) { this.rentDao = rentDao; this.modelMapperService = modelMapperService; this.carMaintenanceService = carMaintenanceService; @@ -45,6 +45,8 @@ public Result add(CreateRentRequest createRentRequest) throws BusinessException checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); + checkIfReturnCityIsDifferentForRentalCity(rent); + checkIfRentReturnDateIsAfterNow(rent); this.rentDao.save(rent); return new SuccessResult("Kira bilgisi eklendi."); } @@ -52,6 +54,8 @@ public Result add(CreateRentRequest createRentRequest) throws BusinessException @Override public Result update(UpdateRentRequest updateRentRequest) throws BusinessException { Rent rent = this.modelMapperService.forRequest().map(updateRentRequest, Rent.class); + checkIfRentReturnDateIsAfterNow(rent); + checkIfReturnCityIsDifferentForRentalCity(rent); this.rentDao.save(rent); return new SuccessResult("Kira bilgisi guncellendi."); } @@ -78,11 +82,20 @@ public DataResult getRentDetailsByRentId(int rentId) { return new SuccessDataResult(response, "Kira bilgileri listelendi."); } + @Override + public DataResult> getByCarId(int carId) { + List result = this.rentDao.getByCar_CarId(carId); + List response = result.stream() + .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); + return new SuccessDataResult>(response, "Araca ait kira bilgileri listelendi."); + } + @Override public Result checkIfCarAlreadyInRent(int carId) throws BusinessException { - Rent rent = this.rentDao.getByCar_CarId(carId); - if (!rent.isRentStatus()) { - return new SuccessResult("Arac kirada degil!"); + for (Rent rent : this.rentDao.getByCar_CarId(carId)) { + if (!rent.isRentStatus()) { + return new SuccessResult("Arac kirada degil!"); + } } return new ErrorResult("Arac kirada!"); } @@ -96,7 +109,7 @@ private void checkIfCarAlreadyInRentIsSuccess(int carId) throws BusinessExceptio } private void checkIfCarAlreadyInMaintenance(int carId) throws BusinessException { - if (checkIfCarExistInCarMaintenanceTable(carId) == false) { + if (!checkIfCarExistInCarMaintenanceTable(carId)) { if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { throw new BusinessException("Araba bakimda oldugundan kiralanamaz."); } @@ -104,10 +117,24 @@ private void checkIfCarAlreadyInMaintenance(int carId) throws BusinessException } private boolean checkIfCarExistInCarMaintenanceTable(int id) { - if (this.carMaintenanceService.getByCarId(id).getData().isEmpty()) { - return true; + return this.carMaintenanceService.getByCarId(id).getData().isEmpty(); + } + + private void checkIfReturnCityIsDifferentForRentalCity(Rent rent) { + double additionalPrice = 750; + if (!rent.getRentalCity().equals(rent.getReturnCity())) { + rent.setAdditionalServicePrice(additionalPrice); + } else { + rent.setAdditionalServicePrice(0); + } + } + + private void checkIfRentReturnDateIsAfterNow(Rent rent) { + if (rent.getRentReturnDate() != null) { + if (!rent.getRentReturnDate().isAfter(LocalDate.now())) { + rent.setRentStatus(false); + } } - return false; } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/AdditionalProductGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/AdditionalProductGetDto.java new file mode 100644 index 0000000..cd28e1f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/AdditionalProductGetDto.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.dtos.getDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AdditionalProductGetDto { + + private String additionalProductName; + + private double additionalProductUnitPrice; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/OrderedAdditionalProductGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/OrderedAdditionalProductGetDto.java new file mode 100644 index 0000000..c388e3b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/OrderedAdditionalProductGetDto.java @@ -0,0 +1,20 @@ +package com.turkcell.rentacar.business.dtos.getDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OrderedAdditionalProductGetDto { + + private int orderedAdditionalProductAmount; + + private String brandName; + + private String additionalProductName; + + private double additionalProductUnitPrice; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentCityGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentCityGetDto.java new file mode 100644 index 0000000..dcabd58 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentCityGetDto.java @@ -0,0 +1,20 @@ +package com.turkcell.rentacar.business.dtos.getDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RentCityGetDto { + + private String brandName; + + private double additionalServicePrice; + + private String rentalCityName; + + private String returnCityname; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/AdditionalProductListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/AdditionalProductListDto.java new file mode 100644 index 0000000..ffbf2cd --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/AdditionalProductListDto.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AdditionalProductListDto { + + private String additionalProductName; + + private double additionalProductUnitPrice; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java new file mode 100644 index 0000000..eec41e8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java @@ -0,0 +1,16 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OrderedAdditionalProductListDto { + + private String brandName; + + private String additionalProductName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentCityListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentCityListDto.java new file mode 100644 index 0000000..11b5098 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/RentCityListDto.java @@ -0,0 +1,20 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RentCityListDto { + + private String brandName; + + private double additionalServicePrice; + + private String rentalCityName; + + private String returnCityname; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateAdditionalProductRequest.java new file mode 100644 index 0000000..6a3fc8b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateAdditionalProductRequest.java @@ -0,0 +1,24 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateAdditionalProductRequest { + + @NotNull + @Size(min = 2) + private String additionalProductName; + + @NotNull + @Min(0) + private double additionalProductUnitPrice; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java index 98717a9..2f3b5de 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.createRequests; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -9,6 +12,7 @@ @NoArgsConstructor public class CreateBrandRequest { - + @NotNull + @Size(min = 2) private String brandName; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java index 73cf3a3..4ffdf85 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java @@ -1,5 +1,9 @@ package com.turkcell.rentacar.business.requests.createRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,12 +12,25 @@ @AllArgsConstructor @NoArgsConstructor public class CreateCarRequest { - + + @NotNull + @Min(0) private double dailyPrice; + + @NotNull + @Size(min = 2) private String modelYear; + + @NotNull + @Size(min = 2, max = 50) private String description; - + + @NotNull + @Min(1) private int brandId; + + @NotNull + @Min(1) private int colorId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java index aa7ccae..db1ad08 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.createRequests; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -9,5 +12,7 @@ @NoArgsConstructor public class CreateColorRequest { + @NotNull + @Size(min = 2) private String colorName; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java new file mode 100644 index 0000000..af93afc --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java @@ -0,0 +1,27 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateOrderedAdditionalProductRequest { + + @NotNull + @Min(1) + private int orderedAdditionalProductAmount; + + @NotNull + @Min(1) + private int rentId; + + @NotNull + @Min(1) + private int additionalProductId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java index db643ac..0c30678 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java @@ -2,6 +2,7 @@ import java.time.LocalDate; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import lombok.AllArgsConstructor; @@ -15,11 +16,20 @@ public class CreateRentRequest { @NotNull private LocalDate rentDate; + @NotNull private LocalDate rentReturnDate; + @NotNull - private boolean rentStatus; - @NotNull + @Min(1) private int carId; + @NotNull + @Min(1) + private int rentalCityId; + + @NotNull + @Min(1) + private int returnCityId; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteAdditionalProductRequest.java new file mode 100644 index 0000000..ceda28c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteAdditionalProductRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteAdditionalProductRequest { + + @NotNull + @Min(1) + private int additionalProductId; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java index 8e890f3..d2e5eea 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.deleteRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,6 +11,9 @@ @AllArgsConstructor @NoArgsConstructor public class DeleteBrandRequest { + + @NotNull + @Min(1) private int brandId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java index b552fa0..971c441 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.deleteRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -9,6 +12,8 @@ @NoArgsConstructor public class DeleteCarRequest { + @NotNull + @Min(1) private int carId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java index 786517e..1e6d9ef 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.deleteRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,6 +11,9 @@ @AllArgsConstructor @NoArgsConstructor public class DeleteColorRequest { + + @NotNull + @Min(1) private int colorId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteOrderedAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteOrderedAdditionalProductRequest.java new file mode 100644 index 0000000..89454c1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteOrderedAdditionalProductRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteOrderedAdditionalProductRequest { + + @NotNull + @Min(1) + private int orderedAdditionalProductId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java index d1866f7..e47d6a6 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java @@ -1,5 +1,6 @@ package com.turkcell.rentacar.business.requests.deleteRequests; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import lombok.AllArgsConstructor; @@ -12,6 +13,7 @@ public class DeleteRentRequest { @NotNull + @Min(1) private int rentId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateAdditionalProductRequest.java new file mode 100644 index 0000000..b7945fd --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateAdditionalProductRequest.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateAdditionalProductRequest { + + @NotNull + @Min(1) + private int additionalProductId; + + @NotNull + @Size(min = 2) + private String additionalProductName; + + @NotNull + @Min(0) + private double additionalProductUnitPrice; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java index cc449b1..735c2ef 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.java @@ -1,5 +1,9 @@ package com.turkcell.rentacar.business.requests.updateRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,8 +12,13 @@ @AllArgsConstructor @NoArgsConstructor public class UpdateBrandRequest { - + + @NotNull + @Min(1) private int brandId; + + @NotNull + @Size(min = 2, max = 30) private String brandName; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java index e5e0e76..d1af360 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.updateRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -9,7 +12,12 @@ @NoArgsConstructor public class UpdateBrandToCarRequest { + @NotNull + @Min(1) private int carId; + + @NotNull + @Min(1) private int brandId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java index 36d654f..a0ffc66 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java @@ -1,5 +1,9 @@ package com.turkcell.rentacar.business.requests.updateRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,9 +12,20 @@ @AllArgsConstructor @NoArgsConstructor public class UpdateCarRequest { - + + @NotNull + @Min(1) private int carId; + + @NotNull + @Min(0) private double dailyPrice; + + @NotNull + @Size(min = 4) private String modelYear; + + @NotNull + @Size(min = 2, max = 50) private String description; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java index 7f27130..6c1823b 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.java @@ -1,5 +1,9 @@ package com.turkcell.rentacar.business.requests.updateRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,7 +12,13 @@ @AllArgsConstructor @NoArgsConstructor public class UpdateColorRequest { + + @NotNull + @Min(1) private int colorId; + + @NotNull + @Size(min = 2, max = 30) private String colorName; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java index 1a55e82..24e8238 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.business.requests.updateRequests; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,8 +11,13 @@ @AllArgsConstructor @NoArgsConstructor public class UpdateColorToCarRequest { - + + @NotNull + @Min(1) private int carId; + + @NotNull + @Min(1) private int colorId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java new file mode 100644 index 0000000..eb50a01 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java @@ -0,0 +1,31 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateOrderedAdditionalProductRequest { + + @NotNull + @Min(1) + private int orderedAdditionalProductId; + + @NotNull + @Min(1) + private int orderedAdditionalProductAmount; + + @NotNull + @Min(1) + private int rentId; + + @NotNull + @Min(1) + private int additionalProductId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java index 426e588..5581e87 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java @@ -25,9 +25,14 @@ public class UpdateRentRequest { private LocalDate rentReturnDate; @NotNull - private boolean rentStatus; + @Min(1) + private int carId; @NotNull @Min(1) - private int carId; + private int rentalCityId; + + @NotNull + @Min(1) + private int returnCityId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/AdditionalProductDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/AdditionalProductDao.java new file mode 100644 index 0000000..2ecfb89 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/AdditionalProductDao.java @@ -0,0 +1,12 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.AdditionalProduct; + +public interface AdditionalProductDao extends JpaRepository{ + + boolean existsByAdditionalProductId(int additionalProductId); + + boolean existsByAdditionalProductName(String additionalProductName); +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java index acb7458..41edae3 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java @@ -7,6 +7,8 @@ import com.turkcell.rentacar.entities.concretes.CarMaintenance; public interface CarMaintenanceDao extends JpaRepository { + + boolean existsByCar_CarId(int carId); List getByCar_CarId(int carId); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CityDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CityDao.java new file mode 100644 index 0000000..7176799 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CityDao.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.City; + +public interface CityDao extends JpaRepository{ + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java new file mode 100644 index 0000000..7f5a36e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; + +public interface OrderedAdditionalProductDao extends JpaRepository{ + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java index 3eb711b..bb68067 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java @@ -1,5 +1,7 @@ package com.turkcell.rentacar.dataAccess.abstracts; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import com.turkcell.rentacar.entities.concretes.Rent; @@ -7,6 +9,7 @@ public interface RentDao extends JpaRepository { boolean existsByCar_CarId(int carId); - Rent getByCar_CarId(int carId); + + List getByCar_CarId(int carId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/AdditionalProduct.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/AdditionalProduct.java new file mode 100644 index 0000000..e6b2796 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/AdditionalProduct.java @@ -0,0 +1,38 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "additional_products") +public class AdditionalProduct { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "additional_product_id") + private int additionalProductId; + + @Column(name = "additional_product_name") + private String additionalProductName; + + @Column(name = "additional_product_unit_price") + private double additionalProductUnitPrice; + + @OneToMany(mappedBy = "additionalProduct") + private List orderedAdditionalProducts; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/City.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/City.java new file mode 100644 index 0000000..aaa937b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/City.java @@ -0,0 +1,37 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "cities") +public class City { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "city_id") + private int cityId; + + @Column(name = "city_name") + private String cityName; + + @OneToMany(mappedBy = "rentalCity") + private List rentalCity; + + @OneToMany(mappedBy = "returnCity") + private List returnCity; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java new file mode 100644 index 0000000..8196aa3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java @@ -0,0 +1,40 @@ +package com.turkcell.rentacar.entities.concretes; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "ordered_additional_products") +public class OrderedAdditionalProduct { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ordered_additional_product_id") + private int orderedAdditionalProductId; + + @Column(name = "ordered_additional_product_amount") + private int orderedAdditionalProductAmount; + + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "rent_id") + private Rent rent; + + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "additional_product_id") + private AdditionalProduct additionalProduct; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java index 97441bf..c99d155 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -1,14 +1,18 @@ package com.turkcell.rentacar.entities.concretes; import java.time.LocalDate; +import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; import javax.persistence.Table; import lombok.AllArgsConstructor; @@ -20,6 +24,7 @@ @AllArgsConstructor @NoArgsConstructor @Table(name = "rents") +@Inheritance(strategy = InheritanceType.JOINED) public class Rent { @Id @@ -34,10 +39,24 @@ public class Rent { private LocalDate rentReturnDate; @Column(name = "rent_status") - private boolean rentStatus; + private boolean rentStatus = true; @ManyToOne @JoinColumn(name = "car_id") private Car car; + + @Column(name = "additional_service_price") + private double additionalServicePrice; + + @ManyToOne + @JoinColumn(name = "rental_city_id") + private City rentalCity; + + @ManyToOne + @JoinColumn(name = "return_city_id") + private City returnCity; + + @OneToMany(mappedBy = "rent") + private List orderedAdditionalProducts; } diff --git a/rentacar/src/main/resources/application.properties b/rentacar/src/main/resources/application.properties index 971a5df..22de371 100644 --- a/rentacar/src/main/resources/application.properties +++ b/rentacar/src/main/resources/application.properties @@ -5,4 +5,5 @@ spring.datasource.url=jdbc:postgresql://localhost:5432/rentacar spring.datasource.username=postgres spring.datasource.password=123123 spring.jpa.properties.javax.persistence.validation.mode = none -spring.mvc.pathmatch.matching-strategy = ant-path-matcher \ No newline at end of file +spring.mvc.pathmatch.matching-strategy = ant-path-matcher +server.port = 8081 \ No newline at end of file From 7c5b65148e29f47dde60cd7787c01c908b2d841d Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Wed, 16 Mar 2022 18:17:50 +0300 Subject: [PATCH 4/7] Added Users and Invoice 16/03/2022 Added User class Added Customer class Added IndividualCustomer class Added CorporateCustomer class Added Invoice class Added CRUD operations for all new classes --- .../CorporateCustomersController.java | 49 +++++ .../api/controllers/CustomersController.java | 46 +++++ .../IndividualCustomersController.java | 49 +++++ .../api/controllers/InvoicesController.java | 68 +++++++ .../OrderedAdditionalProductsController.java | 15 ++ .../api/controllers/RentsController.java | 23 ++- .../api/controllers/UsersController.java | 46 +++++ .../abstracts/CorporateCustomerService.java | 16 ++ .../business/abstracts/CustomerService.java | 17 ++ .../abstracts/IndividualCustomerService.java | 17 ++ .../business/abstracts/InvoiceService.java | 33 ++++ .../OrderedAdditionalProductService.java | 6 + .../business/abstracts/RentService.java | 15 +- .../business/abstracts/UserService.java | 17 ++ .../concretes/AdditionalProductManager.java | 26 ++- .../business/concretes/BrandManager.java | 40 ++-- .../concretes/CarMaintenanceManager.java | 42 ++-- .../business/concretes/CarManager.java | 52 +++-- .../business/concretes/ColorManager.java | 30 ++- .../concretes/CorporateCustomerManager.java | 72 +++++++ .../business/concretes/CustomerManager.java | 69 +++++++ .../concretes/IndividualCustomerManager.java | 73 +++++++ .../business/concretes/InvoiceManager.java | 187 ++++++++++++++++++ .../OrderedAdditionalProductManager.java | 75 ++++++- .../business/concretes/RentManager.java | 100 +++++++--- .../business/concretes/UserManager.java | 77 ++++++++ .../business/dtos/getDtos/RentGetDto.java | 24 +++ .../dtos/listDtos/InvioceListDto.java | 26 +++ .../OrderedAdditionalProductListDto.java | 11 +- .../CreateCorporateCustomerRequest.java | 34 ++++ .../createRequests/CreateCustomerRequest.java | 5 + .../CreateIndividualCustomerRequest.java | 37 ++++ .../createRequests/CreateInvoiceRequest.java | 23 +++ .../createRequests/CreateRentRequest.java | 4 + .../createRequests/CreateUserRequest.java | 25 +++ .../DeleteCorporateCustomerRequest.java | 19 ++ .../deleteRequests/DeleteCustomerRequest.java | 19 ++ .../DeleteIndividualCustomerRequest.java | 20 ++ .../deleteRequests/DeleteInvoiceRequest.java | 19 ++ .../deleteRequests/DeleteUserRequest.java | 19 ++ .../UpdateCorporateCustomerRequest.java | 39 ++++ .../updateRequests/UpdateCustomerRequest.java | 18 ++ .../UpdateIndividualCustomerRequest.java | 43 ++++ .../updateRequests/UpdateInvoiceRequest.java | 27 +++ .../updateRequests/UpdateUserRequest.java | 30 +++ .../abstracts/CorporateCustomerDao.java | 11 ++ .../dataAccess/abstracts/CustomerDao.java | 9 + .../abstracts/IndividualCustomerDao.java | 11 ++ .../dataAccess/abstracts/InvoiceDao.java | 26 +++ .../OrderedAdditionalProductDao.java | 8 +- .../dataAccess/abstracts/RentDao.java | 3 + .../dataAccess/abstracts/UserDao.java | 11 ++ .../rentacar/entities/abstracts/User.java | 47 +++++ .../entities/concretes/CorporateCustomer.java | 28 +++ .../rentacar/entities/concretes/Customer.java | 21 ++ .../concretes/IndividualCustomer.java | 30 +++ .../rentacar/entities/concretes/Invoice.java | 46 +++++ .../rentacar/entities/concretes/Rent.java | 15 +- 58 files changed, 1874 insertions(+), 94 deletions(-) create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/InvioceListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCorporateCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateUserRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCorporateCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteIndividualCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteInvoiceRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteUserRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCorporateCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateIndividualCustomerRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateUserRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CustomerDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/IndividualCustomerDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CorporateCustomer.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/IndividualCustomer.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java new file mode 100644 index 0000000..acc8344 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java @@ -0,0 +1,49 @@ +package com.turkcell.rentacar.api.controllers; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.CorporateCustomerService; +import com.turkcell.rentacar.business.requests.createRequests.CreateCorporateCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCorporateCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCorporateCustomerRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/corporateCustomers") +public class CorporateCustomersController { + + CorporateCustomerService corporateCustomerService; + + @Autowired + public CorporateCustomersController(CorporateCustomerService corporateCustomerService) { + this.corporateCustomerService = corporateCustomerService; + } + + @PostMapping("/add") + Result add(@RequestBody @Valid CreateCorporateCustomerRequest createCorporateCustomerRequest) + throws BusinessException { + return this.corporateCustomerService.add(createCorporateCustomerRequest); + } + + @PutMapping("/update") + Result update(@RequestBody @Valid UpdateCorporateCustomerRequest updateCorporateCustomerRequest) + throws BusinessException { + return this.corporateCustomerService.update(updateCorporateCustomerRequest); + } + + @DeleteMapping("/delete") + Result delete(@RequestBody @Valid DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) + throws BusinessException { + return this.corporateCustomerService.delete(deleteCorporateCustomerRequest); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java new file mode 100644 index 0000000..26f7f85 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java @@ -0,0 +1,46 @@ +package com.turkcell.rentacar.api.controllers; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.CustomerService; +import com.turkcell.rentacar.business.requests.createRequests.CreateCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCustomerRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/customers") +public class CustomersController { + + private CustomerService customerService; + + @Autowired + public CustomersController(CustomerService customerService) { + this.customerService = customerService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateCustomerRequest createCustomerRequest) throws BusinessException { + return this.customerService.add(createCustomerRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateCustomerRequest updateCustomerRequest) throws BusinessException { + return this.customerService.update(updateCustomerRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteCustomerRequest deleteCustomerRequest) throws BusinessException { + return this.customerService.delete(deleteCustomerRequest); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java new file mode 100644 index 0000000..bbc934b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java @@ -0,0 +1,49 @@ +package com.turkcell.rentacar.api.controllers; + +import com.turkcell.rentacar.business.requests.createRequests.CreateIndividualCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteIndividualCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateIndividualCustomerRequest; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.IndividualCustomerService; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/individualCustomers") +public class IndividualCustomersController { + + private IndividualCustomerService individualCustomerService; + + @Autowired + public IndividualCustomersController(IndividualCustomerService individualCustomerService) { + this.individualCustomerService = individualCustomerService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateIndividualCustomerRequest createIndividualCustomerRequest) + throws BusinessException { + return this.individualCustomerService.add(createIndividualCustomerRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateIndividualCustomerRequest updateIndividualCustomerRequest) + throws BusinessException { + return this.individualCustomerService.update(updateIndividualCustomerRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) + throws BusinessException { + return this.individualCustomerService.delete(deleteIndividualCustomerRequest); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java new file mode 100644 index 0000000..81315ac --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java @@ -0,0 +1,68 @@ +package com.turkcell.rentacar.api.controllers; + +import java.time.LocalDate; +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.InvoiceService; +import com.turkcell.rentacar.business.dtos.listDtos.InvioceListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateInvoiceRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/invoices") +public class InvoicesController { + + private InvoiceService invoicesService; + + @Autowired + public InvoicesController(InvoiceService invoicesService) { + this.invoicesService = invoicesService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateInvoiceRequest createInvoiceRequest) throws BusinessException { + return this.invoicesService.add(createInvoiceRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.invoicesService.getAll(); + } + + @GetMapping("/getByRentId") + public DataResult getByRentId(@RequestParam int rentId) throws BusinessException { + return this.invoicesService.getByRentId(rentId); + } + + @GetMapping("/getOrderedAdditionalProductByRentId") + public DataResult> getOrderedAdditionalProductByRentId(@RequestParam int rentId) { + return this.invoicesService.getOrderedAdditionalProductByRentId(rentId); + } + + @GetMapping("/getByUserId") + public DataResult> getByUserId(@RequestParam int userId) throws BusinessException { + return this.invoicesService.getByUserId(userId); + } + + @GetMapping("/getAllByBetweenStartDateAndEndDate") + public DataResult> getAllByBetweenStartDateAndEndDate( + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd") @RequestParam("startDate") LocalDate startDate, + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd") @RequestParam("endDate") LocalDate endDate) { + return this.invoicesService.getAllByBetweenStartDateAndEndDate(startDate, endDate); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java index 480989c..ef15d8d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java @@ -53,4 +53,19 @@ public DataResult> getAll() { return this.orderedAdditionalProductService.getAll(); } + @GetMapping("/checkIfRentExists") + public Result checkIfRentExists(int rentId) { + return this.orderedAdditionalProductService.checkIfRentExists(rentId); + } + + @GetMapping("/getByRentId") + public DataResult> getByRentId(int rentId) { + return this.orderedAdditionalProductService.getByRentId(rentId); + } + + @GetMapping("/calculateOrderedAdditionalPrice") + public DataResult calculateOrderedAdditionalPrice(int rentId) throws BusinessException { + return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId); + } + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java index 43ca8d6..40c6a29 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java @@ -2,6 +2,8 @@ import java.util.List; +import javax.validation.Valid; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -9,6 +11,7 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.turkcell.rentacar.business.abstracts.RentService; @@ -32,18 +35,24 @@ public RentsController(RentService rentService) { this.rentService = rentService; } - @PostMapping("/add") - public Result add(@RequestBody CreateRentRequest createRentRequest) throws BusinessException { - return this.rentService.add(createRentRequest); + @PostMapping("/addCorporateCustomer") + public Result addCorporateCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) throws BusinessException { + return this.rentService.addCorporateCustomer(createRentRequest); + + } + + @PostMapping("/addIndividualCustomer") + public Result addIndividualCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) throws BusinessException { + return this.rentService.addIndividualCustomer(createRentRequest); } @PutMapping("/update") - public Result update(@RequestBody UpdateRentRequest updateRentRequest) throws BusinessException { + public Result update(@RequestBody @Valid UpdateRentRequest updateRentRequest) throws BusinessException { return this.rentService.update(updateRentRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteRentRequest deleteRentRequest) throws BusinessException { + public Result delete(@RequestBody @Valid DeleteRentRequest deleteRentRequest) throws BusinessException { return this.rentService.delete(deleteRentRequest); } @@ -53,12 +62,12 @@ public DataResult> getAll() { } @GetMapping("/getRentDetailsByRentId") - public DataResult getRentDetailsByRentId(int rentId) { + public DataResult getRentDetailsByRentId(@RequestParam int rentId) { return this.rentService.getRentDetailsByRentId(rentId); } @GetMapping("/checkIfCarAlreadyInRent") - public Result checkIfCarAlreadyInRent(int carId) throws BusinessException { + public Result checkIfCarAlreadyInRent(@RequestParam int carId) throws BusinessException { return this.rentService.checkIfCarAlreadyInRent(carId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java new file mode 100644 index 0000000..5bf0274 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java @@ -0,0 +1,46 @@ +package com.turkcell.rentacar.api.controllers; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.UserService; +import com.turkcell.rentacar.business.requests.createRequests.CreateUserRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteUserRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +@RestController +@RequestMapping("/api/users") +public class UsersController { + + private UserService userService; + + @Autowired + public UsersController(UserService userService) { + this.userService = userService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateUserRequest createUserRequest) throws BusinessException { + return this.userService.add(createUserRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateUserRequest updateUserRequest) throws BusinessException { + return this.userService.update(updateUserRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteUserRequest deleteUserRequest) throws BusinessException { + return this.userService.delete(deleteUserRequest); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java new file mode 100644 index 0000000..ab6b3c9 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java @@ -0,0 +1,16 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.requests.createRequests.CreateCorporateCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCorporateCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCorporateCustomerRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface CorporateCustomerService { + + Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) throws BusinessException; + + Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest) throws BusinessException; + + Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) throws BusinessException; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java new file mode 100644 index 0000000..8513914 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.requests.createRequests.CreateCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCustomerRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface CustomerService { + + Result add(CreateCustomerRequest createCustomerRequest) throws BusinessException; + + Result update(UpdateCustomerRequest updateCustomerRequest) throws BusinessException; + + Result delete(DeleteCustomerRequest deleteCustomerRequest) throws BusinessException; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java new file mode 100644 index 0000000..9e37b29 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.requests.createRequests.CreateIndividualCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteIndividualCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateIndividualCustomerRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface IndividualCustomerService { + + Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest) throws BusinessException; + + Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest) throws BusinessException; + + Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) throws BusinessException; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java new file mode 100644 index 0000000..3380773 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java @@ -0,0 +1,33 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.time.LocalDate; +import java.util.List; + +import com.turkcell.rentacar.business.dtos.listDtos.InvioceListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateInvoiceRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteInvoiceRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateInvoiceRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface InvoiceService { + + Result add(CreateInvoiceRequest createInvoiceRequest)throws BusinessException; + + Result Update(UpdateInvoiceRequest updateInvoiceRequest) throws BusinessException; + + Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) throws BusinessException; + + DataResult getByRentId(int rentId)throws BusinessException; + + DataResult> getOrderedAdditionalProductByRentId(int rentId); + + DataResult> getAll(); + + DataResult> getByUserId(int userId)throws BusinessException; + + DataResult> getAllByBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java index bb659db..23c492d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java @@ -18,6 +18,12 @@ public interface OrderedAdditionalProductService { Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) throws BusinessException; + Result checkIfRentExists(int rentId); + DataResult> getAll(); + DataResult> getByRentId(int rentId); + + DataResult calculateOrderedAdditionalPrice(int rentId) throws BusinessException; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java index f9ab496..2cfeec0 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java @@ -9,22 +9,31 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; import com.turkcell.rentacar.exceptions.BusinessException; public interface RentService { - Result add(CreateRentRequest createRentRequest) throws BusinessException; + Result addCorporateCustomer(CreateRentRequest createRentRequest) throws BusinessException; + + Result addIndividualCustomer(CreateRentRequest createRentRequest) throws BusinessException; Result update(UpdateRentRequest updateRentRequest) throws BusinessException; Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException; DataResult> getAll(); - + DataResult> getByCarId(int carId); - DataResult getRentDetailsByRentId(int rentId); + DataResult> getOrderedAdditionalProductsByRentId(int rentId); + DataResult calculateRentTotalPrice(int rentId); + + DataResult getRentDetailsByRentId(int rentId); + Result checkIfCarAlreadyInRent(int carId) throws BusinessException; + + Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java new file mode 100644 index 0000000..23cef8e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.requests.createRequests.CreateUserRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteUserRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.exceptions.BusinessException; + +public interface UserService { + + Result add(CreateUserRequest createUserRequest) throws BusinessException; + + Result update(UpdateUserRequest updateUserRequest) throws BusinessException; + + Result delete(DeleteUserRequest deleteUserRequest) throws BusinessException; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java index 48e6e84..e0ff2a2 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java @@ -34,48 +34,62 @@ public AdditionalProductManager(AdditionalProductDao additionalProductDao, Model @Override public Result add(CreateAdditionalProductRequest createAdditionalProductRequest) throws BusinessException { + checkIfAdditionalProducNameExists(createAdditionalProductRequest.getAdditionalProductName()); + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(createAdditionalProductRequest, AdditionalProduct.class); + this.additionalProductDao.save(additionalProduct); - return new SuccessResult("Ek urun eklendi."); + + return new SuccessResult("AdditionalProduct added successfully."); } @Override public Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) throws BusinessException { + checkIfAdditionalProductExists(updateAdditionalProductRequest.getAdditionalProductId()); + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(updateAdditionalProductRequest, AdditionalProduct.class); + this.additionalProductDao.save(additionalProduct); - return new SuccessResult("Ek urun guncellendi."); + + return new SuccessResult("AdditionalProduct updated successfully."); } @Override public Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) throws BusinessException { + checkIfAdditionalProductExists(deleteAdditionalProductRequest.getAdditionalProductId()); + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(deleteAdditionalProductRequest, AdditionalProduct.class); + this.additionalProductDao.delete(additionalProduct); - return new SuccessResult("Ek urun silindi."); + + return new SuccessResult("AdditionalProduct deleted successfully."); } @Override public DataResult> getAll() { + List result = this.additionalProductDao.findAll(); List response = result.stream().map(additionalProduct -> this.modelMapperService .forDto().map(additionalProduct, AdditionalProductListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Ek urunler listelendi."); + + return new SuccessDataResult>(response, "AdditionalProducts listed successfully."); } private void checkIfAdditionalProductExists(int additionalProductId) throws BusinessException { if (!this.additionalProductDao.existsByAdditionalProductId(additionalProductId)) { - throw new BusinessException("Ek urun bulunamadi!"); + throw new BusinessException("AdditionalProduct not found!"); } } private void checkIfAdditionalProducNameExists(String additionalProductName) throws BusinessException { if (this.additionalProductDao.existsByAdditionalProductName(additionalProductName)) { - throw new BusinessException("Bu ek urun zaten kayitli!"); + throw new BusinessException("AdditionalProduct already exists!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java index 5fc052c..4a9b753 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -34,54 +34,70 @@ public BrandManager(BrandDao brandDao, ModelMapperService modelMapperService) { @Override public DataResult> getAll() { + List result = this.brandDao.findAll(); List response = result.stream() .map(brand -> this.modelMapperService.forDto().map(brand, BrandListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Markalar listelendi."); + + return new SuccessDataResult>(response, "Brands listed successfully."); } @Override public Result add(CreateBrandRequest createBrandRequest) throws BusinessException { + checkIfBrandNameExists(createBrandRequest.getBrandName()); + Brand brand = this.modelMapperService.forRequest().map(createBrandRequest, Brand.class); + this.brandDao.save(brand); - return new SuccessResult("Marka eklendi."); + + return new SuccessResult("Brand added successfully."); } @Override public DataResult getById(int id) { + Brand result = this.brandDao.getBrandByBrandId(id); BrandListDto response = this.modelMapperService.forDto().map(result, BrandListDto.class); - return new SuccessDataResult(response, "Marka goruntulendi."); + + return new SuccessDataResult(response, "Brand listed successfully."); } @Override public Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException { + checkIfBrandExists(updateBrandRequest.getBrandId()); checkIfBrandNameExists(updateBrandRequest.getBrandName()); + Brand brand = this.modelMapperService.forRequest().map(updateBrandRequest, Brand.class); + this.brandDao.save(brand); - return new SuccessResult("Marka eklendi."); + + return new SuccessResult("Brand updated successfully."); } - + @Override - public Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessException{ + public Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessException { + checkIfBrandExists(deleteBrandRequest.getBrandId()); + Brand brand = this.modelMapperService.forRequest().map(deleteBrandRequest, Brand.class); + this.brandDao.deleteById(brand.getBrandId()); - return new SuccessResult("Marka silindi."); + + return new SuccessResult("Brand deleted successfully."); } - - private void checkIfBrandExists(int brandId)throws BusinessException { - if(!this.brandDao.existsById(brandId)) { - throw new BusinessException("Marka bulunamadi!"); + + private void checkIfBrandExists(int brandId) throws BusinessException { + if (!this.brandDao.existsById(brandId)) { + throw new BusinessException("Brand not found!"); } } private void checkIfBrandNameExists(String brandName) throws BusinessException { if (this.brandDao.existsBrandByBrandName(brandName)) { - throw new BusinessException("Bu marka zaten kayitli!"); + throw new BusinessException("Brand already exists."); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java index d2612b0..4430325 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java @@ -41,73 +41,91 @@ public CarMaintenanceManager(CarMaintenanceDao carMaintenanceDao, ModelMapperSer @Override public DataResult> getAll() { + List result = this.carMaintenanceDao.findAll(); List response = result.stream().map( carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Bakim bilgileri listelendi."); + + return new SuccessDataResult>(response, "CarMaintenances listed successfully."); } @Override public DataResult getCarMaintenanceDetailsByCarMaintenanceId(int carMaintenanceId) { + CarMaintenance result = this.carMaintenanceDao.getById(carMaintenanceId); CarMaintenanceGetDto response = this.modelMapperService.forDto().map(result, CarMaintenanceGetDto.class); - return new SuccessDataResult(response, "Detayli bakim bilgileri listelendi."); + + return new SuccessDataResult(response, "CarMaintenance listed successfully."); } @Override public Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException { + checkIfReturnDateIsAfterNow(createCarMaintenanceRequest.getReturnDate()); checkIfCarIsAlreadyInMaintenanceIsSuccess(createCarMaintenanceRequest.getCarId()); checkIfCarIsAlreadyInRent(createCarMaintenanceRequest.getCarId()); + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(createCarMaintenanceRequest, CarMaintenance.class); + this.carMaintenanceDao.save(carMaintenance); - return new SuccessResult("Bakim bilgisi eklendi."); + + return new SuccessResult("CarMaintenance added successfully."); } @Override public Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) throws BusinessException { + existByCarMaintenance(updateCarMaintenanceRequest.getCarMaintenanceId()); checkIfReturnDateIsAfterNow(updateCarMaintenanceRequest.getReturnDate()); + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(updateCarMaintenanceRequest, CarMaintenance.class); + this.carMaintenanceDao.save(carMaintenance); - return new SuccessResult("Bakim bilgisi guncellendi."); + + return new SuccessResult("CarMaintenance updated successfully."); } @Override public Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) throws BusinessException { + existByCarMaintenance(deleteCarMaintenanceRequest.getCarMaintenanceId()); + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(deleteCarMaintenanceRequest, CarMaintenance.class); + this.carMaintenanceDao.delete(carMaintenance); - return new SuccessResult("Bakim bilgisi silindi."); + + return new SuccessResult("CarMaintenance deleted successfully."); } @Override public DataResult> getByCarId(int carId) { + List result = this.carMaintenanceDao.getByCar_CarId(carId); List response = result.stream().map( carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Araca ait bakim bilgileri listelendi."); + + return new SuccessDataResult>(response, "CarMaintenances for Car listed successfully."); } @Override public Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessException { for (CarMaintenance carMaintenance : this.carMaintenanceDao.getByCar_CarId(carId)) { if (carMaintenance.getReturnDate() != null) { - return new SuccessResult("Arac bakimda degil."); + return new SuccessResult("Car not in maintenance"); } } - return new ErrorResult("Arac bakimda!"); + return new ErrorResult("Car in maintenance!"); } private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) throws BusinessException { if (this.carMaintenanceDao.existsByCar_CarId(carId)) { if (!checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { - throw new BusinessException("Arac bakimda!"); + throw new BusinessException("Car in maintenance!"); } } } @@ -115,7 +133,7 @@ private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) throws Busines private void checkIfCarIsAlreadyInRent(int carId) throws BusinessException { if (!checkIfCarExistInRentTable(carId)) { if (!this.rentService.checkIfCarAlreadyInRent(carId).isSuccess()) { - throw new BusinessException("Arac kirada oldugu icin bakima gonderilemez!"); + throw new BusinessException("The Car cannot be sent for maintenance because it is on Rent."); } } } @@ -126,14 +144,14 @@ private boolean checkIfCarExistInRentTable(int carId) { private void existByCarMaintenance(int carMaintenanceId) throws BusinessException { if (!this.carMaintenanceDao.existsById(carMaintenanceId)) { - throw new BusinessException("Bakim bilgisi bulunamadi."); + throw new BusinessException("CarMaintenance not found!"); } } private void checkIfReturnDateIsAfterNow(LocalDate returnDate) throws BusinessException { if (returnDate != null) { if (returnDate.isAfter(LocalDate.now())) { - throw new BusinessException("Ileri bir tarih girilemez!"); + throw new BusinessException("A future date cannot be entered!"); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java index 58d6390..571fe8e 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -39,88 +39,118 @@ public CarManager(CarDao carDao, ModelMapperService modelMapperService) { @Override public DataResult> getAll() { + List result = this.carDao.findAll(); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Arabalar listelendi."); + + return new SuccessDataResult>(response, "Cars listed successfully."); } @Override public Result add(CreateCarRequest createCarRequest) throws BusinessException { + Car car = this.modelMapperService.forRequest().map(createCarRequest, Car.class); + this.carDao.save(car); - return new SuccessResult("Araba eklendi."); + + return new SuccessResult("Car added successfully."); } @Override public Result update(UpdateCarRequest updateCarRequest) throws BusinessException { + checkIfCarExists(updateCarRequest.getCarId()); + Car car = this.carDao.getById(updateCarRequest.getCarId()); Car updatedCar = this.modelMapperService.forRequest().map(updateCarRequest, Car.class); + updatedCar.setBrand(car.getBrand()); updatedCar.setColor(car.getColor()); + this.carDao.save(updatedCar); - return new SuccessResult("Araba guncellendi."); + + return new SuccessResult("Car updated successfully."); } @Override public Result delete(DeleteCarRequest deleteCarRequest) throws BusinessException { + checkIfCarExists(deleteCarRequest.getCarId()); + Car car = this.modelMapperService.forRequest().map(deleteCarRequest, Car.class); + this.carDao.deleteById(car.getCarId()); - return new SuccessResult("Araba silindi."); + + return new SuccessResult("Car deleted successfully."); } @Override public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException { + checkIfCarExists(updateColorToCarRequest.getCarId()); + this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), updateColorToCarRequest.getColorId()); - return new SuccessResult("Arabanin rengi guncellendi."); + + return new SuccessResult("The Color of the Car updated successfully."); } @Override public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException { + checkIfCarExists(updateBrandToCarRequest.getCarId()); + this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), updateBrandToCarRequest.getBrandId()); - return new SuccessResult("Arabanin markasi guncellendi."); + + return new SuccessResult("The Brand of the Car updated successfully."); } @Override public DataResult getById(int id) { + Car result = this.carDao.getById(id); CarListDto response = this.modelMapperService.forDto().map(result, CarListDto.class); - return new SuccessDataResult(response, "Araba goruntulendi."); + + return new SuccessDataResult(response, "Car listed successfully"); } @Override public DataResult> findByDailyPriceLessThanEqual(double dailyPrice) { + List result = this.carDao.findByDailyPriceLessThanEqual(dailyPrice); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Arabalar fiyata gore listelendi."); + + return new SuccessDataResult>(response, "Cars successfully listed by dailyPrice."); } @Override public DataResult> getAllPaged(int pageNo, int pageSize) { + Pageable pageable = PageRequest.of(pageNo - 1, pageSize); + List result = this.carDao.findAll(pageable).getContent(); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Arabalar sayfalanarak listelendi."); + + return new SuccessDataResult>(response, "Cars are paginated and listed successfully."); } @Override public DataResult> getAllSorted(boolean sort) { + Sort sorted = Sort.by(checkSortDirectionType(sort), "dailyPrice"); + List result = this.carDao.findAll(sorted); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Arabalar sayfalanarak listelendi."); + + return new SuccessDataResult>(response, "Cars are sorted successfully."); } private void checkIfCarExists(int carId) throws BusinessException { if (!this.carDao.existsByCarId(carId)) { - throw new BusinessException("Boyle bir araba bulunmamaktadir!"); + throw new BusinessException("Car not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java index d7f7785..5108d59 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -34,54 +34,70 @@ public ColorManager(ColorDao colorDao, ModelMapperService modelMapperService) { @Override public DataResult> getAll() { + List result = this.colorDao.findAll(); List response = result.stream() .map(color -> this.modelMapperService.forDto().map(color, ColorListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Renkler Listelendi."); + + return new SuccessDataResult>(response, "Colors listed successfully."); } @Override public Result add(CreateColorRequest createColorRequest) throws BusinessException { + checkIfColorNameExists(createColorRequest.getColorName()); + Color color = this.modelMapperService.forRequest().map(createColorRequest, Color.class); + this.colorDao.save(color); - return new SuccessResult("Renk eklendi."); + + return new SuccessResult("Color added successfully."); } @Override public DataResult getById(int id) { + Color result = this.colorDao.getById(id); ColorListDto response = this.modelMapperService.forDto().map(result, ColorListDto.class); - return new SuccessDataResult(response, "Renk goruntulendi."); + + return new SuccessDataResult(response, "Color listed successfully."); } @Override public Result update(UpdateColorRequest updateColorRequest) throws BusinessException { + checkIfColorExists(updateColorRequest.getColorId()); checkIfColorNameExists(updateColorRequest.getColorName()); + Color color = this.modelMapperService.forRequest().map(updateColorRequest, Color.class); + this.colorDao.save(color); - return new SuccessResult("Renk guncellendi."); + + return new SuccessResult("Color updated successfully."); } @Override public Result delete(DeleteColorRequest deleteColorRequest) throws BusinessException { + checkIfColorExists(deleteColorRequest.getColorId()); + Color color = this.modelMapperService.forRequest().map(deleteColorRequest, Color.class); + this.colorDao.deleteById(color.getColorId()); - return new SuccessResult("Renk silindi."); + + return new SuccessResult("Color deleted successfully."); } private void checkIfColorNameExists(String colorName) throws BusinessException { if (this.colorDao.existsColorByColorName(colorName)) { - throw new BusinessException("Bu renk zaten kayitli!"); + throw new BusinessException("Color already exists!"); } } private void checkIfColorExists(int colorId) throws BusinessException { if (!this.colorDao.existsById(colorId)) { - throw new BusinessException("Renk bulunamadi!"); + throw new BusinessException("Color not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java new file mode 100644 index 0000000..250c117 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java @@ -0,0 +1,72 @@ +package com.turkcell.rentacar.business.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.CorporateCustomerService; +import com.turkcell.rentacar.business.requests.createRequests.CreateCorporateCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCorporateCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCorporateCustomerRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.CorporateCustomerDao; +import com.turkcell.rentacar.entities.concretes.CorporateCustomer; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class CorporateCustomerManager implements CorporateCustomerService { + + private CorporateCustomerDao corporateCustomerDao; + private ModelMapperService modelMapperService; + + @Autowired + public CorporateCustomerManager(CorporateCustomerDao corporateCustomerDao, ModelMapperService modelMapperService) { + this.corporateCustomerDao = corporateCustomerDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) throws BusinessException { + + CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(createCorporateCustomerRequest, + CorporateCustomer.class); + + this.corporateCustomerDao.save(corporateCustomer); + + return new SuccessResult("Corporate customer added successfully."); + } + + @Override + public Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest) throws BusinessException { + + checkIfCorporateCustomerExists(updateCorporateCustomerRequest.getUserId()); + + CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(updateCorporateCustomerRequest, + CorporateCustomer.class); + + this.corporateCustomerDao.save(corporateCustomer); + + return new SuccessResult("Corporate customer updated successfully."); + } + + @Override + public Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) throws BusinessException { + + checkIfCorporateCustomerExists(deleteCorporateCustomerRequest.getUserId()); + + CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(deleteCorporateCustomerRequest, + CorporateCustomer.class); + + this.corporateCustomerDao.delete(corporateCustomer); + + return new SuccessResult("Corporate customer deleted successfully."); + } + + private void checkIfCorporateCustomerExists(int corporateCustomerId) throws BusinessException { + if (!this.corporateCustomerDao.existsById(corporateCustomerId)) { + throw new BusinessException("Corporate Customer not found!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java new file mode 100644 index 0000000..07557f1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java @@ -0,0 +1,69 @@ +package com.turkcell.rentacar.business.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.CustomerService; +import com.turkcell.rentacar.business.requests.createRequests.CreateCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCustomerRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.CustomerDao; +import com.turkcell.rentacar.entities.concretes.Customer; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class CustomerManager implements CustomerService { + + private CustomerDao customerDao; + private ModelMapperService modelMapperService; + + @Autowired + public CustomerManager(CustomerDao customerDao, ModelMapperService modelMapperService) { + this.customerDao = customerDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateCustomerRequest createCustomerRequest) throws BusinessException { + + Customer customer = this.modelMapperService.forRequest().map(createCustomerRequest, Customer.class); + + this.customerDao.save(customer); + + return new SuccessResult("Customer added successfully."); + } + + @Override + public Result update(UpdateCustomerRequest updateCustomerRequest) throws BusinessException { + + checkIfCustomerExists(updateCustomerRequest.getUserId()); + + Customer customer = this.modelMapperService.forRequest().map(updateCustomerRequest, Customer.class); + + this.customerDao.save(customer); + + return new SuccessResult("Customer updated successfully."); + } + + @Override + public Result delete(DeleteCustomerRequest deleteCustomerRequest) throws BusinessException { + + checkIfCustomerExists(deleteCustomerRequest.getUserId()); + + Customer customer = this.modelMapperService.forRequest().map(deleteCustomerRequest, Customer.class); + + this.customerDao.delete(customer); + + return new SuccessResult("Customer deleted successfully."); + } + + private void checkIfCustomerExists(int customerId) throws BusinessException { + if (!this.customerDao.existsById(customerId)) { + throw new BusinessException("Customer not found!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java new file mode 100644 index 0000000..ed301f2 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java @@ -0,0 +1,73 @@ +package com.turkcell.rentacar.business.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.IndividualCustomerService; +import com.turkcell.rentacar.business.requests.createRequests.CreateIndividualCustomerRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteIndividualCustomerRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateIndividualCustomerRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.IndividualCustomerDao; +import com.turkcell.rentacar.entities.concretes.IndividualCustomer; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class IndividualCustomerManager implements IndividualCustomerService { + + private IndividualCustomerDao individualCustomerDao; + private ModelMapperService modelMapperService; + + @Autowired + public IndividualCustomerManager(IndividualCustomerDao individualCustomerDao, + ModelMapperService modelMapperService) { + this.individualCustomerDao = individualCustomerDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest) throws BusinessException { + + IndividualCustomer individualCustomer = this.modelMapperService.forRequest() + .map(createIndividualCustomerRequest, IndividualCustomer.class); + + this.individualCustomerDao.save(individualCustomer); + + return new SuccessResult("Individual customer added successfully."); + } + + @Override + public Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest) throws BusinessException { + + checkIfIndividualCustomerExists(updateIndividualCustomerRequest.getUserId()); + + IndividualCustomer individualCustomer = this.modelMapperService.forRequest() + .map(updateIndividualCustomerRequest, IndividualCustomer.class); + + this.individualCustomerDao.save(individualCustomer); + + return new SuccessResult("Individual customer updated successfully."); + } + + @Override + public Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) throws BusinessException { + + checkIfIndividualCustomerExists(deleteIndividualCustomerRequest.getUserId()); + + IndividualCustomer individualCustomer = this.modelMapperService.forRequest() + .map(deleteIndividualCustomerRequest, IndividualCustomer.class); + + this.individualCustomerDao.delete(individualCustomer); + + return new SuccessResult("Individual customer deleted successfully."); + } + + private void checkIfIndividualCustomerExists(int individualCustomerId) throws BusinessException { + if (!this.individualCustomerDao.existsById(individualCustomerId)) { + throw new BusinessException("Individual Customer not found!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java new file mode 100644 index 0000000..ace73a7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java @@ -0,0 +1,187 @@ +package com.turkcell.rentacar.business.concretes; + +import java.time.LocalDate; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.InvoiceService; +import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; +import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.dtos.listDtos.InvioceListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateInvoiceRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteInvoiceRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateInvoiceRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.InvoiceDao; +import com.turkcell.rentacar.entities.concretes.Invoice; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class InvoiceManager implements InvoiceService { + + private InvoiceDao invoiceDao; + private ModelMapperService modelMapperService; + private RentService rentService; + private OrderedAdditionalProductService orderedAdditionalProductService; + + @Autowired + public InvoiceManager(InvoiceDao invoiceDao, ModelMapperService modelMapperService, @Lazy RentService rentService, + OrderedAdditionalProductService orderedAdditionalProductService) { + this.invoiceDao = invoiceDao; + this.modelMapperService = modelMapperService; + this.rentService = rentService; + this.orderedAdditionalProductService = orderedAdditionalProductService; + } + + @Override + public Result add(CreateInvoiceRequest createInvoiceRequest) throws BusinessException { + + Invoice invoice = this.modelMapperService.forRequest().map(createInvoiceRequest, Invoice.class); + + invoice.setTotalPrice(calculateTotalPrice(invoice)); + + this.invoiceDao.save(invoice); + + return new SuccessResult("Invoice added successfully."); + + } + + @Override + public Result Update(UpdateInvoiceRequest updateInvoiceRequest) throws BusinessException { + + checkIfInvoiceExists(updateInvoiceRequest.getInvoiceId()); + + Invoice invoice = this.modelMapperService.forRequest().map(updateInvoiceRequest, Invoice.class); + + invoice.setTotalPrice(calculateTotalPrice(invoice)); + + this.invoiceDao.save(invoice); + + return new SuccessResult("Invoice updated successfully."); + } + + @Override + public Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) throws BusinessException { + + Invoice invoice = this.modelMapperService.forRequest().map(deleteInvoiceRequest, Invoice.class); + + this.invoiceDao.delete(invoice); + + return new SuccessResult("Invoice deleted successfully."); + } + + @Override + public DataResult> getAll() { + + List result = this.invoiceDao.findAll(); + List response = result.stream() + .map(invoice -> modelMapperService.forDto().map(invoice, InvioceListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, "Invoices listed successfully."); + } + + @Override + public DataResult getByRentId(int rentId) throws BusinessException { + + checkIfRentExists(rentId); + + Invoice result = this.invoiceDao.getByRent_RentId(rentId); + InvioceListDto response = this.modelMapperService.forDto().map(result, InvioceListDto.class); + + return new SuccessDataResult(response, "Invoice listed successfully."); + } + + @Override + public DataResult> getOrderedAdditionalProductByRentId(int rentId) { + + List result = this.rentService.getOrderedAdditionalProductsByRentId(rentId).getData(); + + return new SuccessDataResult>(result, "Invoice listed successfully."); + } + + @Override + public DataResult> getByUserId(int userId) throws BusinessException { + + checkIfUserExists(userId); + + List result = this.invoiceDao.getByUser_UserId(userId); + List response = result.stream() + .map(invoice -> modelMapperService.forDto().map(invoice, InvioceListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, "User's invoice listed successfully."); + } + + @Override + public DataResult> getAllByBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate) { + + List result = this.invoiceDao.getAllByBetweenStartDateAndEndDate(startDate, endDate); + List response = result.stream() + .map(invoice -> modelMapperService.forDto().map(invoice, InvioceListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, + "Invoices between start date and end date listed successfully."); + } + + private double calculateTotalPrice(Invoice invoice) throws BusinessException { + + return calculateRentTotalPrice(invoice.getRent().getRentId()) + + calculateOrderedAdditionalPrice(invoice.getRent().getRentId()) + + calculateIfCityIsDifferentPrice(invoice.getRent().getRentId()); + } + + private double calculateRentTotalPrice(int rentId) { + return this.rentService.calculateRentTotalPrice(rentId).getData(); + } + + private double calculateOrderedAdditionalPrice(int rentId) throws BusinessException { + if (checkIfInvoiceHasOrderedAdditionalProduct(rentId)) { + return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId).getData(); + } + return 0; + } + + private double calculateIfCityIsDifferentPrice(int rentId) { + if (this.rentService.checkIfReturnCityIsDifferentForRentalCityIsSuccess(rentId).isSuccess()) { + return 750; + } + return 0; + } + + private void checkIfInvoiceExists(int invoiceId) throws BusinessException { + if (!this.invoiceDao.existsById(invoiceId)) { + throw new BusinessException("Invoice not found!"); + } + } + + private boolean checkIfInvoiceHasOrderedAdditionalProduct(int rentId) { + if (this.orderedAdditionalProductService.checkIfRentExists(rentId).isSuccess()) { + return true; + } + return false; + } + + private void checkIfRentExists(int rentId) throws BusinessException { + if (!this.invoiceDao.existsByRent_RentId(rentId)) { + throw new BusinessException("Rent not found!"); + } + } + + private void checkIfUserExists(int userId) throws BusinessException { + if (!this.invoiceDao.existsByUser_UserId(userId)) { + throw new BusinessException("User not found!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java index a066513..a60237a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java @@ -13,6 +13,7 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateOrderedAdditionalProductRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; import com.turkcell.rentacar.core.utilities.results.SuccessResult; @@ -36,46 +37,110 @@ public OrderedAdditionalProductManager(OrderedAdditionalProductDao orderedAdditi @Override public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) throws BusinessException { + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() .map(createOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + orderedAdditionalProduct.setOrderedAdditionalProductId(0); this.orderedAdditionalProductDao.save(orderedAdditionalProduct); - return new SuccessResult("Ek urun bilgisi eklendi."); + + return new SuccessResult("OrderedAdditionalProduct added successfully."); } @Override public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) throws BusinessException { + checkIfOrderedAdditionalProductExists(updateOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() .map(updateOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + this.orderedAdditionalProductDao.save(orderedAdditionalProduct); - return new SuccessResult("Ek urun bilgisi guncellendi."); + + return new SuccessResult("OrderedAdditionalProduct updated successfully."); } @Override public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) throws BusinessException { + checkIfOrderedAdditionalProductExists(deleteOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() .map(deleteOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + this.orderedAdditionalProductDao.delete(orderedAdditionalProduct); - return new SuccessResult("Ek urun bilgisi silindi."); + + return new SuccessResult("OrderedAdditionalProduct deleted successfully."); } @Override public DataResult> getAll() { + List result = this.orderedAdditionalProductDao.findAll(); List response = result.stream() .map(orderedAdditionalProduct -> this.modelMapperService.forDto().map(orderedAdditionalProduct, OrderedAdditionalProductListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Ek urun bilgileri listelendi."); + + return new SuccessDataResult>(response, "OrderedAdditionalProducts listed successfully."); + } + + @Override + public DataResult> getByRentId(int rentId) { + + List result = this.orderedAdditionalProductDao.getByRent_RentId(rentId); + List response = result.stream() + .map(orderedAdditionalProduct -> this.modelMapperService.forDto().map(orderedAdditionalProduct, + OrderedAdditionalProductListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, + "OrderedAdditionalProducts for Rent listed successfully."); + } + + @Override + public DataResult calculateOrderedAdditionalPrice(int rentId) throws BusinessException { + + checkIfRentExistsIsSuccess(rentId); + + double orderedAdditionalProductsPrice = 0; + + List result = this.getByRentId(rentId).getData(); + List orderedAdditionalProductList = result.stream() + .map(orderedAdditionalProduct -> this.modelMapperService.forDto().map(orderedAdditionalProduct, + OrderedAdditionalProduct.class)) + .collect(Collectors.toList()); + + for (OrderedAdditionalProduct orderedAdditionalProduct : orderedAdditionalProductList) { + orderedAdditionalProductsPrice += (orderedAdditionalProduct.getOrderedAdditionalProductAmount() + * orderedAdditionalProduct.getAdditionalProduct().getAdditionalProductUnitPrice()); + } + + return new SuccessDataResult(orderedAdditionalProductsPrice, + "OrderedAdditionalProducts price calculated successfully."); + } + + @Override + public Result checkIfRentExists(int rentId) { + + if (this.orderedAdditionalProductDao.existsByRent_RentId(rentId)) { + return new SuccessResult("Rent is exists in OrderedAdditionalProduct."); + } + + return new ErrorResult("Rent is not exists in OrderedAdditionalProduct."); + } + + private void checkIfRentExistsIsSuccess(int rentId) throws BusinessException { + if(!checkIfRentExists(rentId).isSuccess()) { + throw new BusinessException("Rent is not exists in OrderedAdditionalProduct."); + } } private void checkIfOrderedAdditionalProductExists(int orderedAdditionalProductId) throws BusinessException { if (!this.orderedAdditionalProductDao.existsById(orderedAdditionalProductId)) { - throw new BusinessException("Ek urun bilgisi bulunamadi!"); + throw new BusinessException("OrderedAdditionalProduct is not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java index 920ae93..f9e8dc9 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -1,6 +1,7 @@ package com.turkcell.rentacar.business.concretes; import java.time.LocalDate; +import java.time.temporal.ChronoUnit; import java.util.List; import java.util.stream.Collectors; @@ -22,6 +23,7 @@ import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.RentDao; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; import com.turkcell.rentacar.entities.concretes.Rent; import com.turkcell.rentacar.exceptions.BusinessException; @@ -38,72 +40,135 @@ public RentManager(RentDao rentDao, ModelMapperService modelMapperService, this.rentDao = rentDao; this.modelMapperService = modelMapperService; this.carMaintenanceService = carMaintenanceService; + } @Override - public Result add(CreateRentRequest createRentRequest) throws BusinessException { + public Result addCorporateCustomer(CreateRentRequest createRentRequest) throws BusinessException { + checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); + Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); - checkIfReturnCityIsDifferentForRentalCity(rent); + checkIfRentReturnDateIsAfterNow(rent); + this.rentDao.save(rent); - return new SuccessResult("Kira bilgisi eklendi."); + + return new SuccessResult("Rent added successfully."); + } + + @Override + public Result addIndividualCustomer(CreateRentRequest createRentRequest) throws BusinessException { + + checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); + checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); + + Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); + + checkIfRentReturnDateIsAfterNow(rent); + + this.rentDao.save(rent); + + return new SuccessResult("Rent added successfully."); } @Override public Result update(UpdateRentRequest updateRentRequest) throws BusinessException { + Rent rent = this.modelMapperService.forRequest().map(updateRentRequest, Rent.class); + checkIfRentReturnDateIsAfterNow(rent); - checkIfReturnCityIsDifferentForRentalCity(rent); + this.rentDao.save(rent); - return new SuccessResult("Kira bilgisi guncellendi."); + return new SuccessResult("Rent updated successfully."); } @Override public Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException { + Rent rent = this.modelMapperService.forRequest().map(deleteRentRequest, Rent.class); + this.rentDao.delete(rent); - return new SuccessResult("Kira bilgisi silindi."); + + return new SuccessResult("Rent deleted successfully."); } @Override public DataResult> getAll() { + List result = this.rentDao.findAll(); List response = result.stream() .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Kira bilgileri listelendi."); + + return new SuccessDataResult>(response, "Rent listed successfully."); } @Override public DataResult getRentDetailsByRentId(int rentId) { + Rent result = this.rentDao.getById(rentId); RentGetDto response = this.modelMapperService.forDto().map(result, RentGetDto.class); - return new SuccessDataResult(response, "Kira bilgileri listelendi."); + + return new SuccessDataResult(response, "Rents listed successfully."); } @Override public DataResult> getByCarId(int carId) { + List result = this.rentDao.getByCar_CarId(carId); List response = result.stream() .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Araca ait kira bilgileri listelendi."); + + return new SuccessDataResult>(response, "Rent for Car listed successfuly."); } @Override public Result checkIfCarAlreadyInRent(int carId) throws BusinessException { for (Rent rent : this.rentDao.getByCar_CarId(carId)) { if (!rent.isRentStatus()) { - return new SuccessResult("Arac kirada degil!"); + return new SuccessResult("Car not in Rent!"); } } - return new ErrorResult("Arac kirada!"); + return new ErrorResult("Car in Rent!"); + } + + @Override + public DataResult> getOrderedAdditionalProductsByRentId(int rentId) { + + List result = this.rentDao.getOrderedAdditionalProductsByRentId(rentId); + + return new SuccessDataResult>(result, "OrderedAdditionalProducts for Rent listed successfully."); + } + + @Override + public DataResult calculateRentTotalPrice(int rentId) { + + Rent rent = this.rentDao.getById(rentId); + + long usageTime = ChronoUnit.DAYS.between(rent.getRentDate(), rent.getRentReturnDate()); + + double rentTotalPrice = (rent.getCar().getDailyPrice() * usageTime); + + return new SuccessDataResult<>(rentTotalPrice, "Rent total price calculated successfully."); + } + + @Override + public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId) { + + Rent rent = this.rentDao.getById(rentId); + + if (!rent.getRentalCity().equals(rent.getReturnCity())) { + return new SuccessResult("Cities are different!"); + } + + return new ErrorResult("Cities are same!"); } private void checkIfCarAlreadyInRentIsSuccess(int carId) throws BusinessException { if (this.rentDao.existsByCar_CarId(carId)) { if (!checkIfCarAlreadyInRent(carId).isSuccess()) { - throw new BusinessException("Arac kirada!"); + throw new BusinessException("Car in Rent!"); } } } @@ -111,7 +176,7 @@ private void checkIfCarAlreadyInRentIsSuccess(int carId) throws BusinessExceptio private void checkIfCarAlreadyInMaintenance(int carId) throws BusinessException { if (!checkIfCarExistInCarMaintenanceTable(carId)) { if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { - throw new BusinessException("Araba bakimda oldugundan kiralanamaz."); + throw new BusinessException("The Car cannot be rented as it is in maintenance."); } } } @@ -120,15 +185,6 @@ private boolean checkIfCarExistInCarMaintenanceTable(int id) { return this.carMaintenanceService.getByCarId(id).getData().isEmpty(); } - private void checkIfReturnCityIsDifferentForRentalCity(Rent rent) { - double additionalPrice = 750; - if (!rent.getRentalCity().equals(rent.getReturnCity())) { - rent.setAdditionalServicePrice(additionalPrice); - } else { - rent.setAdditionalServicePrice(0); - } - } - private void checkIfRentReturnDateIsAfterNow(Rent rent) { if (rent.getRentReturnDate() != null) { if (!rent.getRentReturnDate().isAfter(LocalDate.now())) { diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java new file mode 100644 index 0000000..fcbd9c4 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java @@ -0,0 +1,77 @@ +package com.turkcell.rentacar.business.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.UserService; +import com.turkcell.rentacar.business.requests.createRequests.CreateUserRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteUserRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.UserDao; +import com.turkcell.rentacar.entities.abstracts.User; +import com.turkcell.rentacar.exceptions.BusinessException; + +@Service +public class UserManager implements UserService { + + private UserDao userDao; + private ModelMapperService modelMapperService; + + @Autowired + public UserManager(UserDao userDao, ModelMapperService modelMapperService) { + this.userDao = userDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateUserRequest createUserRequest) throws BusinessException { + + existsByEmail(createUserRequest.getEmail()); + + User user = this.modelMapperService.forRequest().map(createUserRequest, User.class); + + this.userDao.save(user); + + return new SuccessResult("User added successfully."); + } + + @Override + public Result update(UpdateUserRequest updateUserRequest) throws BusinessException { + + checkIfUserExists(updateUserRequest.getUserId()); + + User user = this.modelMapperService.forRequest().map(updateUserRequest, User.class); + + this.userDao.save(user); + + return new SuccessResult("User updated successfully."); + } + + @Override + public Result delete(DeleteUserRequest deleteUserRequest) throws BusinessException { + + checkIfUserExists(deleteUserRequest.getUserId()); + + User user = this.modelMapperService.forRequest().map(deleteUserRequest, User.class); + + this.userDao.delete(user); + + return new SuccessResult("User deleted successfully."); + } + + private void checkIfUserExists(int userId) throws BusinessException { + if (!this.userDao.existsById(userId)) { + throw new BusinessException("User not found!"); + } + } + + private void existsByEmail(String email) throws BusinessException { + if (this.userDao.existsByEmail(email)) { + throw new BusinessException("Email is already exists!"); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java index a561c0d..a8fac3f 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java @@ -10,11 +10,35 @@ @AllArgsConstructor @NoArgsConstructor public class RentGetDto { + private LocalDate rentDate; + private LocalDate rentReturnDate; + private boolean rentStatus; + private String brandName; + + private double dailyPrice; + private String modelYear; + private String colorName; + + private double additionalServicePrice; + + private String rentalCity; + + private String returnCity; + + private int orderedAdditionalProductId; + + private int orderedAdditionalProductAmount; + + private int additionalProductId; + + private double additionalProductUnitPrice; + + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/InvioceListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/InvioceListDto.java new file mode 100644 index 0000000..6978fbc --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/InvioceListDto.java @@ -0,0 +1,26 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import java.time.LocalDate; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InvioceListDto { + + private LocalDate invoiceCreateDate; + + private double totalPrice; + + private LocalDate rentDate; + + private LocalDate rentReturnDate; + + private String rentalCity; + + private String returnCity; + + private String email; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java index eec41e8..55eaa94 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java @@ -9,8 +9,15 @@ @NoArgsConstructor public class OrderedAdditionalProductListDto { - private String brandName; - + + private int orderedAdditionalProductAmount; + + private int additionalProductId; private String additionalProductName; + private double additionalProductUnitPrice; + + + + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCorporateCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCorporateCustomerRequest.java new file mode 100644 index 0000000..eab44d2 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCorporateCustomerRequest.java @@ -0,0 +1,34 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Size; + +import com.sun.istack.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateCorporateCustomerRequest { + + @NotNull + @Size(min = 2, max = 30) + private String companyName; + + @NotNull + @Size(min = 2, max = 30) + private String taxNumber; + + @NotNull + @Size(min = 2, max = 20) + @Email(message = "This value is not email!") + private String email; + + @NotNull + @Size(min = 2, max = 30) + private String password; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCustomerRequest.java new file mode 100644 index 0000000..7866493 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCustomerRequest.java @@ -0,0 +1,5 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +public class CreateCustomerRequest { + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java new file mode 100644 index 0000000..4a13bc0 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java @@ -0,0 +1,37 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Size; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateIndividualCustomerRequest { + + @NotNull + @Size(min = 2, max = 20) + private String firstName; + + @NotNull + @Size(min = 2, max = 20) + private String lastName; + + @NotNull + @Size(min = 2, max = 11) + private String nationalIdentity; + + @NotNull + @Size(min = 2, max = 20) + @Email(message = "This value is not email!") + private String email; + + @NotNull + @Size(min = 2, max = 30) + private String password; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java new file mode 100644 index 0000000..ceccdc4 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateInvoiceRequest { + + @NotNull + @Min(1) + private int userId; + + @NotNull + @Min(1) + private int rentId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java index 0c30678..c4f1b61 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java @@ -32,4 +32,8 @@ public class CreateRentRequest { @Min(1) private int returnCityId; + @NotNull + @Min(1) + private int userId; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateUserRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateUserRequest.java new file mode 100644 index 0000000..5b27773 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateUserRequest.java @@ -0,0 +1,25 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Size; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateUserRequest { + + @NotNull + @Size(min = 2, max = 20) + @Email(message = "This value is not email!") + private String email; + + @NotNull + @Size(min = 2, max = 30) + private String password; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCorporateCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCorporateCustomerRequest.java new file mode 100644 index 0000000..4653196 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCorporateCustomerRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; + +import com.sun.istack.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteCorporateCustomerRequest { + + @NotNull + @Min(1) + private int userId; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCustomerRequest.java new file mode 100644 index 0000000..6379da2 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCustomerRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteCustomerRequest { + + @NotNull + @Min(1) + private int userId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteIndividualCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteIndividualCustomerRequest.java new file mode 100644 index 0000000..1969e1c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteIndividualCustomerRequest.java @@ -0,0 +1,20 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; + +import com.sun.istack.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteIndividualCustomerRequest { + + @NotNull + @Min(1) + private int userId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteInvoiceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteInvoiceRequest.java new file mode 100644 index 0000000..7ea704f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteInvoiceRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteInvoiceRequest { + + @NotNull + @Min(1) + private int invoiceId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteUserRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteUserRequest.java new file mode 100644 index 0000000..ef231db --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteUserRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteUserRequest { + + @NotNull + @Min(1) + private int userId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCorporateCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCorporateCustomerRequest.java new file mode 100644 index 0000000..ffad893 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCorporateCustomerRequest.java @@ -0,0 +1,39 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Min; +import javax.validation.constraints.Size; + +import com.sun.istack.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCorporateCustomerRequest { + + @NotNull + @Min(1) + private int userId; + + @NotNull + @Size(min = 2, max = 30) + private String companyName; + + @NotNull + @Size(min = 2, max = 30) + private String taxNumber; + + @NotNull + @Size(min = 2, max = 20) + @Email(message = "This value is not email!") + private String email; + + @NotNull + @Size(min = 2, max = 30) + private String password; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCustomerRequest.java new file mode 100644 index 0000000..d5877d8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCustomerRequest.java @@ -0,0 +1,18 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCustomerRequest { + + @NotNull + @Min(1) + private int userId; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateIndividualCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateIndividualCustomerRequest.java new file mode 100644 index 0000000..0c1a461 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateIndividualCustomerRequest.java @@ -0,0 +1,43 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Min; +import javax.validation.constraints.Size; + +import com.sun.istack.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateIndividualCustomerRequest { + + @NotNull + @Min(1) + private int userId; + + @NotNull + @Size(min = 2, max = 20) + private String firstName; + + @NotNull + @Size(min = 2, max = 20) + private String lastName; + + @NotNull + @Size(min = 2, max = 11) + private String nationalIdentity; + + @NotNull + @Size(min = 2, max = 20) + @Email(message = "This value is not email!") + private String email; + + @NotNull + @Size(min = 2, max = 30) + private String password; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java new file mode 100644 index 0000000..5d613be --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java @@ -0,0 +1,27 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateInvoiceRequest { + + @NotNull + @Min(1) + private int invoiceId; + + @NotNull + @Min(1) + private int rentId; + + @NotNull + @Min(1) + private int userId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateUserRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateUserRequest.java new file mode 100644 index 0000000..a33a7a3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateUserRequest.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateUserRequest { + + @NotNull + @Min(1) + private int userId; + + @NotNull + @Size(min = 2, max = 20) + @Email(message = "This value is not email!") + private String email; + + @NotNull + @Size(min = 2, max = 30) + private String password; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java new file mode 100644 index 0000000..201111f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java @@ -0,0 +1,11 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.CorporateCustomer; + +public interface CorporateCustomerDao extends JpaRepository { + + boolean existsByUserId(int userId); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CustomerDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CustomerDao.java new file mode 100644 index 0000000..9fb1c56 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CustomerDao.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.Customer; + +public interface CustomerDao extends JpaRepository{ + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/IndividualCustomerDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/IndividualCustomerDao.java new file mode 100644 index 0000000..e7a4681 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/IndividualCustomerDao.java @@ -0,0 +1,11 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.IndividualCustomer; + +public interface IndividualCustomerDao extends JpaRepository{ + + boolean existsByUserId(int userId); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java new file mode 100644 index 0000000..086a564 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java @@ -0,0 +1,26 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import java.time.LocalDate; +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.turkcell.rentacar.entities.concretes.Invoice; + +@Repository +public interface InvoiceDao extends JpaRepository { + + Invoice getByRent_RentId(int rentId); + + boolean existsByRent_RentId(int rentId); + + boolean existsByUser_UserId(int userId); + + List getByUser_UserId(int userId); + + // @Query("FROM Invoice i WHERE i.invoiceCreateDate BETWEEN ?1 AND ?2") + @Query("SELECT i FROM Invoice i WHERE i.invoiceCreateDate BETWEEN :startDate AND :endDate") + List getAllByBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate); +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java index 7f5a36e..5090aad 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java @@ -1,9 +1,15 @@ package com.turkcell.rentacar.dataAccess.abstracts; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; -public interface OrderedAdditionalProductDao extends JpaRepository{ +public interface OrderedAdditionalProductDao extends JpaRepository { + + List getByRent_RentId(int rentId); + + boolean existsByRent_RentId(int rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java index bb68067..ec7de59 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java @@ -4,9 +4,12 @@ import org.springframework.data.jpa.repository.JpaRepository; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; import com.turkcell.rentacar.entities.concretes.Rent; public interface RentDao extends JpaRepository { + + List getOrderedAdditionalProductsByRentId(int rentId); boolean existsByCar_CarId(int carId); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java new file mode 100644 index 0000000..a57d9ad --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java @@ -0,0 +1,11 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.abstracts.User; + +public interface UserDao extends JpaRepository { + + boolean existsByEmail(String email); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java new file mode 100644 index 0000000..8690d98 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java @@ -0,0 +1,47 @@ +package com.turkcell.rentacar.entities.abstracts; + +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.turkcell.rentacar.entities.concretes.Invoice; +import com.turkcell.rentacar.entities.concretes.Rent; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "users") +@Inheritance(strategy = InheritanceType.JOINED) +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "user_id") + private int userId; + + @Column(name = "email") + private String email; + + @Column(name = "password") + private String password; + + @OneToMany(mappedBy = "user") + private List rents; + + @OneToMany(mappedBy = "user") + private List invoices; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CorporateCustomer.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CorporateCustomer.java new file mode 100644 index 0000000..569199f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CorporateCustomer.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar.entities.concretes; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Entity +@Data +@EqualsAndHashCode(callSuper = false) +@AllArgsConstructor +@NoArgsConstructor +@PrimaryKeyJoinColumn(name = "user_id") +@Table(name = "corporate_customers") +public class CorporateCustomer extends Customer { + + @Column(name = "company_name") + private String companyName; + + @Column(name = "tax_number") + private String taxNumber; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java new file mode 100644 index 0000000..53c554f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java @@ -0,0 +1,21 @@ +package com.turkcell.rentacar.entities.concretes; + +import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; + +import com.turkcell.rentacar.entities.abstracts.User; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Entity +@Data +@EqualsAndHashCode(callSuper = false) +@AllArgsConstructor +@PrimaryKeyJoinColumn(name = "user_id") +@Table(name = "customers") +public class Customer extends User { + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/IndividualCustomer.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/IndividualCustomer.java new file mode 100644 index 0000000..53db272 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/IndividualCustomer.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.entities.concretes; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Entity +@Data +@EqualsAndHashCode(callSuper = false) +@AllArgsConstructor +@NoArgsConstructor +@PrimaryKeyJoinColumn(name = "user_id") +@Table(name = "individual_customers") +public class IndividualCustomer extends Customer { + + @Column(name = "fist_name") + private String firstName; + + @Column(name = "last_name") + private String lastName; + + @Column(name = "national_identity") + private String nationalIdentity; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java new file mode 100644 index 0000000..7ca290c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java @@ -0,0 +1,46 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.time.LocalDate; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import com.turkcell.rentacar.entities.abstracts.User; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "invoices") +public class Invoice { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "invoice_id") + private int invoiceId; + + @Column(name = "invoice_create_date") + private LocalDate invoiceCreateDate = LocalDate.now(); + + @Column(name = "total_price") + private double totalPrice; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "rent_id") + private Rent rent; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java index c99d155..b3b8151 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -8,13 +8,13 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; +import com.turkcell.rentacar.entities.abstracts.User; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -24,7 +24,6 @@ @AllArgsConstructor @NoArgsConstructor @Table(name = "rents") -@Inheritance(strategy = InheritanceType.JOINED) public class Rent { @Id @@ -44,9 +43,6 @@ public class Rent { @ManyToOne @JoinColumn(name = "car_id") private Car car; - - @Column(name = "additional_service_price") - private double additionalServicePrice; @ManyToOne @JoinColumn(name = "rental_city_id") @@ -59,4 +55,11 @@ public class Rent { @OneToMany(mappedBy = "rent") private List orderedAdditionalProducts; + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @OneToMany(mappedBy = "rent") + private List invoices; + } From b1a1b5fc6ebc5109bd60b799ad0b73a4bbde3cf1 Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Thu, 17 Mar 2022 00:20:11 +0300 Subject: [PATCH 5/7] Added CarDamage Class 17/03/2022 Added CarDamage Class Added CarIsAlreadyInMaintenanceException Added CarIsAlreadyInRentException Added EntityAlreadyExistsException Added EntityNotFoundException Added NationalIdentityNotValidException Added ReturnDateIsAfterNowException Added NationalIdentityService --- .../rentacar/RentacarApplication.java | 2 +- .../AdditionalProductsController.java | 12 ++- .../api/controllers/BrandsController.java | 9 +- .../api/controllers/CarDamagesController.java | 55 ++++++++++++ .../CarMaintenancesController.java | 13 ++- .../api/controllers/CarsController.java | 24 ++++-- .../api/controllers/ColorsController.java | 9 +- .../CorporateCustomersController.java | 10 +-- .../api/controllers/CustomersController.java | 30 ++----- .../IndividualCustomersController.java | 10 +-- .../api/controllers/InvoicesController.java | 7 +- .../OrderedAdditionalProductsController.java | 22 ++--- .../api/controllers/RentsController.java | 20 +++-- .../api/controllers/UsersController.java | 18 +--- .../abstracts/AdditionalProductService.java | 7 +- .../business/abstracts/BrandService.java | 7 +- .../business/abstracts/CarDamageService.java | 22 +++++ .../abstracts/CarMaintenanceService.java | 17 ++-- .../business/abstracts/CarService.java | 14 +-- .../business/abstracts/ColorService.java | 7 +- .../abstracts/CorporateCustomerService.java | 7 +- .../business/abstracts/CustomerService.java | 15 ++-- .../abstracts/IndividualCustomerService.java | 7 +- .../business/abstracts/InvoiceService.java | 11 ++- .../OrderedAdditionalProductService.java | 9 +- .../business/abstracts/RentService.java | 20 +++-- .../business/abstracts/UserService.java | 9 +- .../concretes/AdditionalProductManager.java | 48 ++++++----- .../business/concretes/BrandManager.java | 17 ++-- .../business/concretes/CarDamageManager.java | 74 ++++++++++++++++ .../concretes/CarMaintenanceManager.java | 68 ++++++++------- .../business/concretes/CarManager.java | 86 +++++++++++-------- .../business/concretes/ColorManager.java | 17 ++-- .../concretes/CorporateCustomerManager.java | 22 +++-- .../business/concretes/CustomerManager.java | 53 +++--------- .../concretes/IndividualCustomerManager.java | 38 ++++++-- .../business/concretes/InvoiceManager.java | 28 +++--- .../OrderedAdditionalProductManager.java | 30 +++---- .../business/concretes/RentManager.java | 40 ++++++--- .../business/concretes/UserManager.java | 41 ++------- .../business/dtos/getDtos/RentGetDto.java | 8 +- .../dtos/listDtos/CarDamageListDto.java | 19 ++++ .../dtos/listDtos/CustomerListDto.java | 18 ++++ .../CreateCarDamageRequest.java | 27 ++++++ .../CreateIndividualCustomerRequest.java | 1 + .../createRequests/CreateRentRequest.java | 3 + .../DeleteCarDamageRequest.java | 19 ++++ .../UpdateCarDamageRequest.java | 28 ++++++ .../UpdateCarKilometerInfoRequest.java | 24 ++++++ .../UpdateEndedKilometerInfoRequest.java | 24 ++++++ .../updateRequests/UpdateRentRequest.java | 3 + .../dataAccess/abstracts/CarDamageDao.java | 9 ++ .../rentacar/dataAccess/abstracts/CarDao.java | 12 ++- .../abstracts/CorporateCustomerDao.java | 2 + .../abstracts/IndividualCustomerDao.java | 6 +- .../dataAccess/abstracts/RentDao.java | 10 ++- .../rentacar/entities/concretes/Car.java | 9 +- .../entities/concretes/CarDamage.java | 34 ++++++++ .../rentacar/entities/concretes/Customer.java | 8 ++ .../rentacar/entities/concretes/Rent.java | 6 ++ .../businessExceptions/BusinessException.java | 13 +++ .../CarIsAlreadyInMaintenanceException.java | 9 ++ .../CarIsAlreadyInRentException.java | 9 ++ .../EntityAlreadyExistsException.java | 9 ++ .../EntityNotFoundException.java | 8 ++ .../NationalIdentityNotValidException.java | 8 ++ .../ReturnDateIsAfterNowException.java | 9 ++ .../ValidationExceptionHandling.java | 28 ++++++ .../FakeNationalIdentityManager.java | 13 +++ .../NationalIdentityManager.java | 35 ++++++++ .../NationalIdentityService.java | 7 ++ 71 files changed, 940 insertions(+), 433 deletions(-) create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarDamagesController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarDamageService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarDamageListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CustomerListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarDamageRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarDamageRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarDamageRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarKilometerInfoRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDamageDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarDamage.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/BusinessException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInMaintenanceException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInRentException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityAlreadyExistsException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityNotFoundException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/NationalIdentityNotValidException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/ReturnDateIsAfterNowException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/globalExceptions/ValidationExceptionHandling.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/FakeNationalIdentityManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityService.java diff --git a/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java index 202fd1a..8610d2d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import com.turkcell.rentacar.core.utilities.results.ErrorDataResult; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.BusinessException; import springfox.documentation.swagger2.annotations.EnableSwagger2; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java index fdfcbf0..70def4a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java @@ -2,6 +2,8 @@ import java.util.List; +import javax.validation.Valid; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -18,7 +20,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateAdditionalProductRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/additionalProducts") @@ -32,20 +33,17 @@ public AdditionalProductsController(AdditionalProductService additionalProductSe } @PostMapping("/add") - public Result add(@RequestBody CreateAdditionalProductRequest createAdditionalProductRequest) - throws BusinessException { + public Result add(@RequestBody @Valid CreateAdditionalProductRequest createAdditionalProductRequest) { return this.additionalProductService.add(createAdditionalProductRequest); } @PutMapping("/update") - public Result update(@RequestBody UpdateAdditionalProductRequest updateAdditionalProductRequest) - throws BusinessException { + public Result update(@RequestBody @Valid UpdateAdditionalProductRequest updateAdditionalProductRequest) { return this.additionalProductService.update(updateAdditionalProductRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteAdditionalProductRequest deleteAdditionalProductRequest) - throws BusinessException { + public Result delete(@RequestBody @Valid DeleteAdditionalProductRequest deleteAdditionalProductRequest) { return this.additionalProductService.delete(deleteAdditionalProductRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java index e071a52..f3ae8bf 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java @@ -7,12 +7,13 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; import org.springframework.web.bind.annotation.*; import java.util.List; +import javax.validation.Valid; + @RestController @RequestMapping("/api/brands") public class BrandsController { @@ -29,7 +30,7 @@ public DataResult> getAll() { } @PostMapping("/add") - public Result save(@RequestBody CreateBrandRequest createBrandRequest) throws BusinessException { + public Result save(@RequestBody @Valid CreateBrandRequest createBrandRequest) { return this.brandService.add(createBrandRequest); } @@ -39,12 +40,12 @@ public DataResult getById(@RequestParam int id) { } @PostMapping("/update") - public Result update(@RequestBody UpdateBrandRequest updateBrandRequest) throws BusinessException { + public Result update(@RequestBody @Valid UpdateBrandRequest updateBrandRequest) { return this.brandService.update(updateBrandRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteBrandRequest deleteBrandRequest) throws BusinessException { + public Result delete(@RequestBody @Valid DeleteBrandRequest deleteBrandRequest) { return this.brandService.delete(deleteBrandRequest); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarDamagesController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarDamagesController.java new file mode 100644 index 0000000..cac3eb5 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarDamagesController.java @@ -0,0 +1,55 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.CarDamageService; +import com.turkcell.rentacar.business.dtos.listDtos.CarDamageListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarDamageRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarDamageRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarDamageRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +@RestController +@RequestMapping("/api/carDamages") +public class CarDamagesController { + + private CarDamageService carDamageService; + + @Autowired + public CarDamagesController(CarDamageService carDamageService) { + this.carDamageService = carDamageService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateCarDamageRequest createCarDamageRequest) { + return this.carDamageService.add(createCarDamageRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateCarDamageRequest updateCarDamageRequest) { + return this.carDamageService.update(updateCarDamageRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteCarDamageRequest deleteCarDamageRequest) { + return this.carDamageService.delete(deleteCarDamageRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.carDamageService.getAll(); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java index f4551df..2287938 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java @@ -2,6 +2,8 @@ import java.util.List; +import javax.validation.Valid; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -20,7 +22,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarMaintenanceRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/carMaintenances") @@ -45,24 +46,22 @@ public DataResult getCarMaintenanceDetailsByCarMaintenance } @PostMapping("/add") - public Result add(@RequestBody CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException { + public Result add(@RequestBody @Valid CreateCarMaintenanceRequest createCarMaintenanceRequest) { return this.carMaintenanceService.add(createCarMaintenanceRequest); } @PutMapping("/update") - public Result update(@RequestBody UpdateCarMaintenanceRequest updateCarMaintenanceRequest) - throws BusinessException { + public Result update(@RequestBody @Valid UpdateCarMaintenanceRequest updateCarMaintenanceRequest) { return this.carMaintenanceService.update(updateCarMaintenanceRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) - throws BusinessException { + public Result delete(@RequestBody @Valid DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) { return this.carMaintenanceService.delete(deleteCarMaintenanceRequest); } @GetMapping("/checkIfCarIsAlreadyInMaintenance") - public Result checkIfCarIsAlreadyInMaintenance(@RequestParam int carId) throws BusinessException { + public Result checkIfCarIsAlreadyInMaintenance(@RequestParam int carId) { return this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java index a4b110b..441fc55 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java @@ -3,6 +3,7 @@ import java.util.List; import javax.transaction.Transactional; +import javax.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -17,11 +18,11 @@ import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/cars") @@ -30,7 +31,6 @@ public class CarsController { private CarService carService; public CarsController(CarService carService) { - super(); this.carService = carService; } @@ -45,29 +45,35 @@ public DataResult getById(@RequestParam(value = "id") int id) { } @PostMapping("/add") - public Result add(@RequestBody CreateCarRequest createCarRequest) throws BusinessException { + public Result add(@RequestBody @Valid CreateCarRequest createCarRequest) { return this.carService.add(createCarRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteCarRequest deleteCarRequest) throws BusinessException{ + public Result delete(@RequestBody @Valid DeleteCarRequest deleteCarRequest) { return this.carService.delete(deleteCarRequest); } @PostMapping("/update") - public Result update(@RequestBody UpdateCarRequest updateCarRequest) throws BusinessException { + public Result update(@RequestBody @Valid UpdateCarRequest updateCarRequest) { return this.carService.update(updateCarRequest); } @Transactional - @PostMapping("updateColor") - public Result updateColor(@RequestBody UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException { + @PostMapping("/updateKilometerInfo") + public Result updateKilometerInfo(@RequestBody @Valid UpdateCarKilometerInfoRequest updateCarKilometerInfoRequest) { + return this.carService.updateKilometerInfo(updateCarKilometerInfoRequest); + } + + @Transactional + @PostMapping("/updateColor") + public Result updateColor(@RequestBody @Valid UpdateColorToCarRequest updateColorToCarRequest) { return this.carService.updateColor(updateColorToCarRequest); } @Transactional - @PostMapping("updateBrand") - public Result updateBrand(@RequestBody UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException { + @PostMapping("/updateBrand") + public Result updateBrand(@RequestBody @Valid UpdateBrandToCarRequest updateBrandToCarRequest) { return this.carService.updateBrand(updateBrandToCarRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java index 2776521..067b50d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java @@ -7,12 +7,13 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; import org.springframework.web.bind.annotation.*; import java.util.List; +import javax.validation.Valid; + @RestController @RequestMapping("/api/colors") public class ColorsController { @@ -29,7 +30,7 @@ public DataResult> getAll() { } @PostMapping("/add") - public void save(@RequestBody CreateColorRequest createColorRequest) throws BusinessException { + public void save(@RequestBody @Valid CreateColorRequest createColorRequest) { this.colorService.add(createColorRequest); } @@ -39,12 +40,12 @@ public DataResult getById(@RequestParam int id) { } @PostMapping("/update") - public Result update(@RequestBody UpdateColorRequest updateColorRequest) throws BusinessException{ + public Result update(@RequestBody @Valid UpdateColorRequest updateColorRequest) { return this.colorService.update(updateColorRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody DeleteColorRequest deleteColorRequest) throws BusinessException{ + public Result delete(@RequestBody @Valid DeleteColorRequest deleteColorRequest) { return this.colorService.delete(deleteColorRequest); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java index acc8344..1f682f6 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java @@ -15,7 +15,6 @@ import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCorporateCustomerRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateCorporateCustomerRequest; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/corporateCustomers") @@ -29,20 +28,17 @@ public CorporateCustomersController(CorporateCustomerService corporateCustomerSe } @PostMapping("/add") - Result add(@RequestBody @Valid CreateCorporateCustomerRequest createCorporateCustomerRequest) - throws BusinessException { + Result add(@RequestBody @Valid CreateCorporateCustomerRequest createCorporateCustomerRequest) { return this.corporateCustomerService.add(createCorporateCustomerRequest); } @PutMapping("/update") - Result update(@RequestBody @Valid UpdateCorporateCustomerRequest updateCorporateCustomerRequest) - throws BusinessException { + Result update(@RequestBody @Valid UpdateCorporateCustomerRequest updateCorporateCustomerRequest) { return this.corporateCustomerService.update(updateCorporateCustomerRequest); } @DeleteMapping("/delete") - Result delete(@RequestBody @Valid DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) - throws BusinessException { + Result delete(@RequestBody @Valid DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) { return this.corporateCustomerService.delete(deleteCorporateCustomerRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java index 26f7f85..eaded18 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java @@ -1,21 +1,15 @@ package com.turkcell.rentacar.api.controllers; -import javax.validation.Valid; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.turkcell.rentacar.business.abstracts.CustomerService; -import com.turkcell.rentacar.business.requests.createRequests.CreateCustomerRequest; -import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCustomerRequest; -import com.turkcell.rentacar.business.requests.updateRequests.UpdateCustomerRequest; -import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.business.dtos.listDtos.CustomerListDto; +import com.turkcell.rentacar.core.utilities.results.DataResult; @RestController @RequestMapping("/api/customers") @@ -28,19 +22,9 @@ public CustomersController(CustomerService customerService) { this.customerService = customerService; } - @PostMapping("/add") - public Result add(@RequestBody @Valid CreateCustomerRequest createCustomerRequest) throws BusinessException { - return this.customerService.add(createCustomerRequest); - } - - @PutMapping("/update") - public Result update(@RequestBody @Valid UpdateCustomerRequest updateCustomerRequest) throws BusinessException { - return this.customerService.update(updateCustomerRequest); - } - - @DeleteMapping("/delete") - public Result delete(@RequestBody @Valid DeleteCustomerRequest deleteCustomerRequest) throws BusinessException { - return this.customerService.delete(deleteCustomerRequest); + @GetMapping("/getAll") + public DataResult> getAll() { + return this.customerService.getAll(); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java index bbc934b..987961a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java @@ -16,7 +16,6 @@ import com.turkcell.rentacar.business.abstracts.IndividualCustomerService; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/individualCustomers") @@ -30,20 +29,17 @@ public IndividualCustomersController(IndividualCustomerService individualCustome } @PostMapping("/add") - public Result add(@RequestBody @Valid CreateIndividualCustomerRequest createIndividualCustomerRequest) - throws BusinessException { + public Result add(@RequestBody @Valid CreateIndividualCustomerRequest createIndividualCustomerRequest) { return this.individualCustomerService.add(createIndividualCustomerRequest); } @PutMapping("/update") - public Result update(@RequestBody @Valid UpdateIndividualCustomerRequest updateIndividualCustomerRequest) - throws BusinessException { + public Result update(@RequestBody @Valid UpdateIndividualCustomerRequest updateIndividualCustomerRequest) { return this.individualCustomerService.update(updateIndividualCustomerRequest); } @DeleteMapping("/delete") - public Result delete(@RequestBody @Valid DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) - throws BusinessException { + public Result delete(@RequestBody @Valid DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) { return this.individualCustomerService.delete(deleteIndividualCustomerRequest); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java index 81315ac..3146aec 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java @@ -20,7 +20,6 @@ import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/invoices") @@ -34,7 +33,7 @@ public InvoicesController(InvoiceService invoicesService) { } @PostMapping("/add") - public Result add(@RequestBody @Valid CreateInvoiceRequest createInvoiceRequest) throws BusinessException { + public Result add(@RequestBody @Valid CreateInvoiceRequest createInvoiceRequest) { return this.invoicesService.add(createInvoiceRequest); } @@ -44,7 +43,7 @@ public DataResult> getAll() { } @GetMapping("/getByRentId") - public DataResult getByRentId(@RequestParam int rentId) throws BusinessException { + public DataResult getByRentId(@RequestParam int rentId) { return this.invoicesService.getByRentId(rentId); } @@ -54,7 +53,7 @@ public DataResult> getOrderedAdditionalProductByR } @GetMapping("/getByUserId") - public DataResult> getByUserId(@RequestParam int userId) throws BusinessException { + public DataResult> getByUserId(@RequestParam int userId) { return this.invoicesService.getByUserId(userId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java index ef15d8d..8c3e5b5 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java @@ -2,12 +2,16 @@ import java.util.List; +import javax.validation.Valid; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; @@ -17,7 +21,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateOrderedAdditionalProductRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/orderedAdditionalProducts") @@ -31,20 +34,19 @@ public OrderedAdditionalProductsController(OrderedAdditionalProductService order } @PostMapping("/add") - public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) - throws BusinessException { + public Result add(@RequestBody @Valid CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) { return this.orderedAdditionalProductService.add(createOrderedAdditionalProductRequest); } @PutMapping("/update") - public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) - throws BusinessException { + public Result update( + @RequestBody @Valid UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) { return this.orderedAdditionalProductService.update(updateOrderedAdditionalProductRequest); } @DeleteMapping("/delete") - public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) - throws BusinessException { + public Result delete( + @RequestBody @Valid DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) { return this.orderedAdditionalProductService.delete(deleteOrderedAdditionalProductRequest); } @@ -54,17 +56,17 @@ public DataResult> getAll() { } @GetMapping("/checkIfRentExists") - public Result checkIfRentExists(int rentId) { + public Result checkIfRentExists(@RequestParam int rentId) { return this.orderedAdditionalProductService.checkIfRentExists(rentId); } @GetMapping("/getByRentId") - public DataResult> getByRentId(int rentId) { + public DataResult> getByRentId(@RequestParam int rentId) { return this.orderedAdditionalProductService.getByRentId(rentId); } @GetMapping("/calculateOrderedAdditionalPrice") - public DataResult calculateOrderedAdditionalPrice(int rentId) throws BusinessException { + public DataResult calculateOrderedAdditionalPrice(@RequestParam int rentId) { return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java index 40c6a29..870a074 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java @@ -2,6 +2,7 @@ import java.util.List; +import javax.transaction.Transactional; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -19,10 +20,10 @@ import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateEndedKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/rents") @@ -36,23 +37,30 @@ public RentsController(RentService rentService) { } @PostMapping("/addCorporateCustomer") - public Result addCorporateCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) throws BusinessException { + public Result addCorporateCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) { return this.rentService.addCorporateCustomer(createRentRequest); } @PostMapping("/addIndividualCustomer") - public Result addIndividualCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) throws BusinessException { + public Result addIndividualCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) { return this.rentService.addIndividualCustomer(createRentRequest); } @PutMapping("/update") - public Result update(@RequestBody @Valid UpdateRentRequest updateRentRequest) throws BusinessException { + public Result update(@RequestBody @Valid UpdateRentRequest updateRentRequest) { return this.rentService.update(updateRentRequest); } + @Transactional + @PostMapping("/updateEndedKilometer") + public Result updateEndedKilometer( + @RequestBody @Valid UpdateEndedKilometerInfoRequest updateEndedKilometerInfoRequest) { + return this.rentService.updateEndedKilometer(updateEndedKilometerInfoRequest); + } + @DeleteMapping("/delete") - public Result delete(@RequestBody @Valid DeleteRentRequest deleteRentRequest) throws BusinessException { + public Result delete(@RequestBody @Valid DeleteRentRequest deleteRentRequest) { return this.rentService.delete(deleteRentRequest); } @@ -67,7 +75,7 @@ public DataResult getRentDetailsByRentId(@RequestParam int rentId) { } @GetMapping("/checkIfCarAlreadyInRent") - public Result checkIfCarAlreadyInRent(@RequestParam int carId) throws BusinessException { + public Result checkIfCarAlreadyInRent(@RequestParam int carId) { return this.rentService.checkIfCarAlreadyInRent(carId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java index 5bf0274..433879b 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java @@ -3,19 +3,14 @@ import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.turkcell.rentacar.business.abstracts.UserService; -import com.turkcell.rentacar.business.requests.createRequests.CreateUserRequest; -import com.turkcell.rentacar.business.requests.deleteRequests.DeleteUserRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; @RestController @RequestMapping("/api/users") @@ -28,19 +23,8 @@ public UsersController(UserService userService) { this.userService = userService; } - @PostMapping("/add") - public Result add(@RequestBody @Valid CreateUserRequest createUserRequest) throws BusinessException { - return this.userService.add(createUserRequest); - } - @PutMapping("/update") - public Result update(@RequestBody @Valid UpdateUserRequest updateUserRequest) throws BusinessException { + public Result update(@RequestBody @Valid UpdateUserRequest updateUserRequest) { return this.userService.update(updateUserRequest); } - - @DeleteMapping("/delete") - public Result delete(@RequestBody @Valid DeleteUserRequest deleteUserRequest) throws BusinessException { - return this.userService.delete(deleteUserRequest); - } - } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java index cc087af..502ca7b 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java @@ -8,15 +8,14 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateAdditionalProductRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface AdditionalProductService { - Result add(CreateAdditionalProductRequest createAdditionalProductRequest) throws BusinessException; + Result add(CreateAdditionalProductRequest createAdditionalProductRequest); - Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) throws BusinessException; + Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest); - Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) throws BusinessException; + Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest); DataResult> getAll(); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java index b813a80..607e6ed 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java @@ -6,7 +6,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; import java.util.List; @@ -15,10 +14,10 @@ public interface BrandService { DataResult getById(int id); - Result add(CreateBrandRequest createBrandRequest) throws BusinessException; + Result add(CreateBrandRequest createBrandRequest); - Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException; + Result update(UpdateBrandRequest updateBrandRequest); - Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessException; + Result delete(DeleteBrandRequest deleteBrandRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarDamageService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarDamageService.java new file mode 100644 index 0000000..ef838f1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarDamageService.java @@ -0,0 +1,22 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.listDtos.CarDamageListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarDamageRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarDamageRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarDamageRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +public interface CarDamageService { + + Result add(CreateCarDamageRequest createCarDamageRequest); + + Result update(UpdateCarDamageRequest updateCarDamageRequest); + + Result delete(DeleteCarDamageRequest deleteCarDamageRequest); + + DataResult> getAll(); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java index f9fc41b..e1a849d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java @@ -9,22 +9,21 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarMaintenanceRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface CarMaintenanceService { - + DataResult> getAll(); - + DataResult> getByCarId(int carId); - + DataResult getCarMaintenanceDetailsByCarMaintenanceId(int carMaintenanceId); - Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException; + Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest); + + Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest); - Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) throws BusinessException; + Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest); - Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) throws BusinessException; - - Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessException; + Result checkIfCarIsAlreadyInMaintenance(int carId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java index 97132e4..9b0702d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java @@ -6,11 +6,11 @@ import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface CarService { @@ -22,15 +22,17 @@ public interface CarService { DataResult> getAllSorted(boolean sort); - Result add(CreateCarRequest createCarRequest) throws BusinessException; + Result add(CreateCarRequest createCarRequest); - Result update(UpdateCarRequest updateCarRequest) throws BusinessException; + Result update(UpdateCarRequest updateCarRequest); - Result delete(DeleteCarRequest deleteCarRequest) throws BusinessException; + Result updateKilometerInfo(UpdateCarKilometerInfoRequest updateCarKilometerInfoRequest); - Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException; + Result delete(DeleteCarRequest deleteCarRequest); - Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException; + Result updateColor(UpdateColorToCarRequest updateColorToCarRequest); + + Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest); DataResult> findByDailyPriceLessThanEqual(double dailyPrice); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java index d2c0d8c..897d35a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java @@ -6,7 +6,6 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; import java.util.List; @@ -15,9 +14,9 @@ public interface ColorService { DataResult getById(int id); - Result add(CreateColorRequest createColorRequest) throws BusinessException; + Result add(CreateColorRequest createColorRequest); - Result update(UpdateColorRequest updateColorRequest) throws BusinessException; + Result update(UpdateColorRequest updateColorRequest); - Result delete(DeleteColorRequest deleteColorRequest) throws BusinessException; + Result delete(DeleteColorRequest deleteColorRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java index ab6b3c9..f659599 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java @@ -4,13 +4,12 @@ import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCorporateCustomerRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateCorporateCustomerRequest; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface CorporateCustomerService { - Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) throws BusinessException; + Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest); - Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest) throws BusinessException; + Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest); - Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) throws BusinessException; + Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java index 8513914..2adde6c 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java @@ -1,17 +1,12 @@ package com.turkcell.rentacar.business.abstracts; -import com.turkcell.rentacar.business.requests.createRequests.CreateCustomerRequest; -import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCustomerRequest; -import com.turkcell.rentacar.business.requests.updateRequests.UpdateCustomerRequest; -import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; +import java.util.List; -public interface CustomerService { - - Result add(CreateCustomerRequest createCustomerRequest) throws BusinessException; +import com.turkcell.rentacar.business.dtos.listDtos.CustomerListDto; +import com.turkcell.rentacar.core.utilities.results.DataResult; - Result update(UpdateCustomerRequest updateCustomerRequest) throws BusinessException; +public interface CustomerService { - Result delete(DeleteCustomerRequest deleteCustomerRequest) throws BusinessException; + public DataResult> getAll(); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java index 9e37b29..0c6da44 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java @@ -4,14 +4,13 @@ import com.turkcell.rentacar.business.requests.deleteRequests.DeleteIndividualCustomerRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateIndividualCustomerRequest; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface IndividualCustomerService { - Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest) throws BusinessException; + Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest); - Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest) throws BusinessException; + Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest); - Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) throws BusinessException; + Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java index 3380773..a5a1021 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java @@ -10,23 +10,22 @@ import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; -import com.turkcell.rentacar.exceptions.BusinessException; public interface InvoiceService { - Result add(CreateInvoiceRequest createInvoiceRequest)throws BusinessException; + Result add(CreateInvoiceRequest createInvoiceRequest); - Result Update(UpdateInvoiceRequest updateInvoiceRequest) throws BusinessException; + Result Update(UpdateInvoiceRequest updateInvoiceRequest); - Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) throws BusinessException; + Result Delete(DeleteInvoiceRequest deleteInvoiceRequest); - DataResult getByRentId(int rentId)throws BusinessException; + DataResult getByRentId(int rentId); DataResult> getOrderedAdditionalProductByRentId(int rentId); DataResult> getAll(); - DataResult> getByUserId(int userId)throws BusinessException; + DataResult> getByUserId(int userId); DataResult> getAllByBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java index 23c492d..2cf71ea 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java @@ -8,15 +8,14 @@ import com.turkcell.rentacar.business.requests.updateRequests.UpdateOrderedAdditionalProductRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface OrderedAdditionalProductService { - Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) throws BusinessException; + Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest); - Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) throws BusinessException; + Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest); - Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) throws BusinessException; + Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest); Result checkIfRentExists(int rentId); @@ -24,6 +23,6 @@ public interface OrderedAdditionalProductService { DataResult> getByRentId(int rentId); - DataResult calculateOrderedAdditionalPrice(int rentId) throws BusinessException; + DataResult calculateOrderedAdditionalPrice(int rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java index 2cfeec0..6f2ac7e 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java @@ -6,34 +6,36 @@ import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateEndedKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; -import com.turkcell.rentacar.exceptions.BusinessException; public interface RentService { - Result addCorporateCustomer(CreateRentRequest createRentRequest) throws BusinessException; - - Result addIndividualCustomer(CreateRentRequest createRentRequest) throws BusinessException; + Result addCorporateCustomer(CreateRentRequest createRentRequest); - Result update(UpdateRentRequest updateRentRequest) throws BusinessException; + Result addIndividualCustomer(CreateRentRequest createRentRequest); - Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException; + Result update(UpdateRentRequest updateRentRequest); + + Result updateEndedKilometer(UpdateEndedKilometerInfoRequest updateEndedKilometerInfoRequest); + + Result delete(DeleteRentRequest deleteRentRequest); DataResult> getAll(); DataResult> getByCarId(int carId); DataResult> getOrderedAdditionalProductsByRentId(int rentId); - + DataResult calculateRentTotalPrice(int rentId); DataResult getRentDetailsByRentId(int rentId); - Result checkIfCarAlreadyInRent(int carId) throws BusinessException; - + Result checkIfCarAlreadyInRent(int carId); + Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java index 23cef8e..3bc3b5b 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java @@ -1,17 +1,10 @@ package com.turkcell.rentacar.business.abstracts; -import com.turkcell.rentacar.business.requests.createRequests.CreateUserRequest; -import com.turkcell.rentacar.business.requests.deleteRequests.DeleteUserRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.exceptions.BusinessException; public interface UserService { - Result add(CreateUserRequest createUserRequest) throws BusinessException; - - Result update(UpdateUserRequest updateUserRequest) throws BusinessException; - - Result delete(DeleteUserRequest deleteUserRequest) throws BusinessException; + Result update(UpdateUserRequest updateUserRequest); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java index e0ff2a2..60b46fb 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java @@ -18,7 +18,8 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.AdditionalProductDao; import com.turkcell.rentacar.entities.concretes.AdditionalProduct; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; @Service public class AdditionalProductManager implements AdditionalProductService { @@ -33,63 +34,64 @@ public AdditionalProductManager(AdditionalProductDao additionalProductDao, Model } @Override - public Result add(CreateAdditionalProductRequest createAdditionalProductRequest) throws BusinessException { - + public Result add(CreateAdditionalProductRequest createAdditionalProductRequest) { + checkIfAdditionalProducNameExists(createAdditionalProductRequest.getAdditionalProductName()); - + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(createAdditionalProductRequest, AdditionalProduct.class); - + this.additionalProductDao.save(additionalProduct); - + return new SuccessResult("AdditionalProduct added successfully."); } @Override - public Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) throws BusinessException { - + public Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) { + checkIfAdditionalProductExists(updateAdditionalProductRequest.getAdditionalProductId()); - + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(updateAdditionalProductRequest, AdditionalProduct.class); - + this.additionalProductDao.save(additionalProduct); - + return new SuccessResult("AdditionalProduct updated successfully."); } @Override - public Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) throws BusinessException { - + public Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) { + checkIfAdditionalProductExists(deleteAdditionalProductRequest.getAdditionalProductId()); - + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(deleteAdditionalProductRequest, AdditionalProduct.class); - + this.additionalProductDao.delete(additionalProduct); - + return new SuccessResult("AdditionalProduct deleted successfully."); } @Override public DataResult> getAll() { - + List result = this.additionalProductDao.findAll(); List response = result.stream().map(additionalProduct -> this.modelMapperService .forDto().map(additionalProduct, AdditionalProductListDto.class)).collect(Collectors.toList()); - - return new SuccessDataResult>(response, "AdditionalProducts listed successfully."); + + return new SuccessDataResult>(response, + "AdditionalProducts listed successfully."); } - private void checkIfAdditionalProductExists(int additionalProductId) throws BusinessException { + private void checkIfAdditionalProductExists(int additionalProductId) { if (!this.additionalProductDao.existsByAdditionalProductId(additionalProductId)) { - throw new BusinessException("AdditionalProduct not found!"); + throw new EntityNotFoundException("AdditionalProduct not found!"); } } - private void checkIfAdditionalProducNameExists(String additionalProductName) throws BusinessException { + private void checkIfAdditionalProducNameExists(String additionalProductName) { if (this.additionalProductDao.existsByAdditionalProductName(additionalProductName)) { - throw new BusinessException("AdditionalProduct already exists!"); + throw new EntityAlreadyExistsException("AdditionalProduct already exists!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java index 4a9b753..23d4fc1 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -12,7 +12,8 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.BrandDao; import com.turkcell.rentacar.entities.concretes.Brand; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,7 +45,7 @@ public DataResult> getAll() { } @Override - public Result add(CreateBrandRequest createBrandRequest) throws BusinessException { + public Result add(CreateBrandRequest createBrandRequest) { checkIfBrandNameExists(createBrandRequest.getBrandName()); @@ -65,7 +66,7 @@ public DataResult getById(int id) { } @Override - public Result update(UpdateBrandRequest updateBrandRequest) throws BusinessException { + public Result update(UpdateBrandRequest updateBrandRequest) { checkIfBrandExists(updateBrandRequest.getBrandId()); checkIfBrandNameExists(updateBrandRequest.getBrandName()); @@ -78,7 +79,7 @@ public Result update(UpdateBrandRequest updateBrandRequest) throws BusinessExcep } @Override - public Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessException { + public Result delete(DeleteBrandRequest deleteBrandRequest) { checkIfBrandExists(deleteBrandRequest.getBrandId()); @@ -89,15 +90,15 @@ public Result delete(DeleteBrandRequest deleteBrandRequest) throws BusinessExcep return new SuccessResult("Brand deleted successfully."); } - private void checkIfBrandExists(int brandId) throws BusinessException { + private void checkIfBrandExists(int brandId) { if (!this.brandDao.existsById(brandId)) { - throw new BusinessException("Brand not found!"); + throw new EntityNotFoundException("Brand not found!"); } } - private void checkIfBrandNameExists(String brandName) throws BusinessException { + private void checkIfBrandNameExists(String brandName) { if (this.brandDao.existsBrandByBrandName(brandName)) { - throw new BusinessException("Brand already exists."); + throw new EntityAlreadyExistsException("Brand already exists."); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java new file mode 100644 index 0000000..115e9fb --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java @@ -0,0 +1,74 @@ +package com.turkcell.rentacar.business.concretes; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.CarDamageService; +import com.turkcell.rentacar.business.dtos.listDtos.CarDamageListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCarDamageRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarDamageRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarDamageRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.CarDamageDao; +import com.turkcell.rentacar.entities.concretes.CarDamage; + +@Service +public class CarDamageManager implements CarDamageService { + + private CarDamageDao carDamageDao; + private ModelMapperService modelMapperService; + + @Autowired + public CarDamageManager(CarDamageDao carDamageDao, ModelMapperService modelMapperService) { + this.carDamageDao = carDamageDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateCarDamageRequest createCarDamageRequest) { + + CarDamage carDamage = this.modelMapperService.forRequest().map(createCarDamageRequest, CarDamage.class); + + this.carDamageDao.save(carDamage); + + return new SuccessResult("CarDamage added successfully."); + } + + @Override + public Result update(UpdateCarDamageRequest updateCarDamageRequest) { + + CarDamage carDamage = this.modelMapperService.forRequest().map(updateCarDamageRequest, CarDamage.class); + + this.carDamageDao.save(carDamage); + + return new SuccessResult("CarDamage updated successfully."); + } + + @Override + public Result delete(DeleteCarDamageRequest deleteCarDamageRequest) { + + CarDamage carDamage = this.modelMapperService.forRequest().map(deleteCarDamageRequest, CarDamage.class); + + this.carDamageDao.delete(carDamage); + + return new SuccessResult("CarDamage deleted successfully."); + } + + @Override + public DataResult> getAll() { + List result = this.carDamageDao.findAll(); + List response = result.stream() + .map(carDamage -> this.modelMapperService.forDto().map(carDamage, CarDamageListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, "CarDamages listed successfully."); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java index 4430325..61c35f9 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java @@ -22,7 +22,10 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.CarMaintenanceDao; import com.turkcell.rentacar.entities.concretes.CarMaintenance; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.CarIsAlreadyInMaintenanceException; +import com.turkcell.rentacar.exceptions.businessExceptions.CarIsAlreadyInRentException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; +import com.turkcell.rentacar.exceptions.businessExceptions.ReturnDateIsAfterNowException; @Service public class CarMaintenanceManager implements CarMaintenanceService { @@ -41,79 +44,80 @@ public CarMaintenanceManager(CarMaintenanceDao carMaintenanceDao, ModelMapperSer @Override public DataResult> getAll() { - + List result = this.carMaintenanceDao.findAll(); List response = result.stream().map( carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) .collect(Collectors.toList()); - + return new SuccessDataResult>(response, "CarMaintenances listed successfully."); } @Override public DataResult getCarMaintenanceDetailsByCarMaintenanceId(int carMaintenanceId) { - + CarMaintenance result = this.carMaintenanceDao.getById(carMaintenanceId); CarMaintenanceGetDto response = this.modelMapperService.forDto().map(result, CarMaintenanceGetDto.class); - + return new SuccessDataResult(response, "CarMaintenance listed successfully."); } @Override - public Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) throws BusinessException { - + public Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) { + checkIfReturnDateIsAfterNow(createCarMaintenanceRequest.getReturnDate()); checkIfCarIsAlreadyInMaintenanceIsSuccess(createCarMaintenanceRequest.getCarId()); checkIfCarIsAlreadyInRent(createCarMaintenanceRequest.getCarId()); - + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(createCarMaintenanceRequest, CarMaintenance.class); - + this.carMaintenanceDao.save(carMaintenance); - + return new SuccessResult("CarMaintenance added successfully."); } @Override - public Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) throws BusinessException { - + public Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) { + existByCarMaintenance(updateCarMaintenanceRequest.getCarMaintenanceId()); checkIfReturnDateIsAfterNow(updateCarMaintenanceRequest.getReturnDate()); - + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(updateCarMaintenanceRequest, CarMaintenance.class); - + this.carMaintenanceDao.save(carMaintenance); - + return new SuccessResult("CarMaintenance updated successfully."); } @Override - public Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) throws BusinessException { - + public Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) { + existByCarMaintenance(deleteCarMaintenanceRequest.getCarMaintenanceId()); - + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(deleteCarMaintenanceRequest, CarMaintenance.class); - + this.carMaintenanceDao.delete(carMaintenance); - + return new SuccessResult("CarMaintenance deleted successfully."); } @Override public DataResult> getByCarId(int carId) { - + List result = this.carMaintenanceDao.getByCar_CarId(carId); List response = result.stream().map( carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) .collect(Collectors.toList()); - - return new SuccessDataResult>(response, "CarMaintenances for Car listed successfully."); + + return new SuccessDataResult>(response, + "CarMaintenances for Car listed successfully."); } @Override - public Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessException { + public Result checkIfCarIsAlreadyInMaintenance(int carId) { for (CarMaintenance carMaintenance : this.carMaintenanceDao.getByCar_CarId(carId)) { if (carMaintenance.getReturnDate() != null) { return new SuccessResult("Car not in maintenance"); @@ -122,18 +126,18 @@ public Result checkIfCarIsAlreadyInMaintenance(int carId) throws BusinessExcepti return new ErrorResult("Car in maintenance!"); } - private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) throws BusinessException { + private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) { if (this.carMaintenanceDao.existsByCar_CarId(carId)) { if (!checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { - throw new BusinessException("Car in maintenance!"); + throw new CarIsAlreadyInMaintenanceException("Car in maintenance!"); } } } - private void checkIfCarIsAlreadyInRent(int carId) throws BusinessException { + private void checkIfCarIsAlreadyInRent(int carId) { if (!checkIfCarExistInRentTable(carId)) { if (!this.rentService.checkIfCarAlreadyInRent(carId).isSuccess()) { - throw new BusinessException("The Car cannot be sent for maintenance because it is on Rent."); + throw new CarIsAlreadyInRentException("The Car cannot be sent for maintenance because it is on Rent."); } } } @@ -142,16 +146,16 @@ private boolean checkIfCarExistInRentTable(int carId) { return this.rentService.getByCarId(carId).getData().isEmpty(); } - private void existByCarMaintenance(int carMaintenanceId) throws BusinessException { + private void existByCarMaintenance(int carMaintenanceId) { if (!this.carMaintenanceDao.existsById(carMaintenanceId)) { - throw new BusinessException("CarMaintenance not found!"); + throw new EntityNotFoundException("CarMaintenance not found!"); } } - private void checkIfReturnDateIsAfterNow(LocalDate returnDate) throws BusinessException { + private void checkIfReturnDateIsAfterNow(LocalDate returnDate) { if (returnDate != null) { if (returnDate.isAfter(LocalDate.now())) { - throw new BusinessException("A future date cannot be entered!"); + throw new ReturnDateIsAfterNowException("A future date cannot be entered!"); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java index 571fe8e..dbbb6b2 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -14,6 +14,7 @@ import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateBrandToCarRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateCarRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateColorToCarRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; @@ -23,7 +24,7 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.CarDao; import com.turkcell.rentacar.entities.concretes.Car; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; @Service public class CarManager implements CarService { @@ -39,118 +40,127 @@ public CarManager(CarDao carDao, ModelMapperService modelMapperService) { @Override public DataResult> getAll() { - + List result = this.carDao.findAll(); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - + return new SuccessDataResult>(response, "Cars listed successfully."); } @Override - public Result add(CreateCarRequest createCarRequest) throws BusinessException { - + public Result add(CreateCarRequest createCarRequest) { + Car car = this.modelMapperService.forRequest().map(createCarRequest, Car.class); - + this.carDao.save(car); - + return new SuccessResult("Car added successfully."); } @Override - public Result update(UpdateCarRequest updateCarRequest) throws BusinessException { - + public Result update(UpdateCarRequest updateCarRequest) { + checkIfCarExists(updateCarRequest.getCarId()); - + Car car = this.carDao.getById(updateCarRequest.getCarId()); Car updatedCar = this.modelMapperService.forRequest().map(updateCarRequest, Car.class); - + updatedCar.setBrand(car.getBrand()); updatedCar.setColor(car.getColor()); - + this.carDao.save(updatedCar); - + return new SuccessResult("Car updated successfully."); } @Override - public Result delete(DeleteCarRequest deleteCarRequest) throws BusinessException { - + public Result delete(DeleteCarRequest deleteCarRequest) { + checkIfCarExists(deleteCarRequest.getCarId()); - + Car car = this.modelMapperService.forRequest().map(deleteCarRequest, Car.class); - + this.carDao.deleteById(car.getCarId()); - + return new SuccessResult("Car deleted successfully."); } @Override - public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) throws BusinessException { - + public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) { + checkIfCarExists(updateColorToCarRequest.getCarId()); - + this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), updateColorToCarRequest.getColorId()); - + return new SuccessResult("The Color of the Car updated successfully."); } @Override - public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) throws BusinessException { - + public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) { + checkIfCarExists(updateBrandToCarRequest.getCarId()); - + this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), updateBrandToCarRequest.getBrandId()); - + return new SuccessResult("The Brand of the Car updated successfully."); } @Override public DataResult getById(int id) { - + Car result = this.carDao.getById(id); CarListDto response = this.modelMapperService.forDto().map(result, CarListDto.class); - + return new SuccessDataResult(response, "Car listed successfully"); } @Override public DataResult> findByDailyPriceLessThanEqual(double dailyPrice) { - + List result = this.carDao.findByDailyPriceLessThanEqual(dailyPrice); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - + return new SuccessDataResult>(response, "Cars successfully listed by dailyPrice."); } @Override public DataResult> getAllPaged(int pageNo, int pageSize) { - + Pageable pageable = PageRequest.of(pageNo - 1, pageSize); - + List result = this.carDao.findAll(pageable).getContent(); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - + return new SuccessDataResult>(response, "Cars are paginated and listed successfully."); } @Override public DataResult> getAllSorted(boolean sort) { - + Sort sorted = Sort.by(checkSortDirectionType(sort), "dailyPrice"); - + List result = this.carDao.findAll(sorted); List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - + return new SuccessDataResult>(response, "Cars are sorted successfully."); } - private void checkIfCarExists(int carId) throws BusinessException { + @Override + public Result updateKilometerInfo(UpdateCarKilometerInfoRequest updateCarKilometerInfoRequest) { + + this.carDao.updateKilometerToCarByCarId(updateCarKilometerInfoRequest.getCarId(), + updateCarKilometerInfoRequest.getKilometerInfo()); + + return new SuccessResult("The KilometerInfo of the Car updated successfully."); + } + + private void checkIfCarExists(int carId) { if (!this.carDao.existsByCarId(carId)) { - throw new BusinessException("Car not found!"); + throw new EntityNotFoundException("Car not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java index 5108d59..e5c84ba 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -12,7 +12,8 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.ColorDao; import com.turkcell.rentacar.entities.concretes.Color; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,7 +45,7 @@ public DataResult> getAll() { } @Override - public Result add(CreateColorRequest createColorRequest) throws BusinessException { + public Result add(CreateColorRequest createColorRequest) { checkIfColorNameExists(createColorRequest.getColorName()); @@ -65,7 +66,7 @@ public DataResult getById(int id) { } @Override - public Result update(UpdateColorRequest updateColorRequest) throws BusinessException { + public Result update(UpdateColorRequest updateColorRequest) { checkIfColorExists(updateColorRequest.getColorId()); checkIfColorNameExists(updateColorRequest.getColorName()); @@ -78,7 +79,7 @@ public Result update(UpdateColorRequest updateColorRequest) throws BusinessExcep } @Override - public Result delete(DeleteColorRequest deleteColorRequest) throws BusinessException { + public Result delete(DeleteColorRequest deleteColorRequest) { checkIfColorExists(deleteColorRequest.getColorId()); @@ -89,15 +90,15 @@ public Result delete(DeleteColorRequest deleteColorRequest) throws BusinessExcep return new SuccessResult("Color deleted successfully."); } - private void checkIfColorNameExists(String colorName) throws BusinessException { + private void checkIfColorNameExists(String colorName) { if (this.colorDao.existsColorByColorName(colorName)) { - throw new BusinessException("Color already exists!"); + throw new EntityAlreadyExistsException("Color already exists!"); } } - private void checkIfColorExists(int colorId) throws BusinessException { + private void checkIfColorExists(int colorId) { if (!this.colorDao.existsById(colorId)) { - throw new BusinessException("Color not found!"); + throw new EntityNotFoundException("Color not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java index 250c117..b73bec6 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java @@ -12,7 +12,8 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.CorporateCustomerDao; import com.turkcell.rentacar.entities.concretes.CorporateCustomer; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; @Service public class CorporateCustomerManager implements CorporateCustomerService { @@ -27,7 +28,9 @@ public CorporateCustomerManager(CorporateCustomerDao corporateCustomerDao, Model } @Override - public Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) throws BusinessException { + public Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) { + + checkIfEmailExists(createCorporateCustomerRequest.getEmail()); CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(createCorporateCustomerRequest, CorporateCustomer.class); @@ -38,8 +41,9 @@ public Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) } @Override - public Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest) throws BusinessException { + public Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest) { + checkIfEmailExists(updateCorporateCustomerRequest.getEmail()); checkIfCorporateCustomerExists(updateCorporateCustomerRequest.getUserId()); CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(updateCorporateCustomerRequest, @@ -51,7 +55,7 @@ public Result update(UpdateCorporateCustomerRequest updateCorporateCustomerReque } @Override - public Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) throws BusinessException { + public Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) { checkIfCorporateCustomerExists(deleteCorporateCustomerRequest.getUserId()); @@ -63,9 +67,15 @@ public Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerReque return new SuccessResult("Corporate customer deleted successfully."); } - private void checkIfCorporateCustomerExists(int corporateCustomerId) throws BusinessException { + private void checkIfCorporateCustomerExists(int corporateCustomerId) { if (!this.corporateCustomerDao.existsById(corporateCustomerId)) { - throw new BusinessException("Corporate Customer not found!"); + throw new EntityNotFoundException("Corporate Customer not found!"); + } + } + + private void checkIfEmailExists(String email) { + if (this.corporateCustomerDao.existsByEmail(email)) { + throw new EntityAlreadyExistsException("Email already exists!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java index 07557f1..17698da 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java @@ -1,18 +1,18 @@ package com.turkcell.rentacar.business.concretes; +import java.util.List; +import java.util.stream.Collectors; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CustomerService; -import com.turkcell.rentacar.business.requests.createRequests.CreateCustomerRequest; -import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCustomerRequest; -import com.turkcell.rentacar.business.requests.updateRequests.UpdateCustomerRequest; +import com.turkcell.rentacar.business.dtos.listDtos.CustomerListDto; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; -import com.turkcell.rentacar.core.utilities.results.Result; -import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; import com.turkcell.rentacar.dataAccess.abstracts.CustomerDao; import com.turkcell.rentacar.entities.concretes.Customer; -import com.turkcell.rentacar.exceptions.BusinessException; @Service public class CustomerManager implements CustomerService { @@ -27,43 +27,14 @@ public CustomerManager(CustomerDao customerDao, ModelMapperService modelMapperSe } @Override - public Result add(CreateCustomerRequest createCustomerRequest) throws BusinessException { - - Customer customer = this.modelMapperService.forRequest().map(createCustomerRequest, Customer.class); - - this.customerDao.save(customer); - - return new SuccessResult("Customer added successfully."); - } - - @Override - public Result update(UpdateCustomerRequest updateCustomerRequest) throws BusinessException { - - checkIfCustomerExists(updateCustomerRequest.getUserId()); - - Customer customer = this.modelMapperService.forRequest().map(updateCustomerRequest, Customer.class); - - this.customerDao.save(customer); - - return new SuccessResult("Customer updated successfully."); - } - - @Override - public Result delete(DeleteCustomerRequest deleteCustomerRequest) throws BusinessException { + public DataResult> getAll() { - checkIfCustomerExists(deleteCustomerRequest.getUserId()); - - Customer customer = this.modelMapperService.forRequest().map(deleteCustomerRequest, Customer.class); - - this.customerDao.delete(customer); - - return new SuccessResult("Customer deleted successfully."); - } + List result = this.customerDao.findAll(); + List response = result.stream() + .map(customer -> modelMapperService.forDto().map(customer, CustomerListDto.class)) + .collect(Collectors.toList()); - private void checkIfCustomerExists(int customerId) throws BusinessException { - if (!this.customerDao.existsById(customerId)) { - throw new BusinessException("Customer not found!"); - } + return new SuccessDataResult>(response, "Customers listed successfully."); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java index ed301f2..0e21f2c 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java @@ -12,23 +12,31 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.IndividualCustomerDao; import com.turkcell.rentacar.entities.concretes.IndividualCustomer; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; +import com.turkcell.rentacar.exceptions.businessExceptions.NationalIdentityNotValidException; +import com.turkcell.rentacar.nationalIdentityService.NationalIdentityService; @Service public class IndividualCustomerManager implements IndividualCustomerService { private IndividualCustomerDao individualCustomerDao; private ModelMapperService modelMapperService; + private NationalIdentityService nationalIdentityService; @Autowired - public IndividualCustomerManager(IndividualCustomerDao individualCustomerDao, - ModelMapperService modelMapperService) { + public IndividualCustomerManager(IndividualCustomerDao individualCustomerDao, ModelMapperService modelMapperService, + NationalIdentityService nationalIdentityService) { this.individualCustomerDao = individualCustomerDao; this.modelMapperService = modelMapperService; + this.nationalIdentityService = nationalIdentityService; } @Override - public Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest) throws BusinessException { + public Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest) { + + checkIfEmailExists(createIndividualCustomerRequest.getEmail()); + checkIfNationalIdentityIsReal(createIndividualCustomerRequest.getNationalIdentity()); IndividualCustomer individualCustomer = this.modelMapperService.forRequest() .map(createIndividualCustomerRequest, IndividualCustomer.class); @@ -39,9 +47,11 @@ public Result add(CreateIndividualCustomerRequest createIndividualCustomerReques } @Override - public Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest) throws BusinessException { + public Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest) { + checkIfEmailExists(updateIndividualCustomerRequest.getEmail()); checkIfIndividualCustomerExists(updateIndividualCustomerRequest.getUserId()); + checkIfNationalIdentityIsReal(updateIndividualCustomerRequest.getNationalIdentity()); IndividualCustomer individualCustomer = this.modelMapperService.forRequest() .map(updateIndividualCustomerRequest, IndividualCustomer.class); @@ -52,7 +62,7 @@ public Result update(UpdateIndividualCustomerRequest updateIndividualCustomerReq } @Override - public Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) throws BusinessException { + public Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) { checkIfIndividualCustomerExists(deleteIndividualCustomerRequest.getUserId()); @@ -64,9 +74,21 @@ public Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerReq return new SuccessResult("Individual customer deleted successfully."); } - private void checkIfIndividualCustomerExists(int individualCustomerId) throws BusinessException { + private void checkIfIndividualCustomerExists(int individualCustomerId) { if (!this.individualCustomerDao.existsById(individualCustomerId)) { - throw new BusinessException("Individual Customer not found!"); + throw new EntityNotFoundException("Individual Customer not found!"); + } + } + + private void checkIfEmailExists(String email) { + if (this.individualCustomerDao.existsByEmail(email)) { + throw new EntityAlreadyExistsException("Email already exists!"); + } + } + + private void checkIfNationalIdentityIsReal(String nationalIdentity) { + if (!this.nationalIdentityService.checkNationalIdentity(nationalIdentity)) { + throw new NationalIdentityNotValidException("NationalIdentity not valid!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java index ace73a7..c5320d1 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java @@ -23,7 +23,7 @@ import com.turkcell.rentacar.dataAccess.abstracts.InvoiceDao; import com.turkcell.rentacar.entities.concretes.Invoice; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; @Service public class InvoiceManager implements InvoiceService { @@ -43,7 +43,7 @@ public InvoiceManager(InvoiceDao invoiceDao, ModelMapperService modelMapperServi } @Override - public Result add(CreateInvoiceRequest createInvoiceRequest) throws BusinessException { + public Result add(CreateInvoiceRequest createInvoiceRequest) { Invoice invoice = this.modelMapperService.forRequest().map(createInvoiceRequest, Invoice.class); @@ -56,7 +56,7 @@ public Result add(CreateInvoiceRequest createInvoiceRequest) throws BusinessExce } @Override - public Result Update(UpdateInvoiceRequest updateInvoiceRequest) throws BusinessException { + public Result Update(UpdateInvoiceRequest updateInvoiceRequest) { checkIfInvoiceExists(updateInvoiceRequest.getInvoiceId()); @@ -70,7 +70,7 @@ public Result Update(UpdateInvoiceRequest updateInvoiceRequest) throws BusinessE } @Override - public Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) throws BusinessException { + public Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) { Invoice invoice = this.modelMapperService.forRequest().map(deleteInvoiceRequest, Invoice.class); @@ -91,7 +91,7 @@ public DataResult> getAll() { } @Override - public DataResult getByRentId(int rentId) throws BusinessException { + public DataResult getByRentId(int rentId) { checkIfRentExists(rentId); @@ -110,7 +110,7 @@ public DataResult> getOrderedAdditionalProductByR } @Override - public DataResult> getByUserId(int userId) throws BusinessException { + public DataResult> getByUserId(int userId) { checkIfUserExists(userId); @@ -134,7 +134,7 @@ public DataResult> getAllByBetweenStartDateAndEndDate(Local "Invoices between start date and end date listed successfully."); } - private double calculateTotalPrice(Invoice invoice) throws BusinessException { + private double calculateTotalPrice(Invoice invoice) { return calculateRentTotalPrice(invoice.getRent().getRentId()) + calculateOrderedAdditionalPrice(invoice.getRent().getRentId()) @@ -145,7 +145,7 @@ private double calculateRentTotalPrice(int rentId) { return this.rentService.calculateRentTotalPrice(rentId).getData(); } - private double calculateOrderedAdditionalPrice(int rentId) throws BusinessException { + private double calculateOrderedAdditionalPrice(int rentId) { if (checkIfInvoiceHasOrderedAdditionalProduct(rentId)) { return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId).getData(); } @@ -159,9 +159,9 @@ private double calculateIfCityIsDifferentPrice(int rentId) { return 0; } - private void checkIfInvoiceExists(int invoiceId) throws BusinessException { + private void checkIfInvoiceExists(int invoiceId) { if (!this.invoiceDao.existsById(invoiceId)) { - throw new BusinessException("Invoice not found!"); + throw new EntityNotFoundException("Invoice not found!"); } } @@ -172,15 +172,15 @@ private boolean checkIfInvoiceHasOrderedAdditionalProduct(int rentId) { return false; } - private void checkIfRentExists(int rentId) throws BusinessException { + private void checkIfRentExists(int rentId) { if (!this.invoiceDao.existsByRent_RentId(rentId)) { - throw new BusinessException("Rent not found!"); + throw new EntityNotFoundException("Rent not found!"); } } - private void checkIfUserExists(int userId) throws BusinessException { + private void checkIfUserExists(int userId) { if (!this.invoiceDao.existsByUser_UserId(userId)) { - throw new BusinessException("User not found!"); + throw new EntityNotFoundException("User not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java index a60237a..752c9fa 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java @@ -19,7 +19,7 @@ import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.OrderedAdditionalProductDao; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; @Service public class OrderedAdditionalProductManager implements OrderedAdditionalProductService { @@ -35,8 +35,7 @@ public OrderedAdditionalProductManager(OrderedAdditionalProductDao orderedAdditi } @Override - public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) - throws BusinessException { + public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) { OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() .map(createOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); @@ -48,8 +47,7 @@ public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalP } @Override - public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) - throws BusinessException { + public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) { checkIfOrderedAdditionalProductExists(updateOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); @@ -62,8 +60,7 @@ public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAddition } @Override - public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) - throws BusinessException { + public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) { checkIfOrderedAdditionalProductExists(deleteOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); @@ -84,7 +81,8 @@ public DataResult> getAll() { OrderedAdditionalProductListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "OrderedAdditionalProducts listed successfully."); + return new SuccessDataResult>(response, + "OrderedAdditionalProducts listed successfully."); } @Override @@ -101,8 +99,8 @@ public DataResult> getByRentId(int rentId) } @Override - public DataResult calculateOrderedAdditionalPrice(int rentId) throws BusinessException { - + public DataResult calculateOrderedAdditionalPrice(int rentId) { + checkIfRentExistsIsSuccess(rentId); double orderedAdditionalProductsPrice = 0; @@ -131,16 +129,16 @@ public Result checkIfRentExists(int rentId) { return new ErrorResult("Rent is not exists in OrderedAdditionalProduct."); } - - private void checkIfRentExistsIsSuccess(int rentId) throws BusinessException { - if(!checkIfRentExists(rentId).isSuccess()) { - throw new BusinessException("Rent is not exists in OrderedAdditionalProduct."); + + private void checkIfRentExistsIsSuccess(int rentId) { + if (!checkIfRentExists(rentId).isSuccess()) { + throw new EntityNotFoundException("Rent is not exists in OrderedAdditionalProduct."); } } - private void checkIfOrderedAdditionalProductExists(int orderedAdditionalProductId) throws BusinessException { + private void checkIfOrderedAdditionalProductExists(int orderedAdditionalProductId) { if (!this.orderedAdditionalProductDao.existsById(orderedAdditionalProductId)) { - throw new BusinessException("OrderedAdditionalProduct is not found!"); + throw new EntityNotFoundException("OrderedAdditionalProduct is not found!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java index f9e8dc9..9b6eba3 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -15,6 +15,7 @@ import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateEndedKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; @@ -25,7 +26,8 @@ import com.turkcell.rentacar.dataAccess.abstracts.RentDao; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; import com.turkcell.rentacar.entities.concretes.Rent; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.CarIsAlreadyInMaintenanceException; +import com.turkcell.rentacar.exceptions.businessExceptions.CarIsAlreadyInRentException; @Service public class RentManager implements RentService { @@ -40,12 +42,11 @@ public RentManager(RentDao rentDao, ModelMapperService modelMapperService, this.rentDao = rentDao; this.modelMapperService = modelMapperService; this.carMaintenanceService = carMaintenanceService; - } @Override - public Result addCorporateCustomer(CreateRentRequest createRentRequest) throws BusinessException { - + public Result addCorporateCustomer(CreateRentRequest createRentRequest) { + checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); @@ -59,8 +60,8 @@ public Result addCorporateCustomer(CreateRentRequest createRentRequest) throws B } @Override - public Result addIndividualCustomer(CreateRentRequest createRentRequest) throws BusinessException { - + public Result addIndividualCustomer(CreateRentRequest createRentRequest) { + checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); @@ -74,18 +75,19 @@ public Result addIndividualCustomer(CreateRentRequest createRentRequest) throws } @Override - public Result update(UpdateRentRequest updateRentRequest) throws BusinessException { + public Result update(UpdateRentRequest updateRentRequest) { Rent rent = this.modelMapperService.forRequest().map(updateRentRequest, Rent.class); checkIfRentReturnDateIsAfterNow(rent); this.rentDao.save(rent); + return new SuccessResult("Rent updated successfully."); } @Override - public Result delete(DeleteRentRequest deleteRentRequest) throws BusinessException { + public Result delete(DeleteRentRequest deleteRentRequest) { Rent rent = this.modelMapperService.forRequest().map(deleteRentRequest, Rent.class); @@ -124,7 +126,7 @@ public DataResult> getByCarId(int carId) { } @Override - public Result checkIfCarAlreadyInRent(int carId) throws BusinessException { + public Result checkIfCarAlreadyInRent(int carId) { for (Rent rent : this.rentDao.getByCar_CarId(carId)) { if (!rent.isRentStatus()) { return new SuccessResult("Car not in Rent!"); @@ -138,7 +140,8 @@ public DataResult> getOrderedAdditionalProductsBy List result = this.rentDao.getOrderedAdditionalProductsByRentId(rentId); - return new SuccessDataResult>(result, "OrderedAdditionalProducts for Rent listed successfully."); + return new SuccessDataResult>(result, + "OrderedAdditionalProducts for Rent listed successfully."); } @Override @@ -165,18 +168,27 @@ public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId) { return new ErrorResult("Cities are same!"); } - private void checkIfCarAlreadyInRentIsSuccess(int carId) throws BusinessException { + @Override + public Result updateEndedKilometer(UpdateEndedKilometerInfoRequest updateEndedKilometerInfoRequest) { + + this.rentDao.updateEndedKilometerInfoToRentByRentId(updateEndedKilometerInfoRequest.getRentId(), + updateEndedKilometerInfoRequest.getEndedKilometerInfo()); + + return new SuccessResult("EndedKilometerInfo updated successfully."); + } + + private void checkIfCarAlreadyInRentIsSuccess(int carId) { if (this.rentDao.existsByCar_CarId(carId)) { if (!checkIfCarAlreadyInRent(carId).isSuccess()) { - throw new BusinessException("Car in Rent!"); + throw new CarIsAlreadyInRentException("Car in Rent!"); } } } - private void checkIfCarAlreadyInMaintenance(int carId) throws BusinessException { + private void checkIfCarAlreadyInMaintenance(int carId) { if (!checkIfCarExistInCarMaintenanceTable(carId)) { if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { - throw new BusinessException("The Car cannot be rented as it is in maintenance."); + throw new CarIsAlreadyInMaintenanceException("The Car cannot be rented as it is in maintenance."); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java index fcbd9c4..4dccbc5 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java @@ -4,15 +4,14 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.UserService; -import com.turkcell.rentacar.business.requests.createRequests.CreateUserRequest; -import com.turkcell.rentacar.business.requests.deleteRequests.DeleteUserRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessResult; import com.turkcell.rentacar.dataAccess.abstracts.UserDao; import com.turkcell.rentacar.entities.abstracts.User; -import com.turkcell.rentacar.exceptions.BusinessException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; @Service public class UserManager implements UserService { @@ -27,22 +26,12 @@ public UserManager(UserDao userDao, ModelMapperService modelMapperService) { } @Override - public Result add(CreateUserRequest createUserRequest) throws BusinessException { - - existsByEmail(createUserRequest.getEmail()); - - User user = this.modelMapperService.forRequest().map(createUserRequest, User.class); - - this.userDao.save(user); - - return new SuccessResult("User added successfully."); - } - - @Override - public Result update(UpdateUserRequest updateUserRequest) throws BusinessException { + public Result update(UpdateUserRequest updateUserRequest) { checkIfUserExists(updateUserRequest.getUserId()); + existsByEmail(updateUserRequest.getEmail()); + User user = this.modelMapperService.forRequest().map(updateUserRequest, User.class); this.userDao.save(user); @@ -50,27 +39,15 @@ public Result update(UpdateUserRequest updateUserRequest) throws BusinessExcepti return new SuccessResult("User updated successfully."); } - @Override - public Result delete(DeleteUserRequest deleteUserRequest) throws BusinessException { - - checkIfUserExists(deleteUserRequest.getUserId()); - - User user = this.modelMapperService.forRequest().map(deleteUserRequest, User.class); - - this.userDao.delete(user); - - return new SuccessResult("User deleted successfully."); - } - - private void checkIfUserExists(int userId) throws BusinessException { + private void checkIfUserExists(int userId) { if (!this.userDao.existsById(userId)) { - throw new BusinessException("User not found!"); + throw new EntityNotFoundException("User not found!"); } } - private void existsByEmail(String email) throws BusinessException { + private void existsByEmail(String email) { if (this.userDao.existsByEmail(email)) { - throw new BusinessException("Email is already exists!"); + throw new EntityAlreadyExistsException("Email is already exists!"); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java index a8fac3f..e51ef6e 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java @@ -17,14 +17,16 @@ public class RentGetDto { private boolean rentStatus; + private int carId; + private String brandName; private double dailyPrice; private String modelYear; - + private String colorName; - + private double additionalServicePrice; private String rentalCity; @@ -39,6 +41,4 @@ public class RentGetDto { private double additionalProductUnitPrice; - - } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarDamageListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarDamageListDto.java new file mode 100644 index 0000000..defb475 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CarDamageListDto.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CarDamageListDto { + + private String damageInfo; + + private String modelYear; + private String description; + + private String brandName; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CustomerListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CustomerListDto.java new file mode 100644 index 0000000..b39e95a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CustomerListDto.java @@ -0,0 +1,18 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CustomerListDto { + + private String email; + + private LocalDate dateRegistered; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarDamageRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarDamageRequest.java new file mode 100644 index 0000000..5e85336 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarDamageRequest.java @@ -0,0 +1,27 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateCarDamageRequest { + + @NotNull + @Min(1) + private int carDamageId; + + @NotNull + @Size(min = 2) + private String damageInfo; + + @NotNull + @Min(1) + private int carId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java index 4a13bc0..80cf980 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java @@ -1,5 +1,6 @@ package com.turkcell.rentacar.business.requests.createRequests; + import javax.validation.constraints.Email; import javax.validation.constraints.Size; import javax.validation.constraints.NotNull; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java index c4f1b61..04c4658 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java @@ -19,6 +19,9 @@ public class CreateRentRequest { @NotNull private LocalDate rentReturnDate; + + @NotNull + private String startedKilometerInfo; @NotNull @Min(1) diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarDamageRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarDamageRequest.java new file mode 100644 index 0000000..c3ef490 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarDamageRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteCarDamageRequest { + + @NotNull + @Min(1) + private int carDamageId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarDamageRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarDamageRequest.java new file mode 100644 index 0000000..742fa05 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarDamageRequest.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCarDamageRequest { + + @NotNull + @Min(1) + private int carDamageId; + + @NotNull + @Size(min = 2) + private String damageInfo; + + @NotNull + @Min(1) + private int carId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarKilometerInfoRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarKilometerInfoRequest.java new file mode 100644 index 0000000..323fe7f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarKilometerInfoRequest.java @@ -0,0 +1,24 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCarKilometerInfoRequest { + + @NotNull + @Min(1) + private int carId; + + @NotNull + @Size(min = 2) + private String kilometerInfo; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java new file mode 100644 index 0000000..91d6c57 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java @@ -0,0 +1,24 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateEndedKilometerInfoRequest { + + @NotNull + @Min(1) + private int rentId; + + @NotNull + @Size(min = 2) + private String endedKilometerInfo; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java index 5581e87..3fa460a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java @@ -23,6 +23,9 @@ public class UpdateRentRequest { @NotNull private LocalDate rentReturnDate; + + @NotNull + private String startedKilometerInfo; @NotNull @Min(1) diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDamageDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDamageDao.java new file mode 100644 index 0000000..f02afd8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDamageDao.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.CarDamage; + +public interface CarDamageDao extends JpaRepository { + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java index a4195aa..511cb3a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java @@ -11,17 +11,21 @@ @Repository public interface CarDao extends JpaRepository { - + boolean existsByCarId(int carId); - + List findByDailyPriceLessThanEqual(double dailyPrice); - + @Modifying @Query("update Car set color.colorId=?2 where carId=?1") int updateColorToCarByCarId(int carId, int colorId); - + @Modifying @Query("update Car set brand.brandId=?2 where carId=?1") int updateBrandToCarByCarId(int carId, int brandId); + @Modifying + @Query("update Car c set c.kilometerInfo =?2 where c.carId = ?1") + int updateKilometerToCarByCarId(int carId, String kilometerInfo); + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java index 201111f..ede3e36 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java @@ -8,4 +8,6 @@ public interface CorporateCustomerDao extends JpaRepository{ - +public interface IndividualCustomerDao extends JpaRepository { + boolean existsByUserId(int userId); + boolean existsByEmail(String email); + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java index ec7de59..00f99d7 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java @@ -3,16 +3,22 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; import com.turkcell.rentacar.entities.concretes.Rent; public interface RentDao extends JpaRepository { - - List getOrderedAdditionalProductsByRentId(int rentId); + + List getOrderedAdditionalProductsByRentId(int rentId); boolean existsByCar_CarId(int carId); List getByCar_CarId(int carId); + @Modifying + @Query("update Rent r set r.endedKilometerInfo = ?2 where r.rentId = ?1") + int updateEndedKilometerInfoToRentByRentId(int rentId, String endedKilometerInfo); + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java index 38034f8..2ec5164 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java @@ -28,7 +28,7 @@ public class Car { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "car_id") private int carId; - + @Column(name = "daily_price") private double dailyPrice; @@ -38,6 +38,9 @@ public class Car { @Column(name = "description") private String description; + @Column(name = "kilometer_info") + private String kilometerInfo; + @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name = "brand_id") private Brand brand; @@ -48,9 +51,11 @@ public class Car { @OneToMany(mappedBy = "car") private List carMaintenences; - + @OneToMany(mappedBy = "car") private List rent; + @OneToMany(mappedBy = "car") + private List carDamages; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarDamage.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarDamage.java new file mode 100644 index 0000000..053df63 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CarDamage.java @@ -0,0 +1,34 @@ +package com.turkcell.rentacar.entities.concretes; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "car_damages") +public class CarDamage { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "car_damage_id") + private int carDamageId; + + @Column(name = "damage_info") + private String damageInfo; + + @ManyToOne + @JoinColumn(name = "car_id") + private Car car; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java index 53c554f..5c71db3 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java @@ -1,5 +1,8 @@ package com.turkcell.rentacar.entities.concretes; +import java.time.LocalDate; + +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.Table; @@ -9,13 +12,18 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; @Entity @Data @EqualsAndHashCode(callSuper = false) @AllArgsConstructor +@NoArgsConstructor @PrimaryKeyJoinColumn(name = "user_id") @Table(name = "customers") public class Customer extends User { + @Column(name = "date_registered") + private LocalDate dateRegistered = LocalDate.now(); + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java index b3b8151..be07b23 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -40,6 +40,12 @@ public class Rent { @Column(name = "rent_status") private boolean rentStatus = true; + @Column(name = "started_kilometer_info") + private String startedKilometerInfo; + + @Column(name = "ended_kilometer_info") + private String endedKilometerInfo; + @ManyToOne @JoinColumn(name = "car_id") private Car car; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/BusinessException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/BusinessException.java new file mode 100644 index 0000000..996325e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/BusinessException.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +import org.springframework.stereotype.Service; + +@Service +public class BusinessException extends RuntimeException{ + public BusinessException() { + + } + public BusinessException(String message) { + super(message); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInMaintenanceException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInMaintenanceException.java new file mode 100644 index 0000000..91b1ba8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInMaintenanceException.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class CarIsAlreadyInMaintenanceException extends BusinessException{ + + public CarIsAlreadyInMaintenanceException(String message) { + super(message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInRentException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInRentException.java new file mode 100644 index 0000000..4ae010c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/CarIsAlreadyInRentException.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class CarIsAlreadyInRentException extends BusinessException { + + public CarIsAlreadyInRentException(String message) { + super(message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityAlreadyExistsException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityAlreadyExistsException.java new file mode 100644 index 0000000..989dc5d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityAlreadyExistsException.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class EntityAlreadyExistsException extends BusinessException { + + public EntityAlreadyExistsException(String message) { + super(message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityNotFoundException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityNotFoundException.java new file mode 100644 index 0000000..c4b75ab --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/EntityNotFoundException.java @@ -0,0 +1,8 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class EntityNotFoundException extends BusinessException { + + public EntityNotFoundException(String message) { + super(message); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/NationalIdentityNotValidException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/NationalIdentityNotValidException.java new file mode 100644 index 0000000..9643430 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/NationalIdentityNotValidException.java @@ -0,0 +1,8 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class NationalIdentityNotValidException extends BusinessException { + + public NationalIdentityNotValidException(String message) { + super(message); + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/ReturnDateIsAfterNowException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/ReturnDateIsAfterNowException.java new file mode 100644 index 0000000..972dfc3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/ReturnDateIsAfterNowException.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class ReturnDateIsAfterNowException extends BusinessException { + + public ReturnDateIsAfterNowException(String message) { + super(message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/globalExceptions/ValidationExceptionHandling.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/globalExceptions/ValidationExceptionHandling.java new file mode 100644 index 0000000..99940cd --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/globalExceptions/ValidationExceptionHandling.java @@ -0,0 +1,28 @@ +package com.turkcell.rentacar.exceptions.globalExceptions; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.http.HttpStatus; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; + +import com.turkcell.rentacar.core.utilities.results.ErrorDataResult; + +public class ValidationExceptionHandling { + + @ExceptionHandler + @ResponseStatus(code = HttpStatus.BAD_REQUEST) + public ErrorDataResult handleValidationException( + MethodArgumentNotValidException argumentNotValidException) { + Map validationErrors = new HashMap(); + for (FieldError fieldError : argumentNotValidException.getBindingResult().getFieldErrors()) { + validationErrors.put(fieldError.getField(), fieldError.getDefaultMessage()); + } + ErrorDataResult errorResults = new ErrorDataResult<>(validationErrors, "Validate.Error"); + return errorResults; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/FakeNationalIdentityManager.java b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/FakeNationalIdentityManager.java new file mode 100644 index 0000000..b62dd41 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/FakeNationalIdentityManager.java @@ -0,0 +1,13 @@ +package com.turkcell.rentacar.nationalIdentityService; + +import org.springframework.stereotype.Service; + +@Service +public class FakeNationalIdentityManager implements NationalIdentityService { + + @Override + public boolean checkNationalIdentity(String nationalIdentity) { + return true; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java new file mode 100644 index 0000000..1acd62f --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java @@ -0,0 +1,35 @@ +package com.turkcell.rentacar.nationalIdentityService; + + +public class NationalIdentityManager implements NationalIdentityService{ + + @Override + public boolean checkNationalIdentity(String nationalIdentity) { + int[] numbers = parcala(nationalIdentity); + + if (numbers != null) { + boolean kosul1 = (numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4] + numbers[5] + numbers[6] + + numbers[7] + numbers[8] + numbers[9]) % 10 == numbers[10]; + boolean kosul2 = (((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 7) + + ((numbers[1] + numbers[3] + numbers[5] + numbers[7]) * 9)) % 10 == numbers[9]; + boolean kosul3 = ((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 8) % 10 == numbers[10]; + + return kosul1 && kosul2 && kosul3; + } + return false; + } + + private static int[] parcala(String nationalIdentity) { + int[] numbers = new int[11]; + + if (nationalIdentity == null || nationalIdentity.length() != 11) { + return null; + } + + for (int i = 0; i < 11; i++) { + numbers[i] = Integer.parseInt(nationalIdentity.substring(i, (i + 1))); + } + return numbers; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityService.java b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityService.java new file mode 100644 index 0000000..298ff45 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityService.java @@ -0,0 +1,7 @@ +package com.turkcell.rentacar.nationalIdentityService; + +public interface NationalIdentityService { + + public boolean checkNationalIdentity(String nationalIdentity); + +} From 1744081ce000f80570d7d23b88b200f05709454d Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Wed, 23 Mar 2022 16:40:22 +0300 Subject: [PATCH 6/7] Added PaymentService 23/03/2022 Added PaymentService Added NationalIdentityService Added BusinessMessages Added ZiraatBankPaymentService AddedHalkBankPaymentService --- .../api/controllers/CarsController.java | 4 +- .../api/controllers/PaymentsController.java | 46 +++++++ .../business/abstracts/ColorService.java | 7 +- .../business/abstracts/PaymentService.java | 15 +++ .../concretes/AdditionalProductManager.java | 13 +- .../business/concretes/BrandManager.java | 15 ++- .../business/concretes/CarDamageManager.java | 9 +- .../concretes/CarMaintenanceManager.java | 27 ++-- .../business/concretes/CarManager.java | 27 ++-- .../business/concretes/ColorManager.java | 51 +++---- .../concretes/CorporateCustomerManager.java | 11 +- .../business/concretes/CustomerManager.java | 3 +- .../concretes/IndividualCustomerManager.java | 13 +- .../business/concretes/InvoiceManager.java | 25 ++-- .../OrderedAdditionalProductManager.java | 21 +-- .../business/concretes/PaymentManager.java | 73 ++++++++++ .../business/concretes/RentManager.java | 33 ++--- .../business/concretes/UserManager.java | 7 +- .../constants/messages/BusinessMessages.java | 126 ++++++++++++++++++ .../createRequests/CreatePaymentRequest.java | 40 ++++++ .../deleteRequests/DeletePaymentRequest.java | 19 +++ .../updateRequests/UpdatePaymentRequest.java | 41 ++++++ .../BaseBankPaymentServiceAdapter.java | 12 ++ .../BaseNationalIdentityService.java | 6 + .../concretes/FakeBankPaymentManager.java | 18 +++ .../FakeNationalIdentityManager.java | 17 +++ .../HalkbankPaymentManagerAdapter.java | 29 ++++ .../NationalIdentityManagerAdapter.java | 26 ++++ .../ZiraatBankPaymentManagerAdapter.java | 30 +++++ .../dataAccess/abstracts/PaymentDao.java | 9 ++ .../dataAccess/abstracts/UserDao.java | 2 + .../rentacar/entities/concretes/Invoice.java | 4 + .../concretes/OrderedAdditionalProduct.java | 4 + .../rentacar/entities/concretes/Payment.java | 55 ++++++++ .../rentacar/entities/concretes/Rent.java | 3 + .../PaymentFailedException.java | 9 ++ .../HalkbankPaymentManager.java | 15 +++ .../HalkbankPaymentService.java | 9 ++ .../NationalIdentityManager.java | 19 +-- .../ZiraatBankPaymentManager.java | 14 ++ .../ZiraatBankPaymentService.java | 9 ++ 41 files changed, 786 insertions(+), 130 deletions(-) create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeletePaymentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseBankPaymentServiceAdapter.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseNationalIdentityService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeBankPaymentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeNationalIdentityManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/PaymentFailedException.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentService.java diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java index 441fc55..2405b02 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java @@ -67,7 +67,8 @@ public Result updateKilometerInfo(@RequestBody @Valid UpdateCarKilometerInfoRequ @Transactional @PostMapping("/updateColor") - public Result updateColor(@RequestBody @Valid UpdateColorToCarRequest updateColorToCarRequest) { + public Result updateColor( + @RequestBody @Valid UpdateColorToCarRequest updateColorToCarRequest) { return this.carService.updateColor(updateColorToCarRequest); } @@ -82,6 +83,7 @@ public DataResult> findByDailyPriceLessThanEqual( @RequestParam(value = "dailyPrice") double dailyPrice) { return this.carService.findByDailyPriceLessThanEqual(dailyPrice); } + @GetMapping("/getAllPaged") public DataResult> getAllPaged(@RequestParam(value = "pageNo") int pageNo, diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java new file mode 100644 index 0000000..577f3a5 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java @@ -0,0 +1,46 @@ +package com.turkcell.rentacar.api.controllers; + + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.PaymentService; +import com.turkcell.rentacar.business.requests.createRequests.CreatePaymentRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeletePaymentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdatePaymentRequest; +import com.turkcell.rentacar.core.utilities.results.Result; + +@RestController +@RequestMapping("/api/payments") +public class PaymentsController { + + private PaymentService paymentService; + + @Autowired + public PaymentsController(PaymentService paymentService) { + this.paymentService = paymentService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreatePaymentRequest createPaymentRequest) { + return this.paymentService.add(createPaymentRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdatePaymentRequest updatePaymentRequest) { + return this.paymentService.update(updatePaymentRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeletePaymentRequest deletePaymentRequest) { + return this.paymentService.delete(deletePaymentRequest); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java index 897d35a..87ab9d3 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/ColorService.java @@ -10,13 +10,14 @@ import java.util.List; public interface ColorService { - DataResult> getAll(); - - DataResult getById(int id); Result add(CreateColorRequest createColorRequest); Result update(UpdateColorRequest updateColorRequest); Result delete(DeleteColorRequest deleteColorRequest); + + DataResult> getAll(); + + DataResult getById(int id); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java new file mode 100644 index 0000000..6e06c16 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.requests.createRequests.CreatePaymentRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeletePaymentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdatePaymentRequest; +import com.turkcell.rentacar.core.utilities.results.Result; + +public interface PaymentService { + + Result add(CreatePaymentRequest createPaymentRequest); + + Result update(UpdatePaymentRequest updatePaymentRequest); + + Result delete(DeletePaymentRequest deletePaymentRequest); +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java index 60b46fb..3c70e55 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.AdditionalProductService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.AdditionalProductListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateAdditionalProductRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteAdditionalProductRequest; @@ -43,7 +44,7 @@ public Result add(CreateAdditionalProductRequest createAdditionalProductRequest) this.additionalProductDao.save(additionalProduct); - return new SuccessResult("AdditionalProduct added successfully."); + return new SuccessResult(BusinessMessages.ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY); } @Override @@ -56,7 +57,7 @@ public Result update(UpdateAdditionalProductRequest updateAdditionalProductReque this.additionalProductDao.save(additionalProduct); - return new SuccessResult("AdditionalProduct updated successfully."); + return new SuccessResult(BusinessMessages.ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY); } @Override @@ -69,7 +70,7 @@ public Result delete(DeleteAdditionalProductRequest deleteAdditionalProductReque this.additionalProductDao.delete(additionalProduct); - return new SuccessResult("AdditionalProduct deleted successfully."); + return new SuccessResult(BusinessMessages.ADDITIONAL_PRODUCT_DELETED_SUCCESSFULLY); } @Override @@ -80,18 +81,18 @@ public DataResult> getAll() { .forDto().map(additionalProduct, AdditionalProductListDto.class)).collect(Collectors.toList()); return new SuccessDataResult>(response, - "AdditionalProducts listed successfully."); + BusinessMessages.ADDITIONAL_PRODUCT_LISTED_SUCCESSFULLY); } private void checkIfAdditionalProductExists(int additionalProductId) { if (!this.additionalProductDao.existsByAdditionalProductId(additionalProductId)) { - throw new EntityNotFoundException("AdditionalProduct not found!"); + throw new EntityNotFoundException(BusinessMessages.ADDITIONAL_PRODUCT_NOT_FOUND); } } private void checkIfAdditionalProducNameExists(String additionalProductName) { if (this.additionalProductDao.existsByAdditionalProductName(additionalProductName)) { - throw new EntityAlreadyExistsException("AdditionalProduct already exists!"); + throw new EntityAlreadyExistsException(BusinessMessages.ADDITIONAL_PRODUCT_ALREADY_EXISTS); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java index 23d4fc1..fd86bf8 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -1,6 +1,7 @@ package com.turkcell.rentacar.business.concretes; import com.turkcell.rentacar.business.abstracts.BrandService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.BrandListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateBrandRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteBrandRequest; @@ -41,7 +42,7 @@ public DataResult> getAll() { .map(brand -> this.modelMapperService.forDto().map(brand, BrandListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Brands listed successfully."); + return new SuccessDataResult>(response, BusinessMessages.BRANDS_LISTED_SUCCESSFULLY); } @Override @@ -53,7 +54,7 @@ public Result add(CreateBrandRequest createBrandRequest) { this.brandDao.save(brand); - return new SuccessResult("Brand added successfully."); + return new SuccessResult(BusinessMessages.BRAND_ADDED_SUCCESSFULLY); } @Override @@ -62,7 +63,7 @@ public DataResult getById(int id) { Brand result = this.brandDao.getBrandByBrandId(id); BrandListDto response = this.modelMapperService.forDto().map(result, BrandListDto.class); - return new SuccessDataResult(response, "Brand listed successfully."); + return new SuccessDataResult(response, BusinessMessages.BRAND_LISTED_SUCCESSFULLY); } @Override @@ -75,7 +76,7 @@ public Result update(UpdateBrandRequest updateBrandRequest) { this.brandDao.save(brand); - return new SuccessResult("Brand updated successfully."); + return new SuccessResult(BusinessMessages.BRAND_UPDATED_SUCCESSFULLY); } @Override @@ -87,18 +88,18 @@ public Result delete(DeleteBrandRequest deleteBrandRequest) { this.brandDao.deleteById(brand.getBrandId()); - return new SuccessResult("Brand deleted successfully."); + return new SuccessResult(BusinessMessages.BRAND_DELETED_SUCCESSFULLY); } private void checkIfBrandExists(int brandId) { if (!this.brandDao.existsById(brandId)) { - throw new EntityNotFoundException("Brand not found!"); + throw new EntityNotFoundException(BusinessMessages.BRAND_ALREADY_EXISTS); } } private void checkIfBrandNameExists(String brandName) { if (this.brandDao.existsBrandByBrandName(brandName)) { - throw new EntityAlreadyExistsException("Brand already exists."); + throw new EntityAlreadyExistsException(BusinessMessages.BRAND_NOT_FOUND); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java index 115e9fb..7770d05 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CarDamageService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.CarDamageListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateCarDamageRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarDamageRequest; @@ -38,7 +39,7 @@ public Result add(CreateCarDamageRequest createCarDamageRequest) { this.carDamageDao.save(carDamage); - return new SuccessResult("CarDamage added successfully."); + return new SuccessResult(BusinessMessages.CAR_DAMAGE_ADDED_SUCCESSFULLY); } @Override @@ -48,7 +49,7 @@ public Result update(UpdateCarDamageRequest updateCarDamageRequest) { this.carDamageDao.save(carDamage); - return new SuccessResult("CarDamage updated successfully."); + return new SuccessResult(BusinessMessages.CAR_DAMAGE_UPDATED_SUCCESSFULLY); } @Override @@ -58,7 +59,7 @@ public Result delete(DeleteCarDamageRequest deleteCarDamageRequest) { this.carDamageDao.delete(carDamage); - return new SuccessResult("CarDamage deleted successfully."); + return new SuccessResult(BusinessMessages.CAR_DAMAGE_DELETED_SUCCESSFULLY); } @Override @@ -68,7 +69,7 @@ public DataResult> getAll() { .map(carDamage -> this.modelMapperService.forDto().map(carDamage, CarDamageListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "CarDamages listed successfully."); + return new SuccessDataResult>(response, BusinessMessages.CAR_DAMAGE_LISTED_SUCCESSFULLY); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java index 61c35f9..8e37ba0 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CarMaintenanceService; import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.getDtos.CarMaintenanceGetDto; import com.turkcell.rentacar.business.dtos.listDtos.CarMaintenanceListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateCarMaintenanceRequest; @@ -50,7 +51,8 @@ public DataResult> getAll() { carMaintenance -> this.modelMapperService.forDto().map(carMaintenance, CarMaintenanceListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "CarMaintenances listed successfully."); + return new SuccessDataResult>(response, + BusinessMessages.CAR_MAINTENANCES_LISTED_SUCCESSFULLY); } @Override @@ -59,7 +61,8 @@ public DataResult getCarMaintenanceDetailsByCarMaintenance CarMaintenance result = this.carMaintenanceDao.getById(carMaintenanceId); CarMaintenanceGetDto response = this.modelMapperService.forDto().map(result, CarMaintenanceGetDto.class); - return new SuccessDataResult(response, "CarMaintenance listed successfully."); + return new SuccessDataResult(response, + BusinessMessages.CAR_MAINTENANCE_LISTED_SUCCESSFULLY); } @Override @@ -74,7 +77,7 @@ public Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest) { this.carMaintenanceDao.save(carMaintenance); - return new SuccessResult("CarMaintenance added successfully."); + return new SuccessResult(BusinessMessages.CAR_MAINTENANCE_ADDED_SUCCESSFULLY); } @Override @@ -88,7 +91,7 @@ public Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest) { this.carMaintenanceDao.save(carMaintenance); - return new SuccessResult("CarMaintenance updated successfully."); + return new SuccessResult(BusinessMessages.CAR_MAINTENANCE_UPDATED_SUCCESSFULLY); } @Override @@ -101,7 +104,7 @@ public Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) { this.carMaintenanceDao.delete(carMaintenance); - return new SuccessResult("CarMaintenance deleted successfully."); + return new SuccessResult(BusinessMessages.CAR_MAINTENANCE_DELETED_SUCCESSFULLY); } @Override @@ -113,23 +116,23 @@ public DataResult> getByCarId(int carId) { .collect(Collectors.toList()); return new SuccessDataResult>(response, - "CarMaintenances for Car listed successfully."); + BusinessMessages.CAR_MAINTENANCES_FOR_CAR_LISTED_SUCCESSFULLY); } @Override public Result checkIfCarIsAlreadyInMaintenance(int carId) { for (CarMaintenance carMaintenance : this.carMaintenanceDao.getByCar_CarId(carId)) { if (carMaintenance.getReturnDate() != null) { - return new SuccessResult("Car not in maintenance"); + return new SuccessResult(BusinessMessages.CAR_NOT_IN_MAINTENANCE); } } - return new ErrorResult("Car in maintenance!"); + return new ErrorResult(BusinessMessages.CAR_ALREADY_IN_MAINTENANCE); } private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) { if (this.carMaintenanceDao.existsByCar_CarId(carId)) { if (!checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { - throw new CarIsAlreadyInMaintenanceException("Car in maintenance!"); + throw new CarIsAlreadyInMaintenanceException(BusinessMessages.CAR_ALREADY_IN_MAINTENANCE); } } } @@ -137,7 +140,7 @@ private void checkIfCarIsAlreadyInMaintenanceIsSuccess(int carId) { private void checkIfCarIsAlreadyInRent(int carId) { if (!checkIfCarExistInRentTable(carId)) { if (!this.rentService.checkIfCarAlreadyInRent(carId).isSuccess()) { - throw new CarIsAlreadyInRentException("The Car cannot be sent for maintenance because it is on Rent."); + throw new CarIsAlreadyInRentException(BusinessMessages.CAR_ALREADY_IN_RENT); } } } @@ -148,14 +151,14 @@ private boolean checkIfCarExistInRentTable(int carId) { private void existByCarMaintenance(int carMaintenanceId) { if (!this.carMaintenanceDao.existsById(carMaintenanceId)) { - throw new EntityNotFoundException("CarMaintenance not found!"); + throw new EntityNotFoundException(BusinessMessages.CAR_MAINTENANCE_NOT_FOUND); } } private void checkIfReturnDateIsAfterNow(LocalDate returnDate) { if (returnDate != null) { if (returnDate.isAfter(LocalDate.now())) { - throw new ReturnDateIsAfterNowException("A future date cannot be entered!"); + throw new ReturnDateIsAfterNowException(BusinessMessages.A_FUTURE_DATE_CANNOT_BE_ENTERED); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java index dbbb6b2..f93251a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CarService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.CarListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateCarRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCarRequest; @@ -45,7 +46,7 @@ public DataResult> getAll() { List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Cars listed successfully."); + return new SuccessDataResult>(response, BusinessMessages.CARS_LISTED_SUCCESSFULLY); } @Override @@ -55,7 +56,7 @@ public Result add(CreateCarRequest createCarRequest) { this.carDao.save(car); - return new SuccessResult("Car added successfully."); + return new SuccessResult(BusinessMessages.CAR_ADDED_SUCCESSFULLY); } @Override @@ -71,7 +72,7 @@ public Result update(UpdateCarRequest updateCarRequest) { this.carDao.save(updatedCar); - return new SuccessResult("Car updated successfully."); + return new SuccessResult(BusinessMessages.CAR_UPDATED_SUCCESSFULLY); } @Override @@ -83,7 +84,7 @@ public Result delete(DeleteCarRequest deleteCarRequest) { this.carDao.deleteById(car.getCarId()); - return new SuccessResult("Car deleted successfully."); + return new SuccessResult(BusinessMessages.CAR_DELETED_SUCCESSFULLY); } @Override @@ -93,7 +94,7 @@ public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) { this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), updateColorToCarRequest.getColorId()); - return new SuccessResult("The Color of the Car updated successfully."); + return new SuccessResult(BusinessMessages.COLOR_CAR_UPDATED_SUCCESSFULLY); } @Override @@ -103,7 +104,7 @@ public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) { this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), updateBrandToCarRequest.getBrandId()); - return new SuccessResult("The Brand of the Car updated successfully."); + return new SuccessResult(BusinessMessages.BRAND_CAR_UPDATED_SUCCESSFULLY); } @Override @@ -112,7 +113,7 @@ public DataResult getById(int id) { Car result = this.carDao.getById(id); CarListDto response = this.modelMapperService.forDto().map(result, CarListDto.class); - return new SuccessDataResult(response, "Car listed successfully"); + return new SuccessDataResult(response, BusinessMessages.CAR_LISTED_SUCCESSFULLY); } @Override @@ -122,7 +123,8 @@ public DataResult> findByDailyPriceLessThanEqual(double dailyPr List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Cars successfully listed by dailyPrice."); + return new SuccessDataResult>(response, + BusinessMessages.CAR_LISTED_SUCCESSFULLY_BY_DAILY_PRICE); } @Override @@ -134,7 +136,8 @@ public DataResult> getAllPaged(int pageNo, int pageSize) { List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Cars are paginated and listed successfully."); + return new SuccessDataResult>(response, + BusinessMessages.CAR_LISTED_AND_PAGINATED_SUCCESSFULLY); } @Override @@ -146,7 +149,7 @@ public DataResult> getAllSorted(boolean sort) { List response = result.stream() .map(car -> this.modelMapperService.forDto().map(car, CarListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Cars are sorted successfully."); + return new SuccessDataResult>(response, BusinessMessages.CAR_SORTED_SUCCESSFULLY); } @Override @@ -155,12 +158,12 @@ public Result updateKilometerInfo(UpdateCarKilometerInfoRequest updateCarKilomet this.carDao.updateKilometerToCarByCarId(updateCarKilometerInfoRequest.getCarId(), updateCarKilometerInfoRequest.getKilometerInfo()); - return new SuccessResult("The KilometerInfo of the Car updated successfully."); + return new SuccessResult(BusinessMessages.KILOMETER_INFO_CAR_UPDATED_SUCCESSFULLY); } private void checkIfCarExists(int carId) { if (!this.carDao.existsByCarId(carId)) { - throw new EntityNotFoundException("Car not found!"); + throw new EntityNotFoundException(BusinessMessages.CAR_NOT_FOUND); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java index e5c84ba..5093a45 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -1,6 +1,7 @@ package com.turkcell.rentacar.business.concretes; import com.turkcell.rentacar.business.abstracts.ColorService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.ColorListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateColorRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteColorRequest; @@ -33,17 +34,6 @@ public ColorManager(ColorDao colorDao, ModelMapperService modelMapperService) { this.modelMapperService = modelMapperService; } - @Override - public DataResult> getAll() { - - List result = this.colorDao.findAll(); - List response = result.stream() - .map(color -> this.modelMapperService.forDto().map(color, ColorListDto.class)) - .collect(Collectors.toList()); - - return new SuccessDataResult>(response, "Colors listed successfully."); - } - @Override public Result add(CreateColorRequest createColorRequest) { @@ -53,16 +43,7 @@ public Result add(CreateColorRequest createColorRequest) { this.colorDao.save(color); - return new SuccessResult("Color added successfully."); - } - - @Override - public DataResult getById(int id) { - - Color result = this.colorDao.getById(id); - ColorListDto response = this.modelMapperService.forDto().map(result, ColorListDto.class); - - return new SuccessDataResult(response, "Color listed successfully."); + return new SuccessResult(BusinessMessages.COLOR_ADDED_SUCCESSFULLY); } @Override @@ -75,7 +56,7 @@ public Result update(UpdateColorRequest updateColorRequest) { this.colorDao.save(color); - return new SuccessResult("Color updated successfully."); + return new SuccessResult(BusinessMessages.COLOR_UPDATED_SUCCESSFULLY); } @Override @@ -87,18 +68,38 @@ public Result delete(DeleteColorRequest deleteColorRequest) { this.colorDao.deleteById(color.getColorId()); - return new SuccessResult("Color deleted successfully."); + return new SuccessResult(BusinessMessages.COLOR_DELETED_SUCCESSFULLY); + } + + @Override + public DataResult> getAll() { + + List result = this.colorDao.findAll(); + List response = result.stream() + .map(color -> this.modelMapperService.forDto().map(color, ColorListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, BusinessMessages.COLORS_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult getById(int id) { + + Color result = this.colorDao.getById(id); + ColorListDto response = this.modelMapperService.forDto().map(result, ColorListDto.class); + + return new SuccessDataResult(response, BusinessMessages.COLOR_LISTED_SUCCESSFULLY); } private void checkIfColorNameExists(String colorName) { if (this.colorDao.existsColorByColorName(colorName)) { - throw new EntityAlreadyExistsException("Color already exists!"); + throw new EntityAlreadyExistsException(BusinessMessages.COLOR_ALREADY_EXISTS); } } private void checkIfColorExists(int colorId) { if (!this.colorDao.existsById(colorId)) { - throw new EntityNotFoundException("Color not found!"); + throw new EntityNotFoundException(BusinessMessages.COLOR_NOT_FOUND); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java index b73bec6..edb0ccd 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CorporateCustomerService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.requests.createRequests.CreateCorporateCustomerRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCorporateCustomerRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateCorporateCustomerRequest; @@ -37,7 +38,7 @@ public Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest) this.corporateCustomerDao.save(corporateCustomer); - return new SuccessResult("Corporate customer added successfully."); + return new SuccessResult(BusinessMessages.CORPORATE_CUSTOMER_ADDED_SUCCESSFULLY); } @Override @@ -51,7 +52,7 @@ public Result update(UpdateCorporateCustomerRequest updateCorporateCustomerReque this.corporateCustomerDao.save(corporateCustomer); - return new SuccessResult("Corporate customer updated successfully."); + return new SuccessResult(BusinessMessages.CORPORATE_CUSTOMER_UPDATED_SUCCESSFULLY); } @Override @@ -64,18 +65,18 @@ public Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerReque this.corporateCustomerDao.delete(corporateCustomer); - return new SuccessResult("Corporate customer deleted successfully."); + return new SuccessResult(BusinessMessages.CORPORATE_CUSTOMER_DELETED_SUCCESSFULLY); } private void checkIfCorporateCustomerExists(int corporateCustomerId) { if (!this.corporateCustomerDao.existsById(corporateCustomerId)) { - throw new EntityNotFoundException("Corporate Customer not found!"); + throw new EntityNotFoundException(BusinessMessages.CORPORATE_CUSTOMER_NOT_FOUND); } } private void checkIfEmailExists(String email) { if (this.corporateCustomerDao.existsByEmail(email)) { - throw new EntityAlreadyExistsException("Email already exists!"); + throw new EntityAlreadyExistsException(BusinessMessages.EMAIL_ALREADY_EXISTS); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java index 17698da..cb14b33 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.CustomerService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.CustomerListDto; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; @@ -34,7 +35,7 @@ public DataResult> getAll() { .map(customer -> modelMapperService.forDto().map(customer, CustomerListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Customers listed successfully."); + return new SuccessDataResult>(response, BusinessMessages.CUSTOMERS_LISTED_SUCCESSFULLY); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java index 0e21f2c..e497084 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.IndividualCustomerService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.requests.createRequests.CreateIndividualCustomerRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteIndividualCustomerRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateIndividualCustomerRequest; @@ -43,7 +44,7 @@ public Result add(CreateIndividualCustomerRequest createIndividualCustomerReques this.individualCustomerDao.save(individualCustomer); - return new SuccessResult("Individual customer added successfully."); + return new SuccessResult(BusinessMessages.INDIVIDUAL_CUSTOMER_ADDED_SUCCESSFULLY); } @Override @@ -58,7 +59,7 @@ public Result update(UpdateIndividualCustomerRequest updateIndividualCustomerReq this.individualCustomerDao.save(individualCustomer); - return new SuccessResult("Individual customer updated successfully."); + return new SuccessResult(BusinessMessages.INDIVIDUAL_CUSTOMER_UPDATED_SUCCESSFULLY); } @Override @@ -71,24 +72,24 @@ public Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerReq this.individualCustomerDao.delete(individualCustomer); - return new SuccessResult("Individual customer deleted successfully."); + return new SuccessResult(BusinessMessages.INDIVIDUAL_CUSTOMER_DELETED_SUCCESSFULLY); } private void checkIfIndividualCustomerExists(int individualCustomerId) { if (!this.individualCustomerDao.existsById(individualCustomerId)) { - throw new EntityNotFoundException("Individual Customer not found!"); + throw new EntityNotFoundException(BusinessMessages.INDIVIDUAL_CUSTOMER_NOT_FOUND); } } private void checkIfEmailExists(String email) { if (this.individualCustomerDao.existsByEmail(email)) { - throw new EntityAlreadyExistsException("Email already exists!"); + throw new EntityAlreadyExistsException(BusinessMessages.EMAIL_ALREADY_EXISTS); } } private void checkIfNationalIdentityIsReal(String nationalIdentity) { if (!this.nationalIdentityService.checkNationalIdentity(nationalIdentity)) { - throw new NationalIdentityNotValidException("NationalIdentity not valid!"); + throw new NationalIdentityNotValidException(BusinessMessages.NATIONAL_IDENTITY_NOT_VALID); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java index c5320d1..74163dd 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java @@ -11,6 +11,7 @@ import com.turkcell.rentacar.business.abstracts.InvoiceService; import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.InvioceListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateInvoiceRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteInvoiceRequest; @@ -51,7 +52,7 @@ public Result add(CreateInvoiceRequest createInvoiceRequest) { this.invoiceDao.save(invoice); - return new SuccessResult("Invoice added successfully."); + return new SuccessResult(BusinessMessages.INVOICE_ADDED_SUCCESSFULLY); } @@ -66,7 +67,7 @@ public Result Update(UpdateInvoiceRequest updateInvoiceRequest) { this.invoiceDao.save(invoice); - return new SuccessResult("Invoice updated successfully."); + return new SuccessResult(BusinessMessages.INVOICE_UPDATED_SUCCESSFULLY); } @Override @@ -76,7 +77,7 @@ public Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) { this.invoiceDao.delete(invoice); - return new SuccessResult("Invoice deleted successfully."); + return new SuccessResult(BusinessMessages.INVOICE_DELETED_SUCCESSFULLY); } @Override @@ -87,7 +88,7 @@ public DataResult> getAll() { .map(invoice -> modelMapperService.forDto().map(invoice, InvioceListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "Invoices listed successfully."); + return new SuccessDataResult>(response, BusinessMessages.INVOICES_LISTED_SUCCESSFULLY); } @Override @@ -98,7 +99,7 @@ public DataResult getByRentId(int rentId) { Invoice result = this.invoiceDao.getByRent_RentId(rentId); InvioceListDto response = this.modelMapperService.forDto().map(result, InvioceListDto.class); - return new SuccessDataResult(response, "Invoice listed successfully."); + return new SuccessDataResult(response, BusinessMessages.INVOICE_LISTED_SUCCESSFULLY); } @Override @@ -106,7 +107,8 @@ public DataResult> getOrderedAdditionalProductByR List result = this.rentService.getOrderedAdditionalProductsByRentId(rentId).getData(); - return new SuccessDataResult>(result, "Invoice listed successfully."); + return new SuccessDataResult>(result, + BusinessMessages.INVOICE_LISTED_SUCCESSFULLY); } @Override @@ -119,7 +121,8 @@ public DataResult> getByUserId(int userId) { .map(invoice -> modelMapperService.forDto().map(invoice, InvioceListDto.class)) .collect(Collectors.toList()); - return new SuccessDataResult>(response, "User's invoice listed successfully."); + return new SuccessDataResult>(response, + BusinessMessages.USERS_INVOICES_LISTED_SUCCESSFULLY); } @Override @@ -131,7 +134,7 @@ public DataResult> getAllByBetweenStartDateAndEndDate(Local .collect(Collectors.toList()); return new SuccessDataResult>(response, - "Invoices between start date and end date listed successfully."); + BusinessMessages.INVOICE_BETWEEN_START_DATE_AND_END_DATE_LISTED_SUCCESSFULLY); } private double calculateTotalPrice(Invoice invoice) { @@ -161,7 +164,7 @@ private double calculateIfCityIsDifferentPrice(int rentId) { private void checkIfInvoiceExists(int invoiceId) { if (!this.invoiceDao.existsById(invoiceId)) { - throw new EntityNotFoundException("Invoice not found!"); + throw new EntityNotFoundException(BusinessMessages.INVOICE_NOT_FOUND); } } @@ -174,13 +177,13 @@ private boolean checkIfInvoiceHasOrderedAdditionalProduct(int rentId) { private void checkIfRentExists(int rentId) { if (!this.invoiceDao.existsByRent_RentId(rentId)) { - throw new EntityNotFoundException("Rent not found!"); + throw new EntityNotFoundException(BusinessMessages.RENT_NOT_FOUND); } } private void checkIfUserExists(int userId) { if (!this.invoiceDao.existsByUser_UserId(userId)) { - throw new EntityNotFoundException("User not found!"); + throw new EntityNotFoundException(BusinessMessages.USER_NOT_FOUND); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java index 752c9fa..78047f3 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.listDtos.OrderedAdditionalProductListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateOrderedAdditionalProductRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteOrderedAdditionalProductRequest; @@ -43,7 +44,7 @@ public Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalP orderedAdditionalProduct.setOrderedAdditionalProductId(0); this.orderedAdditionalProductDao.save(orderedAdditionalProduct); - return new SuccessResult("OrderedAdditionalProduct added successfully."); + return new SuccessResult(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY); } @Override @@ -56,7 +57,7 @@ public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAddition this.orderedAdditionalProductDao.save(orderedAdditionalProduct); - return new SuccessResult("OrderedAdditionalProduct updated successfully."); + return new SuccessResult(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY); } @Override @@ -69,7 +70,7 @@ public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAddition this.orderedAdditionalProductDao.delete(orderedAdditionalProduct); - return new SuccessResult("OrderedAdditionalProduct deleted successfully."); + return new SuccessResult(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_DELETED_SUCCESSFULLY); } @Override @@ -82,7 +83,7 @@ public DataResult> getAll() { .collect(Collectors.toList()); return new SuccessDataResult>(response, - "OrderedAdditionalProducts listed successfully."); + BusinessMessages.ORDERED_ADDITIONAL_PRODUCTS_LISTED_SUCCESSFULLY); } @Override @@ -95,7 +96,7 @@ public DataResult> getByRentId(int rentId) .collect(Collectors.toList()); return new SuccessDataResult>(response, - "OrderedAdditionalProducts for Rent listed successfully."); + BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_FOR_RENT_LISTED_SUCCESSFULLY); } @Override @@ -117,28 +118,28 @@ public DataResult calculateOrderedAdditionalPrice(int rentId) { } return new SuccessDataResult(orderedAdditionalProductsPrice, - "OrderedAdditionalProducts price calculated successfully."); + BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_PRICE_CALCULATED_SUCCESSFULLY); } @Override public Result checkIfRentExists(int rentId) { if (this.orderedAdditionalProductDao.existsByRent_RentId(rentId)) { - return new SuccessResult("Rent is exists in OrderedAdditionalProduct."); + return new SuccessResult(BusinessMessages.RENT_ALREADY_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); } - return new ErrorResult("Rent is not exists in OrderedAdditionalProduct."); + return new ErrorResult(BusinessMessages.RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); } private void checkIfRentExistsIsSuccess(int rentId) { if (!checkIfRentExists(rentId).isSuccess()) { - throw new EntityNotFoundException("Rent is not exists in OrderedAdditionalProduct."); + throw new EntityNotFoundException(BusinessMessages.RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); } } private void checkIfOrderedAdditionalProductExists(int orderedAdditionalProductId) { if (!this.orderedAdditionalProductDao.existsById(orderedAdditionalProductId)) { - throw new EntityNotFoundException("OrderedAdditionalProduct is not found!"); + throw new EntityNotFoundException(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_NOT_FOUND); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java new file mode 100644 index 0000000..ea8be5e --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java @@ -0,0 +1,73 @@ +package com.turkcell.rentacar.business.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.PaymentService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; +import com.turkcell.rentacar.business.requests.createRequests.CreatePaymentRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeletePaymentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdatePaymentRequest; +import com.turkcell.rentacar.core.services.abstracts.BaseBankPaymentServiceAdapter; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.PaymentDao; +import com.turkcell.rentacar.entities.concretes.Payment; +import com.turkcell.rentacar.exceptions.businessExceptions.PaymentFailedException; + +@Service +public class PaymentManager implements PaymentService { + + private PaymentDao paymentDao; + private ModelMapperService modelMapperService; + private BaseBankPaymentServiceAdapter baseBankPaymentServiceAdapter; + + @Autowired + public PaymentManager(PaymentDao paymentDao, ModelMapperService modelMapperService, + @Qualifier("halkbank") BaseBankPaymentServiceAdapter baseBankPaymentServiceAdapter) { + this.paymentDao = paymentDao; + this.modelMapperService = modelMapperService; + this.baseBankPaymentServiceAdapter = baseBankPaymentServiceAdapter; + } + + @Override + public Result add(CreatePaymentRequest createPaymentRequest) { + + Payment payment = this.modelMapperService.forRequest().map(createPaymentRequest, Payment.class); + + checkIfPaymentIsSuccess(payment); + + this.paymentDao.save(payment); + + return new SuccessResult(BusinessMessages.PAYMENT_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdatePaymentRequest updatePaymentRequest) { + + Payment payment = this.modelMapperService.forRequest().map(updatePaymentRequest, Payment.class); + + this.paymentDao.save(payment); + + return new SuccessResult(BusinessMessages.PAYMENT_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeletePaymentRequest deletePaymentRequest) { + + Payment payment = this.modelMapperService.forRequest().map(deletePaymentRequest, Payment.class); + + this.paymentDao.delete(payment); + + return new SuccessResult(BusinessMessages.PAYMENT_DELETED_SUCCESSFULLY); + } + + private void checkIfPaymentIsSuccess(Payment payment) { + if (!this.baseBankPaymentServiceAdapter.payment(payment)) { + throw new PaymentFailedException(BusinessMessages.PAYMENT_FAILED); + } + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java index 9b6eba3..b34f538 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -11,6 +11,7 @@ import com.turkcell.rentacar.business.abstracts.CarMaintenanceService; import com.turkcell.rentacar.business.abstracts.RentService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.dtos.getDtos.RentGetDto; import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; @@ -56,7 +57,7 @@ public Result addCorporateCustomer(CreateRentRequest createRentRequest) { this.rentDao.save(rent); - return new SuccessResult("Rent added successfully."); + return new SuccessResult(BusinessMessages.RENT_ADDED_SUCCESSFULLY); } @Override @@ -71,7 +72,7 @@ public Result addIndividualCustomer(CreateRentRequest createRentRequest) { this.rentDao.save(rent); - return new SuccessResult("Rent added successfully."); + return new SuccessResult(BusinessMessages.RENT_ADDED_SUCCESSFULLY); } @Override @@ -83,7 +84,7 @@ public Result update(UpdateRentRequest updateRentRequest) { this.rentDao.save(rent); - return new SuccessResult("Rent updated successfully."); + return new SuccessResult(BusinessMessages.RENT_UPDATED_SUCCESSFULLY); } @Override @@ -93,7 +94,7 @@ public Result delete(DeleteRentRequest deleteRentRequest) { this.rentDao.delete(rent); - return new SuccessResult("Rent deleted successfully."); + return new SuccessResult(BusinessMessages.RENT_DELETED_SUCCESSFULLY); } @Override @@ -103,7 +104,7 @@ public DataResult> getAll() { List response = result.stream() .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Rent listed successfully."); + return new SuccessDataResult>(response, BusinessMessages.RENTS_LISTED_SUCCESSFULLY); } @Override @@ -112,7 +113,7 @@ public DataResult getRentDetailsByRentId(int rentId) { Rent result = this.rentDao.getById(rentId); RentGetDto response = this.modelMapperService.forDto().map(result, RentGetDto.class); - return new SuccessDataResult(response, "Rents listed successfully."); + return new SuccessDataResult(response, BusinessMessages.RENT_LISTED_SUCCESSFULLY); } @Override @@ -122,17 +123,17 @@ public DataResult> getByCarId(int carId) { List response = result.stream() .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); - return new SuccessDataResult>(response, "Rent for Car listed successfuly."); + return new SuccessDataResult>(response, BusinessMessages.RENTS_FOR_CAR_LISTED_SUCCESSFULLY); } @Override public Result checkIfCarAlreadyInRent(int carId) { for (Rent rent : this.rentDao.getByCar_CarId(carId)) { if (!rent.isRentStatus()) { - return new SuccessResult("Car not in Rent!"); + return new SuccessResult(BusinessMessages.CAR_NOT_IN_RENT); } } - return new ErrorResult("Car in Rent!"); + return new ErrorResult(BusinessMessages.CAR_ALREADY_IN_RENT); } @Override @@ -141,7 +142,7 @@ public DataResult> getOrderedAdditionalProductsBy List result = this.rentDao.getOrderedAdditionalProductsByRentId(rentId); return new SuccessDataResult>(result, - "OrderedAdditionalProducts for Rent listed successfully."); + BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_FOR_RENT_LISTED_SUCCESSFULLY); } @Override @@ -153,7 +154,7 @@ public DataResult calculateRentTotalPrice(int rentId) { double rentTotalPrice = (rent.getCar().getDailyPrice() * usageTime); - return new SuccessDataResult<>(rentTotalPrice, "Rent total price calculated successfully."); + return new SuccessDataResult<>(rentTotalPrice, BusinessMessages.RENT_TOTAL_PRICE_CALCULATED_SUCCESSFULLY); } @Override @@ -162,10 +163,10 @@ public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId) { Rent rent = this.rentDao.getById(rentId); if (!rent.getRentalCity().equals(rent.getReturnCity())) { - return new SuccessResult("Cities are different!"); + return new SuccessResult(BusinessMessages.CITIES_ARE_DIFFERENT); } - return new ErrorResult("Cities are same!"); + return new ErrorResult(BusinessMessages.CITIES_ARE_SAME); } @Override @@ -174,13 +175,13 @@ public Result updateEndedKilometer(UpdateEndedKilometerInfoRequest updateEndedKi this.rentDao.updateEndedKilometerInfoToRentByRentId(updateEndedKilometerInfoRequest.getRentId(), updateEndedKilometerInfoRequest.getEndedKilometerInfo()); - return new SuccessResult("EndedKilometerInfo updated successfully."); + return new SuccessResult(BusinessMessages.ENDED_KILOMETER_INFO_UPDATED_SUCCESSFULLY); } private void checkIfCarAlreadyInRentIsSuccess(int carId) { if (this.rentDao.existsByCar_CarId(carId)) { if (!checkIfCarAlreadyInRent(carId).isSuccess()) { - throw new CarIsAlreadyInRentException("Car in Rent!"); + throw new CarIsAlreadyInRentException(BusinessMessages.CAR_ALREADY_IN_RENT); } } } @@ -188,7 +189,7 @@ private void checkIfCarAlreadyInRentIsSuccess(int carId) { private void checkIfCarAlreadyInMaintenance(int carId) { if (!checkIfCarExistInCarMaintenanceTable(carId)) { if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { - throw new CarIsAlreadyInMaintenanceException("The Car cannot be rented as it is in maintenance."); + throw new CarIsAlreadyInMaintenanceException(BusinessMessages.CAR_ALREADY_IN_MAINTENANCE); } } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java index 4dccbc5..f96fc8b 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.UserService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.Result; @@ -36,18 +37,18 @@ public Result update(UpdateUserRequest updateUserRequest) { this.userDao.save(user); - return new SuccessResult("User updated successfully."); + return new SuccessResult(BusinessMessages.USER_UPDATED_SUCCESSFULLY); } private void checkIfUserExists(int userId) { if (!this.userDao.existsById(userId)) { - throw new EntityNotFoundException("User not found!"); + throw new EntityNotFoundException(BusinessMessages.USER_NOT_FOUND); } } private void existsByEmail(String email) { if (this.userDao.existsByEmail(email)) { - throw new EntityAlreadyExistsException("Email is already exists!"); + throw new EntityAlreadyExistsException(BusinessMessages.EMAIL_ALREADY_EXISTS); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java b/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java new file mode 100644 index 0000000..577f0c9 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java @@ -0,0 +1,126 @@ +package com.turkcell.rentacar.business.constants.messages; + +public class BusinessMessages { + + // ADDITIONAL_PRODUCT + public static final String ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY = "ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY"; + public static final String ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY = "ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY"; + public static final String ADDITIONAL_PRODUCT_DELETED_SUCCESSFULLY = "ADDITIONAL_PRODUCT_DELETED_SUCCESSFULLY"; + public static final String ADDITIONAL_PRODUCT_LISTED_SUCCESSFULLY = "ADDITIONAL_PRODUCT_LISTED_SUCCESSFULLY"; + public static final String ADDITIONAL_PRODUCT_NOT_FOUND = "ADDITIONAL_PRODUCT_NOT_FOUND"; + public static final String ADDITIONAL_PRODUCT_ALREADY_EXISTS = "ADDITIONAL_PRODUCT_ALREADY_EXISTS"; + + // BRAND + public static final String BRAND_ADDED_SUCCESSFULLY = "BRAND_ADDED_SUCCESSFULLY"; + public static final String BRAND_UPDATED_SUCCESSFULLY = "BRAND_UPDATED_SUCCESSFULLY"; + public static final String BRAND_DELETED_SUCCESSFULLY = "BRAND_DELETED_SUCCESSFULLY"; + public static final String BRAND_LISTED_SUCCESSFULLY = "BRAND_LISTED_SUCCESSFULLY"; + public static final String BRANDS_LISTED_SUCCESSFULLY = "BRANDS_LISTED_SUCCESSFULLY"; + public static final String BRAND_NOT_FOUND = "BRAND_NOT_FOUND"; + public static final String BRAND_ALREADY_EXISTS = "BRAND_ALREADY_EXISTS"; + + // CAR_DAMAGE + public static final String CAR_DAMAGE_ADDED_SUCCESSFULLY = "CAR_DAMAGE_ADDED_SUCCESSFULLY"; + public static final String CAR_DAMAGE_UPDATED_SUCCESSFULLY = "CAR_DAMAGE_UPDATED_SUCCESSFULLY"; + public static final String CAR_DAMAGE_DELETED_SUCCESSFULLY = "CAR_DAMAGE_DELETED_SUCCESSFULLY"; + public static final String CAR_DAMAGE_LISTED_SUCCESSFULLY = "CAR_DAMAGE_LISTED_SUCCESSFULLY"; + + // CAR_MAINTENANCE + public static final String CAR_MAINTENANCE_ADDED_SUCCESSFULLY = "CAR_DAMAGE_LISTED_SUCCESSFULLY"; + public static final String CAR_MAINTENANCE_UPDATED_SUCCESSFULLY = "CAR_MAINTENANCE_UPDATED_SUCCESSFULLY"; + public static final String CAR_MAINTENANCE_DELETED_SUCCESSFULLY = "CAR_MAINTENANCE_DELETED_SUCCESSFULLY"; + public static final String CAR_MAINTENANCE_LISTED_SUCCESSFULLY = "CAR_MAINTENANCE_LISTED_SUCCESSFULLY"; + public static final String CAR_MAINTENANCES_LISTED_SUCCESSFULLY = "CAR_MAINTENANCES_LISTED_SUCCESSFULLY"; + public static final String CAR_MAINTENANCE_NOT_FOUND = "CAR_MAINTENANCE_NOT_FOUND"; + public static final String CAR_NOT_IN_MAINTENANCE = "CAR_NOT_IN_MAINTENANCE"; + public static final String CAR_MAINTENANCES_FOR_CAR_LISTED_SUCCESSFULLY = "CAR_MAINTENANCES_FOR_CAR_LISTED_SUCCESSFULLY"; + public static final String A_FUTURE_DATE_CANNOT_BE_ENTERED = "A_FUTURE_DATE_CANNOT_BE_ENTERED"; + + // CAR + public static final String CAR_ADDED_SUCCESSFULLY = "CAR_ADDED_SUCCESSFULLY"; + public static final String CAR_UPDATED_SUCCESSFULLY = "CAR_UPDATED_SUCCESSFULLY"; + public static final String BRAND_CAR_UPDATED_SUCCESSFULLY = "BRAND_CAR_UPDATED_SUCCESSFULLY"; + public static final String COLOR_CAR_UPDATED_SUCCESSFULLY = "COLOR_CAR_UPDATED_SUCCESSFULLY"; + public static final String KILOMETER_INFO_CAR_UPDATED_SUCCESSFULLY = "KILOMETER_INFO_CAR_UPDATED_SUCCESSFULLY"; + public static final String CAR_DELETED_SUCCESSFULLY = "CAR_DELETED_SUCCESSFULLY"; + public static final String CAR_LISTED_SUCCESSFULLY = "CAR_LISTED_SUCCESSFULLY"; + public static final String CARS_LISTED_SUCCESSFULLY = "CARS_LISTED_SUCCESSFULLY"; + public static final String CAR_LISTED_SUCCESSFULLY_BY_DAILY_PRICE = "CAR_LISTED_SUCCESSFULLY_BY_DAILY_PRICE"; + public static final String CAR_LISTED_AND_PAGINATED_SUCCESSFULLY = "CAR_LISTED_AND_PAGINATED_SUCCESSFULLY"; + public static final String CAR_SORTED_SUCCESSFULLY = "CAR_SORTED_SUCCESSFULLY"; + public static final String CAR_NOT_FOUND = "CAR_NOT_FOUND"; + public static final String CAR_ALREADY_IN_RENT = "CAR_ALREADY_IN_RENT"; + public static final String CAR_ALREADY_IN_MAINTENANCE = "CAR_ALREADY_IN_MAINTENANCE"; + + // COLOR + public static final String COLOR_ADDED_SUCCESSFULLY = "COLOR_ADDED_SUCCESSFULLY"; + public static final String COLOR_UPDATED_SUCCESSFULLY = "COLOR_UPDATED_SUCCESSFULLY"; + public static final String COLOR_DELETED_SUCCESSFULLY = "COLOR_DELETED_SUCCESSFULLY"; + public static final String COLOR_LISTED_SUCCESSFULLY = "COLOR_LISTED_SUCCESSFULLY"; + public static final String COLORS_LISTED_SUCCESSFULLY = "COLORS_LISTED_SUCCESSFULLY"; + public static final String COLOR_NOT_FOUND = "COLOR_NOT_FOUND"; + public static final String COLOR_ALREADY_EXISTS = "COLOR_ALREADY_EXISTS"; + + // CORPORATE_CUSTOMER + public static final String CORPORATE_CUSTOMER_ADDED_SUCCESSFULLY = "CORPORATE_CUSTOMER_ADDED_SUCCESSFULLY"; + public static final String CORPORATE_CUSTOMER_UPDATED_SUCCESSFULLY = "CORPORATE_CUSTOMER_UPDATED_SUCCESSFULLY"; + public static final String CORPORATE_CUSTOMER_DELETED_SUCCESSFULLY = "CORPORATE_CUSTOMER_DELETED_SUCCESSFULLY"; + public static final String CORPORATE_CUSTOMER_NOT_FOUND = "CORPORATE_CUSTOMER_NOT_FOUND"; + + // CUSTOMER + public static final String CUSTOMERS_LISTED_SUCCESSFULLY = "CUSTOMERS_LISTED_SUCCESSFULLY"; + + // INDIVIDUAL_CUSTOMER + public static final String INDIVIDUAL_CUSTOMER_ADDED_SUCCESSFULLY = "INDIVIDUAL_CUSTOMER_ADDED_SUCCESSFULLY"; + public static final String INDIVIDUAL_CUSTOMER_UPDATED_SUCCESSFULLY = "INDIVIDUAL_CUSTOMER_UPDATED_SUCCESSFULLY"; + public static final String INDIVIDUAL_CUSTOMER_DELETED_SUCCESSFULLY = "INDIVIDUAL_CUSTOMER_DELETED_SUCCESSFULLY"; + public static final String INDIVIDUAL_CUSTOMER_NOT_FOUND = "INDIVIDUAL_CUSTOMER_NOT_FOUND"; + public static final String NATIONAL_IDENTITY_NOT_VALID = "NATIONAL_IDENTITY_NOT_VALID"; + + // INVOICE + public static final String INVOICE_ADDED_SUCCESSFULLY = "INVOICE_ADDED_SUCCESSFULLY"; + public static final String INVOICE_UPDATED_SUCCESSFULLY = "INVOICE_UPDATED_SUCCESSFULLY"; + public static final String INVOICE_DELETED_SUCCESSFULLY = "INVOICE_DELETED_SUCCESSFULLY"; + public static final String INVOICE_LISTED_SUCCESSFULLY = "INVOICE_LISTED_SUCCESSFULLY"; + public static final String INVOICES_LISTED_SUCCESSFULLY = "INVOICES_LISTED_SUCCESSFULLY"; + public static final String USERS_INVOICES_LISTED_SUCCESSFULLY = "USERS_INVOICES_LISTED_SUCCESSFULLY"; + public static final String INVOICE_NOT_FOUND = "INVOICE_NOT_FOUND"; + public static final String INVOICE_BETWEEN_START_DATE_AND_END_DATE_LISTED_SUCCESSFULLY = "INVOICE_BETWEEN_START_DATE_AND_END_DATE_LISTED_SUCCESSFULLY"; + + // ORDERED_ADDITIONAL_PRODUCT + public static final String ORDERED_ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY = "ORDERED_ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY"; + public static final String ORDERED_ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY = "ORDERED_ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY"; + public static final String ORDERED_ADDITIONAL_PRODUCT_DELETED_SUCCESSFULLY = "ORDERED_ADDITIONAL_PRODUCT_DELETED_SUCCESSFULLY"; + public static final String ORDERED_ADDITIONAL_PRODUCTS_LISTED_SUCCESSFULLY = "ORDERED_ADDITIONAL_PRODUCTS_LISTED_SUCCESSFULLY"; + public static final String ORDERED_ADDITIONAL_PRODUCT_FOR_RENT_LISTED_SUCCESSFULLY = "ORDERED_ADDITIONAL_PRODUCT_FOR_RENT_LISTED_SUCCESSFULLY"; + public static final String ORDERED_ADDITIONAL_PRODUCT_NOT_FOUND = "ORDERED_ADDITIONAL_PRODUCT_NOT_FOUND"; + public static final String RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT = "RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT"; + public static final String RENT_ALREADY_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT = "RENT_ALREADY_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT"; + public static final String ORDERED_ADDITIONAL_PRODUCT_PRICE_CALCULATED_SUCCESSFULLY = "ORDERED_ADDITIONAL_PRODUCT_PRICE_CALCULATED_SUCCESSFULLY"; + + // PAYMENT + public static final String PAYMENT_ADDED_SUCCESSFULLY = "PAYMENT_ADDED_SUCCESSFULLY"; + public static final String PAYMENT_UPDATED_SUCCESSFULLY = "PAYMENT_UPDATED_SUCCESSFULLY"; + public static final String PAYMENT_DELETED_SUCCESSFULLY = "PAYMENT_DELETED_SUCCESSFULLY"; + public static final String PAYMENT_FAILED = "PAYMENT_FAILED"; + + // RENT + public static final String RENT_ADDED_SUCCESSFULLY = "RENT_ADDED_SUCCESSFULLY"; + public static final String RENT_UPDATED_SUCCESSFULLY = "RENT_UPDATED_SUCCESSFULLY"; + public static final String ENDED_KILOMETER_INFO_UPDATED_SUCCESSFULLY = "ENDED_KILOMETER_INFO_UPDATED_SUCCESSFULLY"; + public static final String RENT_DELETED_SUCCESSFULLY = "RENT_DELETED_SUCCESSFULLY"; + public static final String RENT_LISTED_SUCCESSFULLY = "RENT_LISTED_SUCCESSFULLY"; + public static final String RENTS_LISTED_SUCCESSFULLY = "RENTS_LISTED_SUCCESSFULLY"; + public static final String RENTS_FOR_CAR_LISTED_SUCCESSFULLY = "RENTS_FOR_CAR_LISTED_SUCCESSFULLY"; + public static final String CAR_NOT_IN_RENT = "CAR_NOT_IN_RENT"; + public static final String CITIES_ARE_SAME = "CITIES_ARE_SAME"; + public static final String CITIES_ARE_DIFFERENT = "CITIES_ARE_DIFFERENT"; + public static final String RENT_TOTAL_PRICE_CALCULATED_SUCCESSFULLY = "RENT_TOTAL_PRICE_CALCULATED_SUCCESSFULLY"; + public static final String RENT_NOT_FOUND = "RENT_NOT_FOUND"; + + // USER + public static final String USER_UPDATED_SUCCESSFULLY = "USER_UPDATED_SUCCESSFULLY"; + public static final String USER_NOT_FOUND = "USER_NOT_FOUND"; + public static final String EMAIL_ALREADY_EXISTS = "EMAIL_ALREADY_EXISTS"; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java new file mode 100644 index 0000000..c29a3c9 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java @@ -0,0 +1,40 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreatePaymentRequest { + + @NotNull + @Size(min = 2) + private String creditCardNo; + + @NotNull + @Size(min = 2) + private String cardHolder; + + @NotNull + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private LocalDate expirationDate; + + @NotNull + @Size(min = 3) + private String cvv; + + @NotNull + @Min(1) + private int rentId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeletePaymentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeletePaymentRequest.java new file mode 100644 index 0000000..cdf9c05 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeletePaymentRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeletePaymentRequest { + + @NotNull + @Min(1) + private int paymentId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java new file mode 100644 index 0000000..9df7739 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java @@ -0,0 +1,41 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdatePaymentRequest { + + @NotNull + @Min(1) + private int paymentId; + + @NotNull + @Size(min = 2) + private String creditCardNo; + + @NotNull + @Size(min = 2) + private String cardHolder; + + @NotNull + private LocalDate expirationDate; + + @NotNull + @Size(min = 3) + private String cvv; + + @NotNull + @Min(1) + private int rentId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseBankPaymentServiceAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseBankPaymentServiceAdapter.java new file mode 100644 index 0000000..e25e230 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseBankPaymentServiceAdapter.java @@ -0,0 +1,12 @@ +package com.turkcell.rentacar.core.services.abstracts; + +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.entities.concretes.Payment; + +@Service +public interface BaseBankPaymentServiceAdapter { + + public boolean payment(Payment payment); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseNationalIdentityService.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseNationalIdentityService.java new file mode 100644 index 0000000..0bafdcb --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/abstracts/BaseNationalIdentityService.java @@ -0,0 +1,6 @@ +package com.turkcell.rentacar.core.services.abstracts; + +public interface BaseNationalIdentityService { + + public boolean checkNationalIdentity(String nationalIdentity); +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeBankPaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeBankPaymentManager.java new file mode 100644 index 0000000..2967561 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeBankPaymentManager.java @@ -0,0 +1,18 @@ +package com.turkcell.rentacar.core.services.concretes; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import com.turkcell.rentacar.core.services.abstracts.BaseBankPaymentServiceAdapter; +import com.turkcell.rentacar.entities.concretes.Payment; + +@Component +@Qualifier("fakeBankPayment") +public class FakeBankPaymentManager implements BaseBankPaymentServiceAdapter { + + @Override + public boolean payment(Payment payment) { + return true; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeNationalIdentityManager.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeNationalIdentityManager.java new file mode 100644 index 0000000..f902ab8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/FakeNationalIdentityManager.java @@ -0,0 +1,17 @@ +package com.turkcell.rentacar.core.services.concretes; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import com.turkcell.rentacar.core.services.abstracts.BaseNationalIdentityService; + +@Component +@Qualifier("fakeNationalIdentityManager") +public class FakeNationalIdentityManager implements BaseNationalIdentityService { + + @Override + public boolean checkNationalIdentity(String nationalIdentity) { + return true; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java new file mode 100644 index 0000000..3f7eddc --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java @@ -0,0 +1,29 @@ +package com.turkcell.rentacar.core.services.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import com.turkcell.rentacar.core.services.abstracts.BaseBankPaymentServiceAdapter; +import com.turkcell.rentacar.entities.concretes.Payment; +import com.turkcell.rentacar.halkbankPaymentService.HalkbankPaymentService; + +@Component +@Qualifier("halkbank") +public class HalkbankPaymentManagerAdapter implements BaseBankPaymentServiceAdapter { + + private HalkbankPaymentService halkbankPaymentService; + + @Autowired + public HalkbankPaymentManagerAdapter(HalkbankPaymentService halkbankPaymentService) { + this.halkbankPaymentService = halkbankPaymentService; + } + + @Override + public boolean payment(Payment payment) { + System.out.println("halkbank"); + return this.halkbankPaymentService.payment(payment.getExpirationDate(), payment.getCvv(), + payment.getCreditCardNo(), payment.getCardHolder()); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java new file mode 100644 index 0000000..3735e20 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java @@ -0,0 +1,26 @@ +package com.turkcell.rentacar.core.services.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import com.turkcell.rentacar.core.services.abstracts.BaseNationalIdentityService; +import com.turkcell.rentacar.nationalIdentityService.NationalIdentityService; + +@Component +@Qualifier("nationalIdentityManager") +public class NationalIdentityManagerAdapter implements BaseNationalIdentityService { + + private NationalIdentityService nationalIdentityService; + + @Autowired + public NationalIdentityManagerAdapter(NationalIdentityService nationalIdentityService) { + this.nationalIdentityService = nationalIdentityService; + } + + @Override + public boolean checkNationalIdentity(String nationalIdentity) { + return this.nationalIdentityService.checkNationalIdentity(nationalIdentity); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java new file mode 100644 index 0000000..9616d15 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.core.services.concretes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import com.turkcell.rentacar.core.services.abstracts.BaseBankPaymentServiceAdapter; +import com.turkcell.rentacar.entities.concretes.Payment; +import com.turkcell.rentacar.ziraatBankPaymentService.ZiraatBankPaymentService; + + +@Component +@Qualifier("ziraatBank") +public class ZiraatBankPaymentManagerAdapter implements BaseBankPaymentServiceAdapter { + + private ZiraatBankPaymentService ziraatBankPaymentService; + + @Autowired + public ZiraatBankPaymentManagerAdapter(ZiraatBankPaymentService ziraatBankPaymentService) { + this.ziraatBankPaymentService = ziraatBankPaymentService; + } + + @Override + public boolean payment(Payment payment) { + System.out.println("ziraat"); + return this.ziraatBankPaymentService.payment(payment.getCreditCardNo(), payment.getCardHolder(), + payment.getExpirationDate(), payment.getCvv()); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java new file mode 100644 index 0000000..cc29c0c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.Payment; + +public interface PaymentDao extends JpaRepository { + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java index a57d9ad..30ac2e5 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java @@ -1,9 +1,11 @@ package com.turkcell.rentacar.dataAccess.abstracts; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; import com.turkcell.rentacar.entities.abstracts.User; +@Repository public interface UserDao extends JpaRepository { boolean existsByEmail(String email); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java index 7ca290c..2f0a77c 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java @@ -43,4 +43,8 @@ public class Invoice { @JoinColumn(name = "rent_id") private Rent rent; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "payment_id") + private Payment payment; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java index 8196aa3..3f144bd 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java @@ -37,4 +37,8 @@ public class OrderedAdditionalProduct { @JoinColumn(name = "additional_product_id") private AdditionalProduct additionalProduct; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "payment_id") + private Payment payment; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java new file mode 100644 index 0000000..a35c266 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java @@ -0,0 +1,55 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.time.LocalDate; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "payments") +public class Payment { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "payment_id") + private int paymentId; + + @Column(name = "credit_card_no") + private String creditCardNo; + + @Column(name = "card_holder") + private String cardHolder; + + @Column(name = "expiration_date") + private LocalDate expirationDate; + + @Column(name = "cvv") + private String cvv; + + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "rent_id") + private Rent rent; + + @OneToMany(mappedBy = "payment") + private List orderedAdditionalProducts; + + @OneToMany(mappedBy = "payment") + private List invoices; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java index be07b23..688799a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -67,5 +67,8 @@ public class Rent { @OneToMany(mappedBy = "rent") private List invoices; + + @OneToMany(mappedBy = "rent") + private List payments; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/PaymentFailedException.java b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/PaymentFailedException.java new file mode 100644 index 0000000..dbbd993 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/exceptions/businessExceptions/PaymentFailedException.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.exceptions.businessExceptions; + +public class PaymentFailedException extends BusinessException { + + public PaymentFailedException(String message) { + super(message); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentManager.java new file mode 100644 index 0000000..b0d9737 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentManager.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.halkbankPaymentService; + +import java.time.LocalDate; + +import org.springframework.stereotype.Service; + +@Service +public class HalkbankPaymentManager implements HalkbankPaymentService { + + @Override + public boolean payment(LocalDate expirationDate, String cvv, String creditCardNo, String cardHolder) { + return true; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentService.java b/rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentService.java new file mode 100644 index 0000000..f337f64 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/halkbankPaymentService/HalkbankPaymentService.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.halkbankPaymentService; + +import java.time.LocalDate; + +public interface HalkbankPaymentService { + + public boolean payment(LocalDate expirationDate, String cvv, String creditCardNo, String cardHolder); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java index 1acd62f..d5f6152 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java @@ -1,25 +1,28 @@ package com.turkcell.rentacar.nationalIdentityService; +import org.springframework.stereotype.Service; -public class NationalIdentityManager implements NationalIdentityService{ +@Service +public class NationalIdentityManager implements NationalIdentityService { @Override public boolean checkNationalIdentity(String nationalIdentity) { - int[] numbers = parcala(nationalIdentity); + int[] numbers = split(nationalIdentity); if (numbers != null) { - boolean kosul1 = (numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4] + numbers[5] + numbers[6] - + numbers[7] + numbers[8] + numbers[9]) % 10 == numbers[10]; - boolean kosul2 = (((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 7) + boolean condition1 = (numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4] + numbers[5] + + numbers[6] + numbers[7] + numbers[8] + numbers[9]) % 10 == numbers[10]; + boolean condition2 = (((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 7) + ((numbers[1] + numbers[3] + numbers[5] + numbers[7]) * 9)) % 10 == numbers[9]; - boolean kosul3 = ((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 8) % 10 == numbers[10]; + boolean condition3 = ((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 8) + % 10 == numbers[10]; - return kosul1 && kosul2 && kosul3; + return condition1 && condition2 && condition3; } return false; } - private static int[] parcala(String nationalIdentity) { + private static int[] split(String nationalIdentity) { int[] numbers = new int[11]; if (nationalIdentity == null || nationalIdentity.length() != 11) { diff --git a/rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentManager.java new file mode 100644 index 0000000..6c902ad --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentManager.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.ziraatBankPaymentService; + +import java.time.LocalDate; + +import org.springframework.stereotype.Service; + +@Service +public class ZiraatBankPaymentManager implements ZiraatBankPaymentService{ + + @Override + public boolean payment(String creditCardNo, String cardHolder, LocalDate expirationDate, String cvv) { + return true; + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentService.java b/rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentService.java new file mode 100644 index 0000000..a632b53 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/ziraatBankPaymentService/ZiraatBankPaymentService.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.ziraatBankPaymentService; + +import java.time.LocalDate; + +public interface ZiraatBankPaymentService { + + public boolean payment(String creditCardNo, String cardHolder, LocalDate expirationDate, String cvv); + +} From ea9e7406dbe62635de90b7f7028d76240337240b Mon Sep 17 00:00:00 2001 From: ZeynebEdaYILMAZ Date: Sat, 9 Apr 2022 12:56:14 +0300 Subject: [PATCH 7/7] Updated PaymentManager 09/04/2022 Added transactional method --- .../controllers/CreditCardsController.java | 58 ++++++++++++ .../api/controllers/InvoicesController.java | 16 +++- .../OrderedAdditionalProductsController.java | 6 +- .../api/controllers/PaymentsController.java | 7 +- .../api/controllers/RentsController.java | 17 +++- .../business/abstracts/CreditCardService.java | 25 ++++++ .../business/abstracts/InvoiceService.java | 8 +- .../OrderedAdditionalProductService.java | 6 +- .../business/abstracts/PaymentService.java | 4 +- .../business/abstracts/RentService.java | 17 ++-- .../business/concretes/CreditCardManager.java | 88 +++++++++++++++++++ .../concretes/IndividualCustomerManager.java | 11 +-- .../business/concretes/InvoiceManager.java | 44 +++++++--- .../OrderedAdditionalProductManager.java | 8 +- .../business/concretes/PaymentManager.java | 54 ++++++++++-- .../business/concretes/RentManager.java | 83 ++++++++++++++--- .../constants/messages/BusinessMessages.java | 9 ++ .../dtos/getDtos/CreditCardGetDto.java | 25 ++++++ .../business/dtos/getDtos/RentGetDto.java | 10 +-- .../dtos/listDtos/CreditCardListDto.java | 23 +++++ .../createRequests/CreateCarRequest.java | 4 + .../CreateCreditCardRequest.java | 37 ++++++++ .../createRequests/CreateInvoiceRequest.java | 2 +- .../CreateMakePaymentRequest.java | 26 ++++++ ...CreateOrderedAdditionalProductRequest.java | 2 +- .../createRequests/CreatePaymentRequest.java | 8 +- .../DeleteCreditCardRequest.java | 19 ++++ .../deleteRequests/DeleteRentRequest.java | 2 +- .../UpdateCreditCardRequest.java | 41 +++++++++ .../UpdateDeliveryDateToRentRequest.java | 24 +++++ .../UpdateEndedKilometerInfoRequest.java | 2 +- .../updateRequests/UpdateInvoiceRequest.java | 2 +- ...UpdateOrderedAdditionalProductRequest.java | 2 +- .../updateRequests/UpdatePaymentRequest.java | 2 +- .../updateRequests/UpdateRentRequest.java | 2 +- .../HalkbankPaymentManagerAdapter.java | 3 +- .../NationalIdentityManagerAdapter.java | 2 +- .../ZiraatBankPaymentManagerAdapter.java | 3 +- .../dataAccess/abstracts/CreditCardDao.java | 9 ++ .../dataAccess/abstracts/InvoiceDao.java | 9 +- .../OrderedAdditionalProductDao.java | 4 +- .../dataAccess/abstracts/PaymentDao.java | 4 + .../dataAccess/abstracts/RentDao.java | 13 ++- .../rentacar/entities/abstracts/User.java | 9 ++ .../entities/concretes/CreditCard.java | 48 ++++++++++ .../concretes/OrderedAdditionalProduct.java | 3 - .../rentacar/entities/concretes/Payment.java | 9 +- .../rentacar/entities/concretes/Rent.java | 10 +-- .../HalkbankPaymentManager.java | 15 ++++ .../HalkbankPaymentService.java | 9 ++ .../NationalIdentityManager.java | 38 ++++++++ .../NationalIdentityService.java | 7 ++ .../ZiraatBankPaymentManager.java | 14 +++ .../ZiraatBankPaymentService.java | 9 ++ .../src/main/resources/application.properties | 2 +- 55 files changed, 809 insertions(+), 105 deletions(-) create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CreditCardsController.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CreditCardService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CreditCardManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CreditCardGetDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CreditCardListDto.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCreditCardRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateMakePaymentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCreditCardRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCreditCardRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateDeliveryDateToRentRequest.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CreditCardDao.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CreditCard.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityService.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentManager.java create mode 100644 rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentService.java diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CreditCardsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CreditCardsController.java new file mode 100644 index 0000000..aa2e253 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CreditCardsController.java @@ -0,0 +1,58 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.turkcell.rentacar.business.abstracts.CreditCardService; +import com.turkcell.rentacar.business.dtos.getDtos.CreditCardGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.CreditCardListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCreditCardRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCreditCardRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCreditCardRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +@RestController +@RequestMapping("/api/creditCards") +public class CreditCardsController { + + private CreditCardService creditCardService; + + @Autowired + public CreditCardsController(CreditCardService creditCardService) { + this.creditCardService = creditCardService; + } + + @PostMapping("/add") + public Result add(CreateCreditCardRequest createCreditCardRequest) { + return this.creditCardService.add(createCreditCardRequest); + } + + @PutMapping("/update") + public Result update(UpdateCreditCardRequest updateCreditCardRequest) { + return this.creditCardService.update(updateCreditCardRequest); + } + + @DeleteMapping("/delete") + public Result delete(DeleteCreditCardRequest deleteCreditCardRequest) { + return this.creditCardService.delete(deleteCreditCardRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.creditCardService.getAll(); + } + + @GetMapping("/getById") + public DataResult getById(int creditCardId) { + return this.creditCardService.getById(creditCardId); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java index 3146aec..8397391 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java @@ -17,6 +17,8 @@ import com.turkcell.rentacar.business.abstracts.InvoiceService; import com.turkcell.rentacar.business.dtos.listDtos.InvioceListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateInvoiceRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteInvoiceRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateInvoiceRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; @@ -37,18 +39,28 @@ public Result add(@RequestBody @Valid CreateInvoiceRequest createInvoiceRequest) return this.invoicesService.add(createInvoiceRequest); } + @PostMapping("/update") + public Result update(@RequestBody @Valid UpdateInvoiceRequest updateInvoiceRequest) { + return this.invoicesService.update(updateInvoiceRequest); + } + + @PostMapping("/delete") + public Result delete(@RequestBody @Valid DeleteInvoiceRequest deleteInvoiceRequest) { + return this.invoicesService.delete(deleteInvoiceRequest); + } + @GetMapping("/getAll") public DataResult> getAll() { return this.invoicesService.getAll(); } @GetMapping("/getByRentId") - public DataResult getByRentId(@RequestParam int rentId) { + public DataResult getByRentId(@RequestParam String rentId) { return this.invoicesService.getByRentId(rentId); } @GetMapping("/getOrderedAdditionalProductByRentId") - public DataResult> getOrderedAdditionalProductByRentId(@RequestParam int rentId) { + public DataResult> getOrderedAdditionalProductByRentId(@RequestParam String rentId) { return this.invoicesService.getOrderedAdditionalProductByRentId(rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java index 8c3e5b5..82c5110 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java @@ -56,17 +56,17 @@ public DataResult> getAll() { } @GetMapping("/checkIfRentExists") - public Result checkIfRentExists(@RequestParam int rentId) { + public Result checkIfRentExists(@RequestParam String rentId) { return this.orderedAdditionalProductService.checkIfRentExists(rentId); } @GetMapping("/getByRentId") - public DataResult> getByRentId(@RequestParam int rentId) { + public DataResult> getByRentId(@RequestParam String rentId) { return this.orderedAdditionalProductService.getByRentId(rentId); } @GetMapping("/calculateOrderedAdditionalPrice") - public DataResult calculateOrderedAdditionalPrice(@RequestParam int rentId) { + public DataResult calculateOrderedAdditionalPrice(@RequestParam String rentId) { return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java index 577f3a5..ee4260d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java @@ -1,6 +1,5 @@ package com.turkcell.rentacar.api.controllers; - import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -12,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController; import com.turkcell.rentacar.business.abstracts.PaymentService; -import com.turkcell.rentacar.business.requests.createRequests.CreatePaymentRequest; +import com.turkcell.rentacar.business.requests.createRequests.CreateMakePaymentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeletePaymentRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdatePaymentRequest; import com.turkcell.rentacar.core.utilities.results.Result; @@ -29,8 +28,8 @@ public PaymentsController(PaymentService paymentService) { } @PostMapping("/add") - public Result add(@RequestBody @Valid CreatePaymentRequest createPaymentRequest) { - return this.paymentService.add(createPaymentRequest); + public Result add(@RequestBody @Valid CreateMakePaymentRequest createMakePaymentRequest) { + return this.paymentService.add(createMakePaymentRequest); } @PutMapping("/update") diff --git a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java index 870a074..7e1c724 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java @@ -20,6 +20,7 @@ import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateDeliveryDateToRentRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateEndedKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; @@ -43,7 +44,7 @@ public Result addCorporateCustomer(@RequestBody @Valid CreateRentRequest createR } @PostMapping("/addIndividualCustomer") - public Result addIndividualCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) { + public DataResult addIndividualCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) { return this.rentService.addIndividualCustomer(createRentRequest); } @@ -59,6 +60,13 @@ public Result updateEndedKilometer( return this.rentService.updateEndedKilometer(updateEndedKilometerInfoRequest); } + @Transactional + @PostMapping("/updateDeliveryDate") + public Result updateDeliveryDate( + @RequestBody @Valid UpdateDeliveryDateToRentRequest updateDeliveryDateToRentRequest) { + return this.rentService.updateDeliveryDate(updateDeliveryDateToRentRequest); + } + @DeleteMapping("/delete") public Result delete(@RequestBody @Valid DeleteRentRequest deleteRentRequest) { return this.rentService.delete(deleteRentRequest); @@ -70,10 +78,15 @@ public DataResult> getAll() { } @GetMapping("/getRentDetailsByRentId") - public DataResult getRentDetailsByRentId(@RequestParam int rentId) { + public DataResult getRentDetailsByRentId(@RequestParam String rentId) { return this.rentService.getRentDetailsByRentId(rentId); } + @GetMapping("/getByCarId") + public DataResult> getByCarId(int carId) { + return this.rentService.getByCarId(carId); + } + @GetMapping("/checkIfCarAlreadyInRent") public Result checkIfCarAlreadyInRent(@RequestParam int carId) { return this.rentService.checkIfCarAlreadyInRent(carId); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CreditCardService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CreditCardService.java new file mode 100644 index 0000000..9b135c4 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CreditCardService.java @@ -0,0 +1,25 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.getDtos.CreditCardGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.CreditCardListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCreditCardRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCreditCardRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCreditCardRequest; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +public interface CreditCardService { + + Result add(CreateCreditCardRequest createCreditCardRequest); + + Result update(UpdateCreditCardRequest updateCreditCardRequest); + + Result delete(DeleteCreditCardRequest deleteCreditCardRequest); + + DataResult> getAll(); + + DataResult getById(int creditCardId); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java index a5a1021..db7b0b4 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java @@ -15,13 +15,13 @@ public interface InvoiceService { Result add(CreateInvoiceRequest createInvoiceRequest); - Result Update(UpdateInvoiceRequest updateInvoiceRequest); + Result update(UpdateInvoiceRequest updateInvoiceRequest); - Result Delete(DeleteInvoiceRequest deleteInvoiceRequest); + Result delete(DeleteInvoiceRequest deleteInvoiceRequest); - DataResult getByRentId(int rentId); + DataResult getByRentId(String rentId); - DataResult> getOrderedAdditionalProductByRentId(int rentId); + DataResult> getOrderedAdditionalProductByRentId(String rentId); DataResult> getAll(); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java index 2cf71ea..f7157b9 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java @@ -17,12 +17,12 @@ public interface OrderedAdditionalProductService { Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest); - Result checkIfRentExists(int rentId); + Result checkIfRentExists(String rentId); DataResult> getAll(); - DataResult> getByRentId(int rentId); + DataResult> getByRentId(String rentId); - DataResult calculateOrderedAdditionalPrice(int rentId); + DataResult calculateOrderedAdditionalPrice(String rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java index 6e06c16..4803551 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/PaymentService.java @@ -1,13 +1,13 @@ package com.turkcell.rentacar.business.abstracts; -import com.turkcell.rentacar.business.requests.createRequests.CreatePaymentRequest; +import com.turkcell.rentacar.business.requests.createRequests.CreateMakePaymentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeletePaymentRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdatePaymentRequest; import com.turkcell.rentacar.core.utilities.results.Result; public interface PaymentService { - Result add(CreatePaymentRequest createPaymentRequest); + Result add(CreateMakePaymentRequest createMakePaymentRequest); Result update(UpdatePaymentRequest updatePaymentRequest); diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java index 6f2ac7e..a48e668 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java @@ -6,6 +6,7 @@ import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateDeliveryDateToRentRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateEndedKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.results.DataResult; @@ -16,26 +17,30 @@ public interface RentService { Result addCorporateCustomer(CreateRentRequest createRentRequest); - Result addIndividualCustomer(CreateRentRequest createRentRequest); + DataResult addIndividualCustomer(CreateRentRequest createRentRequest); Result update(UpdateRentRequest updateRentRequest); Result updateEndedKilometer(UpdateEndedKilometerInfoRequest updateEndedKilometerInfoRequest); + Result updateDeliveryDate(UpdateDeliveryDateToRentRequest updateDeliveryDateToRentRequest); + Result delete(DeleteRentRequest deleteRentRequest); DataResult> getAll(); - DataResult> getByCarId(int carId); + DataResult> getByCarId(int carId); + + DataResult> getOrderedAdditionalProductsByRentId(String rentId); - DataResult> getOrderedAdditionalProductsByRentId(int rentId); + DataResult calculateRentTotalPrice(String rentId); - DataResult calculateRentTotalPrice(int rentId); + DataResult calculateDelayedDayPriceForRent(String rentId); - DataResult getRentDetailsByRentId(int rentId); + DataResult getRentDetailsByRentId(String rentId); Result checkIfCarAlreadyInRent(int carId); - Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId); + Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(String rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CreditCardManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CreditCardManager.java new file mode 100644 index 0000000..8816880 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CreditCardManager.java @@ -0,0 +1,88 @@ +package com.turkcell.rentacar.business.concretes; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.turkcell.rentacar.business.abstracts.CreditCardService; +import com.turkcell.rentacar.business.constants.messages.BusinessMessages; +import com.turkcell.rentacar.business.dtos.getDtos.CreditCardGetDto; +import com.turkcell.rentacar.business.dtos.listDtos.CreditCardListDto; +import com.turkcell.rentacar.business.requests.createRequests.CreateCreditCardRequest; +import com.turkcell.rentacar.business.requests.deleteRequests.DeleteCreditCardRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateCreditCardRequest; +import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.core.utilities.results.SuccessResult; +import com.turkcell.rentacar.dataAccess.abstracts.CreditCardDao; +import com.turkcell.rentacar.entities.concretes.CreditCard; + +@Service +public class CreditCardManager implements CreditCardService { + + private CreditCardDao creditCardDao; + private ModelMapperService modelMapperService; + + @Autowired + public CreditCardManager(CreditCardDao creditCardDao, ModelMapperService modelMapperService) { + super(); + this.creditCardDao = creditCardDao; + this.modelMapperService = modelMapperService; + } + + @Override + public Result add(CreateCreditCardRequest createCreditCardRequest) { + + CreditCard creditCard = this.modelMapperService.forRequest().map(createCreditCardRequest, CreditCard.class); + + this.creditCardDao.save(creditCard); + + return new SuccessResult(BusinessMessages.CREDIT_CARD_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateCreditCardRequest updateCreditCardRequest) { + + CreditCard creditCard = this.modelMapperService.forRequest().map(updateCreditCardRequest, CreditCard.class); + + this.creditCardDao.save(creditCard); + + return new SuccessResult(BusinessMessages.CREDIT_CARD_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteCreditCardRequest deleteCreditCardRequest) { + + CreditCard creditCard = this.modelMapperService.forRequest().map(deleteCreditCardRequest, CreditCard.class); + + this.creditCardDao.delete(creditCard); + + return new SuccessResult(BusinessMessages.CREDIT_CARD_DELETED_SUCCESSFULLY); + } + + @Override + public DataResult> getAll() { + + List result = this.creditCardDao.findAll(); + List response = result.stream() + .map(creditCard -> this.modelMapperService.forDto().map(creditCard, CreditCardListDto.class)) + .collect(Collectors.toList()); + + return new SuccessDataResult>(response, + BusinessMessages.CREDIT_CARDS_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult getById(int creditCardId) { + + CreditCard result = this.creditCardDao.getById(creditCardId); + CreditCardGetDto response = this.modelMapperService.forDto().map(result, CreditCardGetDto.class); + + return new SuccessDataResult(response, BusinessMessages.CREDIT_CARD_LISTED_SUCCESSFULLY); + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java index e497084..bfb5784 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java @@ -1,6 +1,7 @@ package com.turkcell.rentacar.business.concretes; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.turkcell.rentacar.business.abstracts.IndividualCustomerService; @@ -8,6 +9,7 @@ import com.turkcell.rentacar.business.requests.createRequests.CreateIndividualCustomerRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteIndividualCustomerRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateIndividualCustomerRequest; +import com.turkcell.rentacar.core.services.abstracts.BaseNationalIdentityService; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessResult; @@ -16,21 +18,20 @@ import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; import com.turkcell.rentacar.exceptions.businessExceptions.NationalIdentityNotValidException; -import com.turkcell.rentacar.nationalIdentityService.NationalIdentityService; @Service public class IndividualCustomerManager implements IndividualCustomerService { private IndividualCustomerDao individualCustomerDao; private ModelMapperService modelMapperService; - private NationalIdentityService nationalIdentityService; + private BaseNationalIdentityService baseNationalIdentityService; @Autowired public IndividualCustomerManager(IndividualCustomerDao individualCustomerDao, ModelMapperService modelMapperService, - NationalIdentityService nationalIdentityService) { + @Qualifier("fakeNationalIdentityManager") BaseNationalIdentityService baseNationalIdentityService) { this.individualCustomerDao = individualCustomerDao; this.modelMapperService = modelMapperService; - this.nationalIdentityService = nationalIdentityService; + this.baseNationalIdentityService = baseNationalIdentityService; } @Override @@ -88,7 +89,7 @@ private void checkIfEmailExists(String email) { } private void checkIfNationalIdentityIsReal(String nationalIdentity) { - if (!this.nationalIdentityService.checkNationalIdentity(nationalIdentity)) { + if (!this.baseNationalIdentityService.checkNationalIdentity(nationalIdentity)) { throw new NationalIdentityNotValidException(BusinessMessages.NATIONAL_IDENTITY_NOT_VALID); } } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java index 74163dd..92446f7 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java @@ -48,7 +48,11 @@ public Result add(CreateInvoiceRequest createInvoiceRequest) { Invoice invoice = this.modelMapperService.forRequest().map(createInvoiceRequest, Invoice.class); - invoice.setTotalPrice(calculateTotalPrice(invoice)); + if (checkIfDeliverDateAndRentReturnDateIsDifferent(invoice.getRent().getRentId())) { + invoice.setTotalPrice(calculateDelayedDayPrice(invoice.getRent().getRentId())); + } else { + invoice.setTotalPrice(calculateTotalPrice(invoice)); + } this.invoiceDao.save(invoice); @@ -57,7 +61,7 @@ public Result add(CreateInvoiceRequest createInvoiceRequest) { } @Override - public Result Update(UpdateInvoiceRequest updateInvoiceRequest) { + public Result update(UpdateInvoiceRequest updateInvoiceRequest) { checkIfInvoiceExists(updateInvoiceRequest.getInvoiceId()); @@ -71,7 +75,7 @@ public Result Update(UpdateInvoiceRequest updateInvoiceRequest) { } @Override - public Result Delete(DeleteInvoiceRequest deleteInvoiceRequest) { + public Result delete(DeleteInvoiceRequest deleteInvoiceRequest) { Invoice invoice = this.modelMapperService.forRequest().map(deleteInvoiceRequest, Invoice.class); @@ -92,7 +96,7 @@ public DataResult> getAll() { } @Override - public DataResult getByRentId(int rentId) { + public DataResult getByRentId(String rentId) { checkIfRentExists(rentId); @@ -103,7 +107,7 @@ public DataResult getByRentId(int rentId) { } @Override - public DataResult> getOrderedAdditionalProductByRentId(int rentId) { + public DataResult> getOrderedAdditionalProductByRentId(String rentId) { List result = this.rentService.getOrderedAdditionalProductsByRentId(rentId).getData(); @@ -144,44 +148,64 @@ private double calculateTotalPrice(Invoice invoice) { + calculateIfCityIsDifferentPrice(invoice.getRent().getRentId()); } - private double calculateRentTotalPrice(int rentId) { + private double calculateRentTotalPrice(String rentId) { return this.rentService.calculateRentTotalPrice(rentId).getData(); } - private double calculateOrderedAdditionalPrice(int rentId) { + private double calculateOrderedAdditionalPrice(String rentId) { + if (checkIfInvoiceHasOrderedAdditionalProduct(rentId)) { return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId).getData(); } return 0; } - private double calculateIfCityIsDifferentPrice(int rentId) { + private double calculateIfCityIsDifferentPrice(String rentId) { + if (this.rentService.checkIfReturnCityIsDifferentForRentalCityIsSuccess(rentId).isSuccess()) { return 750; } return 0; } + private double calculateDelayedDayPrice(String rentId) { + + if (this.rentService.calculateDelayedDayPriceForRent(rentId).isSuccess()) { + return this.rentService.calculateDelayedDayPriceForRent(rentId).getData() + + calculateOrderedAdditionalPrice(rentId); + } + + return 0; + } + + private boolean checkIfDeliverDateAndRentReturnDateIsDifferent(String rentId) { + return this.rentService.calculateDelayedDayPriceForRent(rentId).isSuccess(); + } + private void checkIfInvoiceExists(int invoiceId) { + if (!this.invoiceDao.existsById(invoiceId)) { throw new EntityNotFoundException(BusinessMessages.INVOICE_NOT_FOUND); } } - private boolean checkIfInvoiceHasOrderedAdditionalProduct(int rentId) { + private boolean checkIfInvoiceHasOrderedAdditionalProduct(String rentId) { + if (this.orderedAdditionalProductService.checkIfRentExists(rentId).isSuccess()) { return true; } return false; } - private void checkIfRentExists(int rentId) { + private void checkIfRentExists(String rentId) { + if (!this.invoiceDao.existsByRent_RentId(rentId)) { throw new EntityNotFoundException(BusinessMessages.RENT_NOT_FOUND); } } private void checkIfUserExists(int userId) { + if (!this.invoiceDao.existsByUser_UserId(userId)) { throw new EntityNotFoundException(BusinessMessages.USER_NOT_FOUND); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java index 78047f3..8f795ba 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.java @@ -87,7 +87,7 @@ public DataResult> getAll() { } @Override - public DataResult> getByRentId(int rentId) { + public DataResult> getByRentId(String rentId) { List result = this.orderedAdditionalProductDao.getByRent_RentId(rentId); List response = result.stream() @@ -100,7 +100,7 @@ public DataResult> getByRentId(int rentId) } @Override - public DataResult calculateOrderedAdditionalPrice(int rentId) { + public DataResult calculateOrderedAdditionalPrice(String rentId) { checkIfRentExistsIsSuccess(rentId); @@ -122,7 +122,7 @@ public DataResult calculateOrderedAdditionalPrice(int rentId) { } @Override - public Result checkIfRentExists(int rentId) { + public Result checkIfRentExists(String rentId) { if (this.orderedAdditionalProductDao.existsByRent_RentId(rentId)) { return new SuccessResult(BusinessMessages.RENT_ALREADY_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); @@ -131,7 +131,7 @@ public Result checkIfRentExists(int rentId) { return new ErrorResult(BusinessMessages.RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); } - private void checkIfRentExistsIsSuccess(int rentId) { + private void checkIfRentExistsIsSuccess(String rentId) { if (!checkIfRentExists(rentId).isSuccess()) { throw new EntityNotFoundException(BusinessMessages.RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java index ea8be5e..134bce6 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java @@ -1,11 +1,19 @@ package com.turkcell.rentacar.business.concretes; +import javax.transaction.Transactional; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import com.turkcell.rentacar.business.abstracts.InvoiceService; +import com.turkcell.rentacar.business.abstracts.OrderedAdditionalProductService; import com.turkcell.rentacar.business.abstracts.PaymentService; +import com.turkcell.rentacar.business.abstracts.RentService; import com.turkcell.rentacar.business.constants.messages.BusinessMessages; +import com.turkcell.rentacar.business.requests.createRequests.CreateInvoiceRequest; +import com.turkcell.rentacar.business.requests.createRequests.CreateMakePaymentRequest; +import com.turkcell.rentacar.business.requests.createRequests.CreateOrderedAdditionalProductRequest; import com.turkcell.rentacar.business.requests.createRequests.CreatePaymentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeletePaymentRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdatePaymentRequest; @@ -24,22 +32,31 @@ public class PaymentManager implements PaymentService { private ModelMapperService modelMapperService; private BaseBankPaymentServiceAdapter baseBankPaymentServiceAdapter; + private RentService rentService; + private InvoiceService invoiceService; + private OrderedAdditionalProductService orderedAdditionalProductService; + @Autowired public PaymentManager(PaymentDao paymentDao, ModelMapperService modelMapperService, - @Qualifier("halkbank") BaseBankPaymentServiceAdapter baseBankPaymentServiceAdapter) { + @Qualifier("halkbank") BaseBankPaymentServiceAdapter baseBankPaymentServiceAdapter, RentService rentService, + InvoiceService invoiceService, OrderedAdditionalProductService orderedAdditionalProductService) { this.paymentDao = paymentDao; this.modelMapperService = modelMapperService; this.baseBankPaymentServiceAdapter = baseBankPaymentServiceAdapter; + this.rentService = rentService; + this.invoiceService = invoiceService; + this.orderedAdditionalProductService = orderedAdditionalProductService; + } @Override - public Result add(CreatePaymentRequest createPaymentRequest) { + public Result add(CreateMakePaymentRequest createMakePaymentRequest) { - Payment payment = this.modelMapperService.forRequest().map(createPaymentRequest, Payment.class); + Payment payment = this.modelMapperService.forRequest().map(createMakePaymentRequest.getCreatePaymentRequest(), + Payment.class); checkIfPaymentIsSuccess(payment); - - this.paymentDao.save(payment); + runPaymentSuccessor(createMakePaymentRequest); return new SuccessResult(BusinessMessages.PAYMENT_ADDED_SUCCESSFULLY); } @@ -70,4 +87,31 @@ private void checkIfPaymentIsSuccess(Payment payment) { } } + @Transactional + public void runPaymentSuccessor(CreateMakePaymentRequest createMakePaymentRequest) { + + // rentAdd + String rentId = this.rentService.addIndividualCustomer(createMakePaymentRequest.getCreateRentRequest()) + .getData(); + + // invoiceAdd + CreateInvoiceRequest createInvoiceRequest = createMakePaymentRequest.getCreateInvoiceRequest(); + createInvoiceRequest.setRentId(rentId); + this.invoiceService.add(createInvoiceRequest); + + // orderedAdditionalProductAdd + for (CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest : createMakePaymentRequest + .getCreateOrderedAdditionalProductRequests()) { + createOrderedAdditionalProductRequest.setRentId(rentId); + this.orderedAdditionalProductService.add(createOrderedAdditionalProductRequest); + } + + // paymentAdd + CreatePaymentRequest createPaymentRequest = createMakePaymentRequest.getCreatePaymentRequest(); + createPaymentRequest.setRentId(rentId); + this.paymentDao.save(this.modelMapperService.forRequest() + .map(this.modelMapperService.forRequest().map(createPaymentRequest, Payment.class), Payment.class)); + + } + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java index b34f538..2e65c1a 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -3,8 +3,11 @@ import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; +import javax.persistence.EntityNotFoundException; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -16,10 +19,12 @@ import com.turkcell.rentacar.business.dtos.listDtos.RentListDto; import com.turkcell.rentacar.business.requests.createRequests.CreateRentRequest; import com.turkcell.rentacar.business.requests.deleteRequests.DeleteRentRequest; +import com.turkcell.rentacar.business.requests.updateRequests.UpdateDeliveryDateToRentRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateEndedKilometerInfoRequest; import com.turkcell.rentacar.business.requests.updateRequests.UpdateRentRequest; import com.turkcell.rentacar.core.utilities.mapping.ModelMapperService; import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.ErrorDataResult; import com.turkcell.rentacar.core.utilities.results.ErrorResult; import com.turkcell.rentacar.core.utilities.results.Result; import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; @@ -53,6 +58,8 @@ public Result addCorporateCustomer(CreateRentRequest createRentRequest) { Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); + rent.setRentId(makeRentId()); + checkIfRentReturnDateIsAfterNow(rent); this.rentDao.save(rent); @@ -61,18 +68,21 @@ public Result addCorporateCustomer(CreateRentRequest createRentRequest) { } @Override - public Result addIndividualCustomer(CreateRentRequest createRentRequest) { + public DataResult addIndividualCustomer(CreateRentRequest createRentRequest) { checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); + String rentId = makeRentId(); + rent.setRentId(rentId); + checkIfRentReturnDateIsAfterNow(rent); this.rentDao.save(rent); - return new SuccessResult(BusinessMessages.RENT_ADDED_SUCCESSFULLY); + return new SuccessDataResult(rentId, BusinessMessages.RENT_ADDED_SUCCESSFULLY); } @Override @@ -108,7 +118,7 @@ public DataResult> getAll() { } @Override - public DataResult getRentDetailsByRentId(int rentId) { + public DataResult getRentDetailsByRentId(String rentId) { Rent result = this.rentDao.getById(rentId); RentGetDto response = this.modelMapperService.forDto().map(result, RentGetDto.class); @@ -117,13 +127,13 @@ public DataResult getRentDetailsByRentId(int rentId) { } @Override - public DataResult> getByCarId(int carId) { + public DataResult> getByCarId(int carId) { List result = this.rentDao.getByCar_CarId(carId); - List response = result.stream() - .map(rent -> modelMapperService.forDto().map(rent, RentListDto.class)).collect(Collectors.toList()); + List response = result.stream().map(rent -> modelMapperService.forDto().map(rent, RentGetDto.class)) + .collect(Collectors.toList()); - return new SuccessDataResult>(response, BusinessMessages.RENTS_FOR_CAR_LISTED_SUCCESSFULLY); + return new SuccessDataResult>(response, BusinessMessages.RENTS_FOR_CAR_LISTED_SUCCESSFULLY); } @Override @@ -137,7 +147,7 @@ public Result checkIfCarAlreadyInRent(int carId) { } @Override - public DataResult> getOrderedAdditionalProductsByRentId(int rentId) { + public DataResult> getOrderedAdditionalProductsByRentId(String rentId) { List result = this.rentDao.getOrderedAdditionalProductsByRentId(rentId); @@ -146,7 +156,7 @@ public DataResult> getOrderedAdditionalProductsBy } @Override - public DataResult calculateRentTotalPrice(int rentId) { + public DataResult calculateRentTotalPrice(String rentId) { Rent rent = this.rentDao.getById(rentId); @@ -158,7 +168,7 @@ public DataResult calculateRentTotalPrice(int rentId) { } @Override - public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId) { + public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(String rentId) { Rent rent = this.rentDao.getById(rentId); @@ -172,13 +182,53 @@ public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(int rentId) { @Override public Result updateEndedKilometer(UpdateEndedKilometerInfoRequest updateEndedKilometerInfoRequest) { + checkIfRentExists(updateEndedKilometerInfoRequest.getRentId()); + this.rentDao.updateEndedKilometerInfoToRentByRentId(updateEndedKilometerInfoRequest.getRentId(), updateEndedKilometerInfoRequest.getEndedKilometerInfo()); return new SuccessResult(BusinessMessages.ENDED_KILOMETER_INFO_UPDATED_SUCCESSFULLY); } + @Override + public Result updateDeliveryDate(UpdateDeliveryDateToRentRequest updateDeliveryDateToRentRequest) { + + checkIfRentExists(updateDeliveryDateToRentRequest.getRentId()); + + this.rentDao.updateDeliveryDateToRentByRentId(updateDeliveryDateToRentRequest.getRentId(), + updateDeliveryDateToRentRequest.getDeliveryDate()); + + return new SuccessResult(BusinessMessages.DELIVERY_DATE_UPDATED_SUCCESSFULLY); + } + + @Override + public DataResult calculateDelayedDayPriceForRent(String rentId) { + + Rent rent = this.rentDao.getById(rentId); + + if (rent.getDeliveryDate() != null) { + if (!checkIfDeliveryDateAndRentReturnDateIsDifferent(rent.getDeliveryDate(), rent.getRentReturnDate())) { + + long usageTime = ChronoUnit.DAYS.between(rent.getDeliveryDate(), rent.getRentReturnDate()) * (-1); + + return new SuccessDataResult((rent.getCar().getDailyPrice() * usageTime)); + } + } + return new ErrorDataResult(BusinessMessages.RENT_DELAYED_DAY_PRICE_CALCULATED_FAILED); + } + + private boolean checkIfDeliveryDateAndRentReturnDateIsDifferent(LocalDate deliveryDate, LocalDate rentReturnDate) { + + if (deliveryDate != null) { + if (deliveryDate.equals(rentReturnDate)) { + return true; + } + } + return false; + } + private void checkIfCarAlreadyInRentIsSuccess(int carId) { + if (this.rentDao.existsByCar_CarId(carId)) { if (!checkIfCarAlreadyInRent(carId).isSuccess()) { throw new CarIsAlreadyInRentException(BusinessMessages.CAR_ALREADY_IN_RENT); @@ -187,6 +237,7 @@ private void checkIfCarAlreadyInRentIsSuccess(int carId) { } private void checkIfCarAlreadyInMaintenance(int carId) { + if (!checkIfCarExistInCarMaintenanceTable(carId)) { if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { throw new CarIsAlreadyInMaintenanceException(BusinessMessages.CAR_ALREADY_IN_MAINTENANCE); @@ -199,6 +250,7 @@ private boolean checkIfCarExistInCarMaintenanceTable(int id) { } private void checkIfRentReturnDateIsAfterNow(Rent rent) { + if (rent.getRentReturnDate() != null) { if (!rent.getRentReturnDate().isAfter(LocalDate.now())) { rent.setRentStatus(false); @@ -206,4 +258,15 @@ private void checkIfRentReturnDateIsAfterNow(Rent rent) { } } + private void checkIfRentExists(String rentId) { + + if (!this.rentDao.existsById(rentId)) { + throw new EntityNotFoundException(BusinessMessages.RENT_NOT_FOUND); + } + } + + private String makeRentId() { + return UUID.randomUUID().toString(); + } + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java b/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java index 577f0c9..71ae286 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java @@ -108,6 +108,7 @@ public class BusinessMessages { public static final String RENT_ADDED_SUCCESSFULLY = "RENT_ADDED_SUCCESSFULLY"; public static final String RENT_UPDATED_SUCCESSFULLY = "RENT_UPDATED_SUCCESSFULLY"; public static final String ENDED_KILOMETER_INFO_UPDATED_SUCCESSFULLY = "ENDED_KILOMETER_INFO_UPDATED_SUCCESSFULLY"; + public static final String DELIVERY_DATE_UPDATED_SUCCESSFULLY = "DELIVERY_DATE_UPDATED_SUCCESSFULLY"; public static final String RENT_DELETED_SUCCESSFULLY = "RENT_DELETED_SUCCESSFULLY"; public static final String RENT_LISTED_SUCCESSFULLY = "RENT_LISTED_SUCCESSFULLY"; public static final String RENTS_LISTED_SUCCESSFULLY = "RENTS_LISTED_SUCCESSFULLY"; @@ -116,6 +117,7 @@ public class BusinessMessages { public static final String CITIES_ARE_SAME = "CITIES_ARE_SAME"; public static final String CITIES_ARE_DIFFERENT = "CITIES_ARE_DIFFERENT"; public static final String RENT_TOTAL_PRICE_CALCULATED_SUCCESSFULLY = "RENT_TOTAL_PRICE_CALCULATED_SUCCESSFULLY"; + public static final String RENT_DELAYED_DAY_PRICE_CALCULATED_FAILED = "RENT_DELAYED_DAY_PRICE_CALCULATED_FAILED"; public static final String RENT_NOT_FOUND = "RENT_NOT_FOUND"; // USER @@ -123,4 +125,11 @@ public class BusinessMessages { public static final String USER_NOT_FOUND = "USER_NOT_FOUND"; public static final String EMAIL_ALREADY_EXISTS = "EMAIL_ALREADY_EXISTS"; + // CREDIT_CARD + public static final String CREDIT_CARD_ADDED_SUCCESSFULLY = "CREDIT_CARD_ADDED_SUCCESSFULLY"; + public static final String CREDIT_CARD_UPDATED_SUCCESSFULLY = "CREDIT_CARD_UPDATED_SUCCESSFULLY"; + public static final String CREDIT_CARD_DELETED_SUCCESSFULLY = "CREDIT_CARD_DELETED_SUCCESSFULLY"; + public static final String CREDIT_CARD_LISTED_SUCCESSFULLY = "CREDIT_CARD_LISTED_SUCCESSFULLY"; + public static final String CREDIT_CARDS_LISTED_SUCCESSFULLY = "CREDIT_CARDS_LISTED_SUCCESSFULLY"; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CreditCardGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CreditCardGetDto.java new file mode 100644 index 0000000..3888161 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/CreditCardGetDto.java @@ -0,0 +1,25 @@ +package com.turkcell.rentacar.business.dtos.getDtos; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreditCardGetDto { + + private String creditCardNo; + + private String cardHolder; + + private LocalDate expirationDate; + + private String cvv; + + private int userId; + + private String email; +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java index e51ef6e..793a658 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java @@ -11,6 +11,8 @@ @NoArgsConstructor public class RentGetDto { + private int rentId; + private LocalDate rentDate; private LocalDate rentReturnDate; @@ -33,12 +35,4 @@ public class RentGetDto { private String returnCity; - private int orderedAdditionalProductId; - - private int orderedAdditionalProductAmount; - - private int additionalProductId; - - private double additionalProductUnitPrice; - } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CreditCardListDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CreditCardListDto.java new file mode 100644 index 0000000..29a557d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/CreditCardListDto.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreditCardListDto { + + private String creditCardNo; + + private String cardHolder; + + private LocalDate expirationDate; + + private String cvv; + + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java index 4ffdf85..4e2f9aa 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java @@ -25,6 +25,10 @@ public class CreateCarRequest { @Size(min = 2, max = 50) private String description; + @NotNull + @Size(min = 2, max = 50) + private String kilometerInfo; + @NotNull @Min(1) private int brandId; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCreditCardRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCreditCardRequest.java new file mode 100644 index 0000000..5cfd0b8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCreditCardRequest.java @@ -0,0 +1,37 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateCreditCardRequest { + + @NotNull + @Size(min = 2) + private String creditCardNo; + + @NotNull + @Size(min = 2) + private String cardHolder; + + @NotNull + private LocalDate expirationDate; + + @NotNull + @Size(min = 3) + private String cvv; + + @NotNull + @Min(1) + private int userId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java index ceccdc4..009e020 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateInvoiceRequest.java @@ -18,6 +18,6 @@ public class CreateInvoiceRequest { @NotNull @Min(1) - private int rentId; + private String rentId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateMakePaymentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateMakePaymentRequest.java new file mode 100644 index 0000000..2a115c7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateMakePaymentRequest.java @@ -0,0 +1,26 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +import java.util.List; + +import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateMakePaymentRequest { + + @NotNull + private CreatePaymentRequest createPaymentRequest; + + @NotNull + private CreateRentRequest createRentRequest; + + @NotNull + private CreateInvoiceRequest createInvoiceRequest; + + private List createOrderedAdditionalProductRequests; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java index af93afc..2623de4 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateOrderedAdditionalProductRequest.java @@ -18,7 +18,7 @@ public class CreateOrderedAdditionalProductRequest { @NotNull @Min(1) - private int rentId; + private String rentId; @NotNull @Min(1) diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java index c29a3c9..bd12cc2 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java @@ -32,9 +32,13 @@ public class CreatePaymentRequest { @NotNull @Size(min = 3) private String cvv; - + + @NotNull + @Min(1) + private int userId; + @NotNull @Min(1) - private int rentId; + private String rentId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCreditCardRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCreditCardRequest.java new file mode 100644 index 0000000..c037e09 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCreditCardRequest.java @@ -0,0 +1,19 @@ +package com.turkcell.rentacar.business.requests.deleteRequests; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeleteCreditCardRequest { + + @NotNull + @Min(1) + private int creditCardId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java index e47d6a6..f9b220c 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java @@ -14,6 +14,6 @@ public class DeleteRentRequest { @NotNull @Min(1) - private int rentId; + private String rentId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCreditCardRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCreditCardRequest.java new file mode 100644 index 0000000..e144e5c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCreditCardRequest.java @@ -0,0 +1,41 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateCreditCardRequest { + + @NotNull + @Min(1) + private int creditCardId; + + @NotNull + @Size(min = 2) + private String creditCardNo; + + @NotNull + @Size(min = 2) + private String cardHolder; + + @NotNull + private LocalDate expirationDate; + + @NotNull + @Size(min = 3) + private String cvv; + + @NotNull + @Min(1) + private int userId; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateDeliveryDateToRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateDeliveryDateToRentRequest.java new file mode 100644 index 0000000..22ccdf3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateDeliveryDateToRentRequest.java @@ -0,0 +1,24 @@ +package com.turkcell.rentacar.business.requests.updateRequests; + +import java.time.LocalDate; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateDeliveryDateToRentRequest { + + @NotNull + @Min(1) + private String rentId; + + @NotNull + private LocalDate deliveryDate; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java index 91d6c57..aab4976 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateEndedKilometerInfoRequest.java @@ -15,7 +15,7 @@ public class UpdateEndedKilometerInfoRequest { @NotNull @Min(1) - private int rentId; + private String rentId; @NotNull @Size(min = 2) diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java index 5d613be..61ab9dc 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateInvoiceRequest.java @@ -18,7 +18,7 @@ public class UpdateInvoiceRequest { @NotNull @Min(1) - private int rentId; + private String rentId; @NotNull @Min(1) diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java index eb50a01..d53f2de 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateOrderedAdditionalProductRequest.java @@ -22,7 +22,7 @@ public class UpdateOrderedAdditionalProductRequest { @NotNull @Min(1) - private int rentId; + private String rentId; @NotNull @Min(1) diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java index 9df7739..8add8c4 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdatePaymentRequest.java @@ -36,6 +36,6 @@ public class UpdatePaymentRequest { @NotNull @Min(1) - private int rentId; + private String rentId; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java index 3fa460a..b86fa45 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.java @@ -16,7 +16,7 @@ public class UpdateRentRequest { @NotNull @Min(1) - private int rentId; + private String rentId; @NotNull private LocalDate rentDate; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java index 3f7eddc..b5b6e32 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java @@ -6,7 +6,7 @@ import com.turkcell.rentacar.core.services.abstracts.BaseBankPaymentServiceAdapter; import com.turkcell.rentacar.entities.concretes.Payment; -import com.turkcell.rentacar.halkbankPaymentService.HalkbankPaymentService; +import com.turkcell.rentacar.outServices.halkbankPaymentService.HalkbankPaymentService; @Component @Qualifier("halkbank") @@ -21,7 +21,6 @@ public HalkbankPaymentManagerAdapter(HalkbankPaymentService halkbankPaymentServi @Override public boolean payment(Payment payment) { - System.out.println("halkbank"); return this.halkbankPaymentService.payment(payment.getExpirationDate(), payment.getCvv(), payment.getCreditCardNo(), payment.getCardHolder()); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java index 3735e20..1bf0cc9 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/NationalIdentityManagerAdapter.java @@ -5,7 +5,7 @@ import org.springframework.stereotype.Component; import com.turkcell.rentacar.core.services.abstracts.BaseNationalIdentityService; -import com.turkcell.rentacar.nationalIdentityService.NationalIdentityService; +import com.turkcell.rentacar.outServices.nationalIdentityService.NationalIdentityService; @Component @Qualifier("nationalIdentityManager") diff --git a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java index 9616d15..0681091 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.java @@ -6,7 +6,7 @@ import com.turkcell.rentacar.core.services.abstracts.BaseBankPaymentServiceAdapter; import com.turkcell.rentacar.entities.concretes.Payment; -import com.turkcell.rentacar.ziraatBankPaymentService.ZiraatBankPaymentService; +import com.turkcell.rentacar.outServices.ziraatBankPaymentService.ZiraatBankPaymentService; @Component @@ -22,7 +22,6 @@ public ZiraatBankPaymentManagerAdapter(ZiraatBankPaymentService ziraatBankPaymen @Override public boolean payment(Payment payment) { - System.out.println("ziraat"); return this.ziraatBankPaymentService.payment(payment.getCreditCardNo(), payment.getCardHolder(), payment.getExpirationDate(), payment.getCvv()); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CreditCardDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CreditCardDao.java new file mode 100644 index 0000000..66e4f55 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CreditCardDao.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.dataAccess.abstracts; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.turkcell.rentacar.entities.concretes.CreditCard; + +public interface CreditCardDao extends JpaRepository { + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java index 086a564..e367b51 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java @@ -12,15 +12,14 @@ @Repository public interface InvoiceDao extends JpaRepository { - Invoice getByRent_RentId(int rentId); - - boolean existsByRent_RentId(int rentId); - + Invoice getByRent_RentId(String rentId); + + boolean existsByRent_RentId(String rentId); + boolean existsByUser_UserId(int userId); List getByUser_UserId(int userId); - // @Query("FROM Invoice i WHERE i.invoiceCreateDate BETWEEN ?1 AND ?2") @Query("SELECT i FROM Invoice i WHERE i.invoiceCreateDate BETWEEN :startDate AND :endDate") List getAllByBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java index 5090aad..c4e076d 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java @@ -8,8 +8,8 @@ public interface OrderedAdditionalProductDao extends JpaRepository { - List getByRent_RentId(int rentId); + List getByRent_RentId(String rentId); - boolean existsByRent_RentId(int rentId); + boolean existsByRent_RentId(String rentId); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java index cc29c0c..872c3b1 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java @@ -5,5 +5,9 @@ import com.turkcell.rentacar.entities.concretes.Payment; public interface PaymentDao extends JpaRepository { + + + + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java index 00f99d7..0d7f841 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java @@ -1,5 +1,6 @@ package com.turkcell.rentacar.dataAccess.abstracts; +import java.time.LocalDate; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; @@ -9,16 +10,22 @@ import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; import com.turkcell.rentacar.entities.concretes.Rent; -public interface RentDao extends JpaRepository { +public interface RentDao extends JpaRepository { - List getOrderedAdditionalProductsByRentId(int rentId); + List getOrderedAdditionalProductsByRentId(String rentId); boolean existsByCar_CarId(int carId); List getByCar_CarId(int carId); + + //boolean existsByRentNo(String rentNo); @Modifying @Query("update Rent r set r.endedKilometerInfo = ?2 where r.rentId = ?1") - int updateEndedKilometerInfoToRentByRentId(int rentId, String endedKilometerInfo); + int updateEndedKilometerInfoToRentByRentId(String rentId, String endedKilometerInfo); + + @Modifying + @Query("update Rent r set r.deliveryDate = ?2 where r.rentId = ?1") + int updateDeliveryDateToRentByRentId(String rentId, LocalDate deliveryDate); } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java index 8690d98..a653828 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java @@ -12,7 +12,9 @@ import javax.persistence.OneToMany; import javax.persistence.Table; +import com.turkcell.rentacar.entities.concretes.CreditCard; import com.turkcell.rentacar.entities.concretes.Invoice; +import com.turkcell.rentacar.entities.concretes.Payment; import com.turkcell.rentacar.entities.concretes.Rent; import lombok.AllArgsConstructor; @@ -43,5 +45,12 @@ public class User { @OneToMany(mappedBy = "user") private List invoices; + + @OneToMany(mappedBy = "user") + private List creditCards; + + @OneToMany(mappedBy = "user") + private List payment; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CreditCard.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CreditCard.java new file mode 100644 index 0000000..c376cd1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/CreditCard.java @@ -0,0 +1,48 @@ +package com.turkcell.rentacar.entities.concretes; + +import java.time.LocalDate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.turkcell.rentacar.entities.abstracts.User; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "credit_cards") +public class CreditCard { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "credit_card_id") + private int creditCardId; + + @Column(name = "credit_card_no") + private String creditCardNo; + + @Column(name = "card_holder") + private String cardHolder; + + @Column(name = "expiration_date") + private LocalDate expirationDate; + + @Column(name = "cvv") + private String cvv; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java index 3f144bd..1bde9fb 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java @@ -37,8 +37,5 @@ public class OrderedAdditionalProduct { @JoinColumn(name = "additional_product_id") private AdditionalProduct additionalProduct; - @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "payment_id") - private Payment payment; } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java index a35c266..bc50d31 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java @@ -14,6 +14,8 @@ import javax.persistence.OneToMany; import javax.persistence.Table; +import com.turkcell.rentacar.entities.abstracts.User; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -46,10 +48,11 @@ public class Payment { @JoinColumn(name = "rent_id") private Rent rent; - @OneToMany(mappedBy = "payment") - private List orderedAdditionalProducts; - @OneToMany(mappedBy = "payment") private List invoices; + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + } diff --git a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java index 688799a..9a09ca1 100644 --- a/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -5,8 +5,6 @@ import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @@ -27,9 +25,8 @@ public class Rent { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "rent_id") - private int rentId; + private String rentId; @Column(name = "rent_date") private LocalDate rentDate; @@ -37,6 +34,9 @@ public class Rent { @Column(name = "rent_return_date") private LocalDate rentReturnDate; + @Column(name = "delivery_date") + private LocalDate deliveryDate; + @Column(name = "rent_status") private boolean rentStatus = true; @@ -67,7 +67,7 @@ public class Rent { @OneToMany(mappedBy = "rent") private List invoices; - + @OneToMany(mappedBy = "rent") private List payments; diff --git a/rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentManager.java new file mode 100644 index 0000000..1cd6819 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentManager.java @@ -0,0 +1,15 @@ +package com.turkcell.rentacar.outServices.halkbankPaymentService; + +import java.time.LocalDate; + +import org.springframework.stereotype.Service; + +@Service +public class HalkbankPaymentManager implements HalkbankPaymentService { + + @Override + public boolean payment(LocalDate expirationDate, String cvv, String creditCardNo, String cardHolder) { + return true; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentService.java b/rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentService.java new file mode 100644 index 0000000..e1ab72a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/outServices/halkbankPaymentService/HalkbankPaymentService.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.outServices.halkbankPaymentService; + +import java.time.LocalDate; + +public interface HalkbankPaymentService { + + public boolean payment(LocalDate expirationDate, String cvv, String creditCardNo, String cardHolder); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityManager.java b/rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityManager.java new file mode 100644 index 0000000..51fb2c9 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityManager.java @@ -0,0 +1,38 @@ +package com.turkcell.rentacar.outServices.nationalIdentityService; + +import org.springframework.stereotype.Service; + +@Service +public class NationalIdentityManager implements NationalIdentityService { + + @Override + public boolean checkNationalIdentity(String nationalIdentity) { + int[] numbers = split(nationalIdentity); + + if (numbers != null) { + boolean condition1 = (numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4] + numbers[5] + + numbers[6] + numbers[7] + numbers[8] + numbers[9]) % 10 == numbers[10]; + boolean condition2 = (((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 7) + + ((numbers[1] + numbers[3] + numbers[5] + numbers[7]) * 9)) % 10 == numbers[9]; + boolean condition3 = ((numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]) * 8) + % 10 == numbers[10]; + + return condition1 && condition2 && condition3; + } + return false; + } + + private static int[] split(String nationalIdentity) { + int[] numbers = new int[11]; + + if (nationalIdentity == null || nationalIdentity.length() != 11) { + return null; + } + + for (int i = 0; i < 11; i++) { + numbers[i] = Integer.parseInt(nationalIdentity.substring(i, (i + 1))); + } + return numbers; + } + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityService.java b/rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityService.java new file mode 100644 index 0000000..0d76928 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/outServices/nationalIdentityService/NationalIdentityService.java @@ -0,0 +1,7 @@ +package com.turkcell.rentacar.outServices.nationalIdentityService; + +public interface NationalIdentityService { + + public boolean checkNationalIdentity(String nationalIdentity); + +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentManager.java b/rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentManager.java new file mode 100644 index 0000000..51862ab --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentManager.java @@ -0,0 +1,14 @@ +package com.turkcell.rentacar.outServices.ziraatBankPaymentService; + +import java.time.LocalDate; + +import org.springframework.stereotype.Service; + +@Service +public class ZiraatBankPaymentManager implements ZiraatBankPaymentService{ + + @Override + public boolean payment(String creditCardNo, String cardHolder, LocalDate expirationDate, String cvv) { + return true; + } +} diff --git a/rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentService.java b/rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentService.java new file mode 100644 index 0000000..baefcbd --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/outServices/ziraatBankPaymentService/ZiraatBankPaymentService.java @@ -0,0 +1,9 @@ +package com.turkcell.rentacar.outServices.ziraatBankPaymentService; + +import java.time.LocalDate; + +public interface ZiraatBankPaymentService { + + public boolean payment(String creditCardNo, String cardHolder, LocalDate expirationDate, String cvv); + +} diff --git a/rentacar/src/main/resources/application.properties b/rentacar/src/main/resources/application.properties index 22de371..db01470 100644 --- a/rentacar/src/main/resources/application.properties +++ b/rentacar/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.show-sql=true -spring.datasource.url=jdbc:postgresql://localhost:5432/rentacar +spring.datasource.url=jdbc:postgresql://localhost:5432/Rent_A_Car spring.datasource.username=postgres spring.datasource.password=123123 spring.jpa.properties.javax.persistence.validation.mode = none