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..26bc9b2 --- /dev/null +++ b/rentacar/pom.xml @@ -0,0 +1,97 @@ + + + 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-starter-validation + + + + + + + + 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..8610d2d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/RentacarApplication.java @@ -0,0 +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.businessExceptions.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/AdditionalProductsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java new file mode 100644 index 0000000..70def4a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/AdditionalProductsController.java @@ -0,0 +1,54 @@ +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.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; + +@RestController +@RequestMapping("/api/additionalProducts") +public class AdditionalProductsController { + + private AdditionalProductService additionalProductService; + + @Autowired + public AdditionalProductsController(AdditionalProductService additionalProductService) { + this.additionalProductService = additionalProductService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateAdditionalProductRequest createAdditionalProductRequest) { + return this.additionalProductService.add(createAdditionalProductRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateAdditionalProductRequest updateAdditionalProductRequest) { + return this.additionalProductService.update(updateAdditionalProductRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteAdditionalProductRequest deleteAdditionalProductRequest) { + 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 new file mode 100644 index 0000000..f3ae8bf --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/BrandsController.java @@ -0,0 +1,51 @@ +package com.turkcell.rentacar.api.controllers; + +import com.turkcell.rentacar.business.abstracts.BrandService; +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; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import javax.validation.Valid; + +@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 @Valid CreateBrandRequest createBrandRequest) { + return this.brandService.add(createBrandRequest); + } + + @GetMapping("/getById") + public DataResult getById(@RequestParam int id) { + return this.brandService.getById(id); + } + + @PostMapping("/update") + public Result update(@RequestBody @Valid UpdateBrandRequest updateBrandRequest) { + return this.brandService.update(updateBrandRequest); + } + + @DeleteMapping("/delete") + 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 new file mode 100644 index 0000000..2287938 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarMaintenancesController.java @@ -0,0 +1,68 @@ +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.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; + +@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 @Valid CreateCarMaintenanceRequest createCarMaintenanceRequest) { + return this.carMaintenanceService.add(createCarMaintenanceRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateCarMaintenanceRequest updateCarMaintenanceRequest) { + return this.carMaintenanceService.update(updateCarMaintenanceRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) { + return this.carMaintenanceService.delete(deleteCarMaintenanceRequest); + } + + @GetMapping("/checkIfCarIsAlreadyInMaintenance") + 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 new file mode 100644 index 0000000..2405b02 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CarsController.java @@ -0,0 +1,100 @@ +package com.turkcell.rentacar.api.controllers; + +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; +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.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; +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; + +@RestController +@RequestMapping("/api/cars") +public class CarsController { + + private CarService carService; + + public CarsController(CarService carService) { + 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 @Valid CreateCarRequest createCarRequest) { + return this.carService.add(createCarRequest); + } + + @DeleteMapping("/delete") + public Result delete(@RequestBody @Valid DeleteCarRequest deleteCarRequest) { + return this.carService.delete(deleteCarRequest); + } + + @PostMapping("/update") + public Result update(@RequestBody @Valid UpdateCarRequest updateCarRequest) { + return this.carService.update(updateCarRequest); + } + + @Transactional + @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 @Valid UpdateBrandToCarRequest updateBrandToCarRequest) { + 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..067b50d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/ColorsController.java @@ -0,0 +1,51 @@ +package com.turkcell.rentacar.api.controllers; + +import com.turkcell.rentacar.business.abstracts.ColorService; +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.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import javax.validation.Valid; + +@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 @Valid CreateColorRequest createColorRequest) { + this.colorService.add(createColorRequest); + } + + @GetMapping("/getById") + public DataResult getById(@RequestParam int id) { + return this.colorService.getById(id); + } + + @PostMapping("/update") + public Result update(@RequestBody @Valid UpdateColorRequest updateColorRequest) { + return this.colorService.update(updateColorRequest); + } + + @DeleteMapping("/delete") + 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 new file mode 100644 index 0000000..1f682f6 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CorporateCustomersController.java @@ -0,0 +1,45 @@ +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; + +@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) { + return this.corporateCustomerService.add(createCorporateCustomerRequest); + } + + @PutMapping("/update") + Result update(@RequestBody @Valid UpdateCorporateCustomerRequest updateCorporateCustomerRequest) { + return this.corporateCustomerService.update(updateCorporateCustomerRequest); + } + + @DeleteMapping("/delete") + Result delete(@RequestBody @Valid DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) { + return this.corporateCustomerService.delete(deleteCorporateCustomerRequest); + } + +} 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/CustomersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java new file mode 100644 index 0000000..eaded18 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/CustomersController.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +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.dtos.listDtos.CustomerListDto; +import com.turkcell.rentacar.core.utilities.results.DataResult; + +@RestController +@RequestMapping("/api/customers") +public class CustomersController { + + private CustomerService customerService; + + @Autowired + public CustomersController(CustomerService customerService) { + this.customerService = customerService; + } + + @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 new file mode 100644 index 0000000..987961a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/IndividualCustomersController.java @@ -0,0 +1,45 @@ +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; + +@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) { + return this.individualCustomerService.add(createIndividualCustomerRequest); + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateIndividualCustomerRequest updateIndividualCustomerRequest) { + return this.individualCustomerService.update(updateIndividualCustomerRequest); + } + + @DeleteMapping("/delete") + 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 new file mode 100644 index 0000000..8397391 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/InvoicesController.java @@ -0,0 +1,79 @@ +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.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; + +@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) { + 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 String rentId) { + return this.invoicesService.getByRentId(rentId); + } + + @GetMapping("/getOrderedAdditionalProductByRentId") + public DataResult> getOrderedAdditionalProductByRentId(@RequestParam String rentId) { + return this.invoicesService.getOrderedAdditionalProductByRentId(rentId); + } + + @GetMapping("/getByUserId") + public DataResult> getByUserId(@RequestParam int userId) { + 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 new file mode 100644 index 0000000..82c5110 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/OrderedAdditionalProductsController.java @@ -0,0 +1,73 @@ +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.RequestParam; +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; + +@RestController +@RequestMapping("/api/orderedAdditionalProducts") +public class OrderedAdditionalProductsController { + + OrderedAdditionalProductService orderedAdditionalProductService; + + @Autowired + public OrderedAdditionalProductsController(OrderedAdditionalProductService orderedAdditionalProductService) { + this.orderedAdditionalProductService = orderedAdditionalProductService; + } + + @PostMapping("/add") + public Result add(@RequestBody @Valid CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest) { + return this.orderedAdditionalProductService.add(createOrderedAdditionalProductRequest); + } + + @PutMapping("/update") + public Result update( + @RequestBody @Valid UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) { + return this.orderedAdditionalProductService.update(updateOrderedAdditionalProductRequest); + } + + @DeleteMapping("/delete") + public Result delete( + @RequestBody @Valid DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) { + return this.orderedAdditionalProductService.delete(deleteOrderedAdditionalProductRequest); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.orderedAdditionalProductService.getAll(); + } + + @GetMapping("/checkIfRentExists") + public Result checkIfRentExists(@RequestParam String rentId) { + return this.orderedAdditionalProductService.checkIfRentExists(rentId); + } + + @GetMapping("/getByRentId") + public DataResult> getByRentId(@RequestParam String rentId) { + return this.orderedAdditionalProductService.getByRentId(rentId); + } + + @GetMapping("/calculateOrderedAdditionalPrice") + 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 new file mode 100644 index 0000000..ee4260d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/PaymentsController.java @@ -0,0 +1,45 @@ +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.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; + +@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 CreateMakePaymentRequest createMakePaymentRequest) { + return this.paymentService.add(createMakePaymentRequest); + } + + @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/api/controllers/RentsController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java new file mode 100644 index 0000000..7e1c724 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/RentsController.java @@ -0,0 +1,95 @@ +package com.turkcell.rentacar.api.controllers; + +import java.util.List; + +import javax.transaction.Transactional; +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.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.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; +import com.turkcell.rentacar.core.utilities.results.Result; + +@RestController +@RequestMapping("/api/rents") +public class RentsController { + + private RentService rentService; + + @Autowired + public RentsController(RentService rentService) { + this.rentService = rentService; + } + + @PostMapping("/addCorporateCustomer") + public Result addCorporateCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) { + return this.rentService.addCorporateCustomer(createRentRequest); + + } + + @PostMapping("/addIndividualCustomer") + public DataResult addIndividualCustomer(@RequestBody @Valid CreateRentRequest createRentRequest) { + return this.rentService.addIndividualCustomer(createRentRequest); + } + + @PutMapping("/update") + 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); + } + + @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); + } + + @GetMapping("/getAll") + public DataResult> getAll() { + return this.rentService.getAll(); + } + + @GetMapping("/getRentDetailsByRentId") + 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/api/controllers/UsersController.java b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java new file mode 100644 index 0000000..433879b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/api/controllers/UsersController.java @@ -0,0 +1,30 @@ +package com.turkcell.rentacar.api.controllers; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +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.updateRequests.UpdateUserRequest; +import com.turkcell.rentacar.core.utilities.results.Result; + +@RestController +@RequestMapping("/api/users") +public class UsersController { + + private UserService userService; + + @Autowired + public UsersController(UserService userService) { + this.userService = userService; + } + + @PutMapping("/update") + public Result update(@RequestBody @Valid UpdateUserRequest updateUserRequest) { + return this.userService.update(updateUserRequest); + } +} 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..502ca7b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/AdditionalProductService.java @@ -0,0 +1,22 @@ +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; + +public interface AdditionalProductService { + + Result add(CreateAdditionalProductRequest createAdditionalProductRequest); + + Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest); + + 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 new file mode 100644 index 0000000..607e6ed --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/BrandService.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.abstracts; + +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; +import com.turkcell.rentacar.core.utilities.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +import java.util.List; + +public interface BrandService { + DataResult> getAll(); + + DataResult getById(int id); + + Result add(CreateBrandRequest createBrandRequest); + + Result update(UpdateBrandRequest updateBrandRequest); + + 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 new file mode 100644 index 0000000..e1a849d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarMaintenanceService.java @@ -0,0 +1,29 @@ +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; + +public interface CarMaintenanceService { + + DataResult> getAll(); + + DataResult> getByCarId(int carId); + + DataResult getCarMaintenanceDetailsByCarMaintenanceId(int carMaintenanceId); + + Result add(CreateCarMaintenanceRequest createCarMaintenanceRequest); + + Result update(UpdateCarMaintenanceRequest updateCarMaintenanceRequest); + + Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest); + + 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 new file mode 100644 index 0000000..9b0702d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CarService.java @@ -0,0 +1,39 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +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; +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; + +public interface CarService { + + DataResult> getAll(); + + DataResult getById(int id); + + DataResult> getAllPaged(int pageNo, int pageSize); + + DataResult> getAllSorted(boolean sort); + + Result add(CreateCarRequest createCarRequest); + + Result update(UpdateCarRequest updateCarRequest); + + Result updateKilometerInfo(UpdateCarKilometerInfoRequest updateCarKilometerInfoRequest); + + Result delete(DeleteCarRequest deleteCarRequest); + + 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 new file mode 100644 index 0000000..87ab9d3 --- /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.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.results.DataResult; +import com.turkcell.rentacar.core.utilities.results.Result; + +import java.util.List; + +public interface ColorService { + + 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/CorporateCustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java new file mode 100644 index 0000000..f659599 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CorporateCustomerService.java @@ -0,0 +1,15 @@ +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; + +public interface CorporateCustomerService { + + Result add(CreateCorporateCustomerRequest createCorporateCustomerRequest); + + Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest); + + Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest); +} 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/CustomerService.java b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java new file mode 100644 index 0000000..2adde6c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/CustomerService.java @@ -0,0 +1,12 @@ +package com.turkcell.rentacar.business.abstracts; + +import java.util.List; + +import com.turkcell.rentacar.business.dtos.listDtos.CustomerListDto; +import com.turkcell.rentacar.core.utilities.results.DataResult; + +public interface CustomerService { + + 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 new file mode 100644 index 0000000..0c6da44 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/IndividualCustomerService.java @@ -0,0 +1,16 @@ +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; + +public interface IndividualCustomerService { + + Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest); + + Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest); + + 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 new file mode 100644 index 0000000..db7b0b4 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/InvoiceService.java @@ -0,0 +1,32 @@ +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; + +public interface InvoiceService { + + Result add(CreateInvoiceRequest createInvoiceRequest); + + Result update(UpdateInvoiceRequest updateInvoiceRequest); + + Result delete(DeleteInvoiceRequest deleteInvoiceRequest); + + DataResult getByRentId(String rentId); + + DataResult> getOrderedAdditionalProductByRentId(String rentId); + + DataResult> getAll(); + + 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 new file mode 100644 index 0000000..f7157b9 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/OrderedAdditionalProductService.java @@ -0,0 +1,28 @@ +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; + +public interface OrderedAdditionalProductService { + + Result add(CreateOrderedAdditionalProductRequest createOrderedAdditionalProductRequest); + + Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest); + + Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest); + + Result checkIfRentExists(String rentId); + + DataResult> getAll(); + + DataResult> getByRentId(String 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 new file mode 100644 index 0000000..4803551 --- /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.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(CreateMakePaymentRequest createMakePaymentRequest); + + Result update(UpdatePaymentRequest updatePaymentRequest); + + Result delete(DeletePaymentRequest deletePaymentRequest); +} 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..a48e668 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/RentService.java @@ -0,0 +1,46 @@ +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.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; +import com.turkcell.rentacar.core.utilities.results.Result; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; + +public interface RentService { + + Result addCorporateCustomer(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> getOrderedAdditionalProductsByRentId(String rentId); + + DataResult calculateRentTotalPrice(String rentId); + + DataResult calculateDelayedDayPriceForRent(String rentId); + + DataResult getRentDetailsByRentId(String rentId); + + Result checkIfCarAlreadyInRent(int carId); + + Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(String 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..3bc3b5b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/abstracts/UserService.java @@ -0,0 +1,10 @@ +package com.turkcell.rentacar.business.abstracts; + +import com.turkcell.rentacar.business.requests.updateRequests.UpdateUserRequest; +import com.turkcell.rentacar.core.utilities.results.Result; + +public interface UserService { + + 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 new file mode 100644 index 0000000..3c70e55 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/AdditionalProductManager.java @@ -0,0 +1,99 @@ +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.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; +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.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +@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) { + + checkIfAdditionalProducNameExists(createAdditionalProductRequest.getAdditionalProductName()); + + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(createAdditionalProductRequest, + AdditionalProduct.class); + + this.additionalProductDao.save(additionalProduct); + + return new SuccessResult(BusinessMessages.ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateAdditionalProductRequest updateAdditionalProductRequest) { + + checkIfAdditionalProductExists(updateAdditionalProductRequest.getAdditionalProductId()); + + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(updateAdditionalProductRequest, + AdditionalProduct.class); + + this.additionalProductDao.save(additionalProduct); + + return new SuccessResult(BusinessMessages.ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteAdditionalProductRequest deleteAdditionalProductRequest) { + + checkIfAdditionalProductExists(deleteAdditionalProductRequest.getAdditionalProductId()); + + AdditionalProduct additionalProduct = this.modelMapperService.forRequest().map(deleteAdditionalProductRequest, + AdditionalProduct.class); + + this.additionalProductDao.delete(additionalProduct); + + return new SuccessResult(BusinessMessages.ADDITIONAL_PRODUCT_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, + BusinessMessages.ADDITIONAL_PRODUCT_LISTED_SUCCESSFULLY); + } + + private void checkIfAdditionalProductExists(int additionalProductId) { + if (!this.additionalProductDao.existsByAdditionalProductId(additionalProductId)) { + throw new EntityNotFoundException(BusinessMessages.ADDITIONAL_PRODUCT_NOT_FOUND); + } + } + + private void checkIfAdditionalProducNameExists(String additionalProductName) { + if (this.additionalProductDao.existsByAdditionalProductName(additionalProductName)) { + 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 new file mode 100644 index 0000000..fd86bf8 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/BrandManager.java @@ -0,0 +1,105 @@ +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; +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.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.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +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, BusinessMessages.BRANDS_LISTED_SUCCESSFULLY); + } + + @Override + public Result add(CreateBrandRequest createBrandRequest) { + + checkIfBrandNameExists(createBrandRequest.getBrandName()); + + Brand brand = this.modelMapperService.forRequest().map(createBrandRequest, Brand.class); + + this.brandDao.save(brand); + + return new SuccessResult(BusinessMessages.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, BusinessMessages.BRAND_LISTED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateBrandRequest updateBrandRequest) { + + checkIfBrandExists(updateBrandRequest.getBrandId()); + checkIfBrandNameExists(updateBrandRequest.getBrandName()); + + Brand brand = this.modelMapperService.forRequest().map(updateBrandRequest, Brand.class); + + this.brandDao.save(brand); + + return new SuccessResult(BusinessMessages.BRAND_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteBrandRequest deleteBrandRequest) { + + checkIfBrandExists(deleteBrandRequest.getBrandId()); + + Brand brand = this.modelMapperService.forRequest().map(deleteBrandRequest, Brand.class); + + this.brandDao.deleteById(brand.getBrandId()); + + return new SuccessResult(BusinessMessages.BRAND_DELETED_SUCCESSFULLY); + } + + private void checkIfBrandExists(int brandId) { + if (!this.brandDao.existsById(brandId)) { + throw new EntityNotFoundException(BusinessMessages.BRAND_ALREADY_EXISTS); + } + } + + private void checkIfBrandNameExists(String brandName) { + if (this.brandDao.existsBrandByBrandName(brandName)) { + 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 new file mode 100644 index 0000000..7770d05 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarDamageManager.java @@ -0,0 +1,75 @@ +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.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; +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(BusinessMessages.CAR_DAMAGE_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateCarDamageRequest updateCarDamageRequest) { + + CarDamage carDamage = this.modelMapperService.forRequest().map(updateCarDamageRequest, CarDamage.class); + + this.carDamageDao.save(carDamage); + + return new SuccessResult(BusinessMessages.CAR_DAMAGE_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteCarDamageRequest deleteCarDamageRequest) { + + CarDamage carDamage = this.modelMapperService.forRequest().map(deleteCarDamageRequest, CarDamage.class); + + this.carDamageDao.delete(carDamage); + + return new SuccessResult(BusinessMessages.CAR_DAMAGE_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, 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 new file mode 100644 index 0000000..8e37ba0 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarMaintenanceManager.java @@ -0,0 +1,166 @@ +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.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; +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.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 { + + private CarMaintenanceDao carMaintenanceDao; + private ModelMapperService modelMapperService; + private RentService rentService; + + @Autowired + public CarMaintenanceManager(CarMaintenanceDao carMaintenanceDao, ModelMapperService modelMapperService, + @Lazy 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, + BusinessMessages.CAR_MAINTENANCES_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, + BusinessMessages.CAR_MAINTENANCE_LISTED_SUCCESSFULLY); + } + + @Override + 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(BusinessMessages.CAR_MAINTENANCE_ADDED_SUCCESSFULLY); + } + + @Override + 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(BusinessMessages.CAR_MAINTENANCE_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteCarMaintenanceRequest deleteCarMaintenanceRequest) { + + existByCarMaintenance(deleteCarMaintenanceRequest.getCarMaintenanceId()); + + CarMaintenance carMaintenance = this.modelMapperService.forRequest().map(deleteCarMaintenanceRequest, + CarMaintenance.class); + + this.carMaintenanceDao.delete(carMaintenance); + + return new SuccessResult(BusinessMessages.CAR_MAINTENANCE_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, + 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(BusinessMessages.CAR_NOT_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(BusinessMessages.CAR_ALREADY_IN_MAINTENANCE); + } + } + } + + private void checkIfCarIsAlreadyInRent(int carId) { + if (!checkIfCarExistInRentTable(carId)) { + if (!this.rentService.checkIfCarAlreadyInRent(carId).isSuccess()) { + throw new CarIsAlreadyInRentException(BusinessMessages.CAR_ALREADY_IN_RENT); + } + } + } + + private boolean checkIfCarExistInRentTable(int carId) { + return this.rentService.getByCarId(carId).getData().isEmpty(); + } + + private void existByCarMaintenance(int carMaintenanceId) { + if (!this.carMaintenanceDao.existsById(carMaintenanceId)) { + throw new EntityNotFoundException(BusinessMessages.CAR_MAINTENANCE_NOT_FOUND); + } + } + + private void checkIfReturnDateIsAfterNow(LocalDate returnDate) { + if (returnDate != null) { + if (returnDate.isAfter(LocalDate.now())) { + 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 new file mode 100644 index 0000000..f93251a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CarManager.java @@ -0,0 +1,178 @@ +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.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; +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; +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.CarDao; +import com.turkcell.rentacar.entities.concretes.Car; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +@Service +public class CarManager implements CarService { + + private CarDao carDao; + private ModelMapperService modelMapperService; + + @Autowired + public CarManager(CarDao carDao, ModelMapperService modelMapperService) { + 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, BusinessMessages.CARS_LISTED_SUCCESSFULLY); + } + + @Override + public Result add(CreateCarRequest createCarRequest) { + + Car car = this.modelMapperService.forRequest().map(createCarRequest, Car.class); + + this.carDao.save(car); + + return new SuccessResult(BusinessMessages.CAR_ADDED_SUCCESSFULLY); + } + + @Override + 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(BusinessMessages.CAR_UPDATED_SUCCESSFULLY); + } + + @Override + 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(BusinessMessages.CAR_DELETED_SUCCESSFULLY); + } + + @Override + public Result updateColor(UpdateColorToCarRequest updateColorToCarRequest) { + + checkIfCarExists(updateColorToCarRequest.getCarId()); + + this.carDao.updateColorToCarByCarId(updateColorToCarRequest.getCarId(), updateColorToCarRequest.getColorId()); + + return new SuccessResult(BusinessMessages.COLOR_CAR_UPDATED_SUCCESSFULLY); + } + + @Override + public Result updateBrand(UpdateBrandToCarRequest updateBrandToCarRequest) { + + checkIfCarExists(updateBrandToCarRequest.getCarId()); + + this.carDao.updateBrandToCarByCarId(updateBrandToCarRequest.getCarId(), updateBrandToCarRequest.getBrandId()); + + return new SuccessResult(BusinessMessages.BRAND_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, BusinessMessages.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, + BusinessMessages.CAR_LISTED_SUCCESSFULLY_BY_DAILY_PRICE); + } + + @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, + BusinessMessages.CAR_LISTED_AND_PAGINATED_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, BusinessMessages.CAR_SORTED_SUCCESSFULLY); + } + + @Override + public Result updateKilometerInfo(UpdateCarKilometerInfoRequest updateCarKilometerInfoRequest) { + + this.carDao.updateKilometerToCarByCarId(updateCarKilometerInfoRequest.getCarId(), + updateCarKilometerInfoRequest.getKilometerInfo()); + + return new SuccessResult(BusinessMessages.KILOMETER_INFO_CAR_UPDATED_SUCCESSFULLY); + } + + private void checkIfCarExists(int carId) { + if (!this.carDao.existsByCarId(carId)) { + throw new EntityNotFoundException(BusinessMessages.CAR_NOT_FOUND); + } + } + + 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..5093a45 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/ColorManager.java @@ -0,0 +1,106 @@ +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; +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.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.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +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 Result add(CreateColorRequest createColorRequest) { + + checkIfColorNameExists(createColorRequest.getColorName()); + + Color color = this.modelMapperService.forRequest().map(createColorRequest, Color.class); + + this.colorDao.save(color); + + return new SuccessResult(BusinessMessages.COLOR_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateColorRequest updateColorRequest) { + + checkIfColorExists(updateColorRequest.getColorId()); + checkIfColorNameExists(updateColorRequest.getColorName()); + + Color color = this.modelMapperService.forRequest().map(updateColorRequest, Color.class); + + this.colorDao.save(color); + + return new SuccessResult(BusinessMessages.COLOR_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteColorRequest deleteColorRequest) { + + checkIfColorExists(deleteColorRequest.getColorId()); + + Color color = this.modelMapperService.forRequest().map(deleteColorRequest, Color.class); + + this.colorDao.deleteById(color.getColorId()); + + 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(BusinessMessages.COLOR_ALREADY_EXISTS); + } + } + + private void checkIfColorExists(int colorId) { + if (!this.colorDao.existsById(colorId)) { + 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 new file mode 100644 index 0000000..edb0ccd --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CorporateCustomerManager.java @@ -0,0 +1,83 @@ +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.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; +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.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +@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) { + + checkIfEmailExists(createCorporateCustomerRequest.getEmail()); + + CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(createCorporateCustomerRequest, + CorporateCustomer.class); + + this.corporateCustomerDao.save(corporateCustomer); + + return new SuccessResult(BusinessMessages.CORPORATE_CUSTOMER_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateCorporateCustomerRequest updateCorporateCustomerRequest) { + + checkIfEmailExists(updateCorporateCustomerRequest.getEmail()); + checkIfCorporateCustomerExists(updateCorporateCustomerRequest.getUserId()); + + CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(updateCorporateCustomerRequest, + CorporateCustomer.class); + + this.corporateCustomerDao.save(corporateCustomer); + + return new SuccessResult(BusinessMessages.CORPORATE_CUSTOMER_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteCorporateCustomerRequest deleteCorporateCustomerRequest) { + + checkIfCorporateCustomerExists(deleteCorporateCustomerRequest.getUserId()); + + CorporateCustomer corporateCustomer = this.modelMapperService.forRequest().map(deleteCorporateCustomerRequest, + CorporateCustomer.class); + + this.corporateCustomerDao.delete(corporateCustomer); + + return new SuccessResult(BusinessMessages.CORPORATE_CUSTOMER_DELETED_SUCCESSFULLY); + } + + private void checkIfCorporateCustomerExists(int corporateCustomerId) { + if (!this.corporateCustomerDao.existsById(corporateCustomerId)) { + throw new EntityNotFoundException(BusinessMessages.CORPORATE_CUSTOMER_NOT_FOUND); + } + } + + private void checkIfEmailExists(String email) { + if (this.corporateCustomerDao.existsByEmail(email)) { + throw new EntityAlreadyExistsException(BusinessMessages.EMAIL_ALREADY_EXISTS); + } + } + +} 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/CustomerManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java new file mode 100644 index 0000000..cb14b33 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/CustomerManager.java @@ -0,0 +1,41 @@ +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.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; +import com.turkcell.rentacar.core.utilities.results.SuccessDataResult; +import com.turkcell.rentacar.dataAccess.abstracts.CustomerDao; +import com.turkcell.rentacar.entities.concretes.Customer; + +@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 DataResult> getAll() { + + List result = this.customerDao.findAll(); + List response = result.stream() + .map(customer -> modelMapperService.forDto().map(customer, CustomerListDto.class)) + .collect(Collectors.toList()); + + 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 new file mode 100644 index 0000000..bfb5784 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/IndividualCustomerManager.java @@ -0,0 +1,97 @@ +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; +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; +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; +import com.turkcell.rentacar.dataAccess.abstracts.IndividualCustomerDao; +import com.turkcell.rentacar.entities.concretes.IndividualCustomer; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; +import com.turkcell.rentacar.exceptions.businessExceptions.NationalIdentityNotValidException; + +@Service +public class IndividualCustomerManager implements IndividualCustomerService { + + private IndividualCustomerDao individualCustomerDao; + private ModelMapperService modelMapperService; + private BaseNationalIdentityService baseNationalIdentityService; + + @Autowired + public IndividualCustomerManager(IndividualCustomerDao individualCustomerDao, ModelMapperService modelMapperService, + @Qualifier("fakeNationalIdentityManager") BaseNationalIdentityService baseNationalIdentityService) { + this.individualCustomerDao = individualCustomerDao; + this.modelMapperService = modelMapperService; + this.baseNationalIdentityService = baseNationalIdentityService; + } + + @Override + public Result add(CreateIndividualCustomerRequest createIndividualCustomerRequest) { + + checkIfEmailExists(createIndividualCustomerRequest.getEmail()); + checkIfNationalIdentityIsReal(createIndividualCustomerRequest.getNationalIdentity()); + + IndividualCustomer individualCustomer = this.modelMapperService.forRequest() + .map(createIndividualCustomerRequest, IndividualCustomer.class); + + this.individualCustomerDao.save(individualCustomer); + + return new SuccessResult(BusinessMessages.INDIVIDUAL_CUSTOMER_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateIndividualCustomerRequest updateIndividualCustomerRequest) { + + checkIfEmailExists(updateIndividualCustomerRequest.getEmail()); + checkIfIndividualCustomerExists(updateIndividualCustomerRequest.getUserId()); + checkIfNationalIdentityIsReal(updateIndividualCustomerRequest.getNationalIdentity()); + + IndividualCustomer individualCustomer = this.modelMapperService.forRequest() + .map(updateIndividualCustomerRequest, IndividualCustomer.class); + + this.individualCustomerDao.save(individualCustomer); + + return new SuccessResult(BusinessMessages.INDIVIDUAL_CUSTOMER_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteIndividualCustomerRequest deleteIndividualCustomerRequest) { + + checkIfIndividualCustomerExists(deleteIndividualCustomerRequest.getUserId()); + + IndividualCustomer individualCustomer = this.modelMapperService.forRequest() + .map(deleteIndividualCustomerRequest, IndividualCustomer.class); + + this.individualCustomerDao.delete(individualCustomer); + + return new SuccessResult(BusinessMessages.INDIVIDUAL_CUSTOMER_DELETED_SUCCESSFULLY); + } + + private void checkIfIndividualCustomerExists(int individualCustomerId) { + if (!this.individualCustomerDao.existsById(individualCustomerId)) { + throw new EntityNotFoundException(BusinessMessages.INDIVIDUAL_CUSTOMER_NOT_FOUND); + } + } + + private void checkIfEmailExists(String email) { + if (this.individualCustomerDao.existsByEmail(email)) { + throw new EntityAlreadyExistsException(BusinessMessages.EMAIL_ALREADY_EXISTS); + } + } + + private void checkIfNationalIdentityIsReal(String 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 new file mode 100644 index 0000000..92446f7 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/InvoiceManager.java @@ -0,0 +1,214 @@ +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.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; +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.businessExceptions.EntityNotFoundException; + +@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) { + + Invoice invoice = this.modelMapperService.forRequest().map(createInvoiceRequest, Invoice.class); + + if (checkIfDeliverDateAndRentReturnDateIsDifferent(invoice.getRent().getRentId())) { + invoice.setTotalPrice(calculateDelayedDayPrice(invoice.getRent().getRentId())); + } else { + invoice.setTotalPrice(calculateTotalPrice(invoice)); + } + + this.invoiceDao.save(invoice); + + return new SuccessResult(BusinessMessages.INVOICE_ADDED_SUCCESSFULLY); + + } + + @Override + public Result update(UpdateInvoiceRequest updateInvoiceRequest) { + + checkIfInvoiceExists(updateInvoiceRequest.getInvoiceId()); + + Invoice invoice = this.modelMapperService.forRequest().map(updateInvoiceRequest, Invoice.class); + + invoice.setTotalPrice(calculateTotalPrice(invoice)); + + this.invoiceDao.save(invoice); + + return new SuccessResult(BusinessMessages.INVOICE_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteInvoiceRequest deleteInvoiceRequest) { + + Invoice invoice = this.modelMapperService.forRequest().map(deleteInvoiceRequest, Invoice.class); + + this.invoiceDao.delete(invoice); + + return new SuccessResult(BusinessMessages.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, BusinessMessages.INVOICES_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult getByRentId(String rentId) { + + checkIfRentExists(rentId); + + Invoice result = this.invoiceDao.getByRent_RentId(rentId); + InvioceListDto response = this.modelMapperService.forDto().map(result, InvioceListDto.class); + + return new SuccessDataResult(response, BusinessMessages.INVOICE_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult> getOrderedAdditionalProductByRentId(String rentId) { + + List result = this.rentService.getOrderedAdditionalProductsByRentId(rentId).getData(); + + return new SuccessDataResult>(result, + BusinessMessages.INVOICE_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult> getByUserId(int userId) { + + 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, + BusinessMessages.USERS_INVOICES_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, + BusinessMessages.INVOICE_BETWEEN_START_DATE_AND_END_DATE_LISTED_SUCCESSFULLY); + } + + private double calculateTotalPrice(Invoice invoice) { + + return calculateRentTotalPrice(invoice.getRent().getRentId()) + + calculateOrderedAdditionalPrice(invoice.getRent().getRentId()) + + calculateIfCityIsDifferentPrice(invoice.getRent().getRentId()); + } + + private double calculateRentTotalPrice(String rentId) { + return this.rentService.calculateRentTotalPrice(rentId).getData(); + } + + private double calculateOrderedAdditionalPrice(String rentId) { + + if (checkIfInvoiceHasOrderedAdditionalProduct(rentId)) { + return this.orderedAdditionalProductService.calculateOrderedAdditionalPrice(rentId).getData(); + } + return 0; + } + + 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(String rentId) { + + if (this.orderedAdditionalProductService.checkIfRentExists(rentId).isSuccess()) { + return true; + } + return false; + } + + 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 new file mode 100644 index 0000000..8f795ba --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/OrderedAdditionalProductManager.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.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; +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; +import com.turkcell.rentacar.dataAccess.abstracts.OrderedAdditionalProductDao; +import com.turkcell.rentacar.entities.concretes.OrderedAdditionalProduct; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +@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) { + + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() + .map(createOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + + orderedAdditionalProduct.setOrderedAdditionalProductId(0); + this.orderedAdditionalProductDao.save(orderedAdditionalProduct); + + return new SuccessResult(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateOrderedAdditionalProductRequest updateOrderedAdditionalProductRequest) { + + checkIfOrderedAdditionalProductExists(updateOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); + + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() + .map(updateOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + + this.orderedAdditionalProductDao.save(orderedAdditionalProduct); + + return new SuccessResult(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteOrderedAdditionalProductRequest deleteOrderedAdditionalProductRequest) { + + checkIfOrderedAdditionalProductExists(deleteOrderedAdditionalProductRequest.getOrderedAdditionalProductId()); + + OrderedAdditionalProduct orderedAdditionalProduct = this.modelMapperService.forRequest() + .map(deleteOrderedAdditionalProductRequest, OrderedAdditionalProduct.class); + + this.orderedAdditionalProductDao.delete(orderedAdditionalProduct); + + return new SuccessResult(BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_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, + BusinessMessages.ORDERED_ADDITIONAL_PRODUCTS_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult> getByRentId(String 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, + BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_FOR_RENT_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult calculateOrderedAdditionalPrice(String rentId) { + + 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, + BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_PRICE_CALCULATED_SUCCESSFULLY); + } + + @Override + public Result checkIfRentExists(String rentId) { + + if (this.orderedAdditionalProductDao.existsByRent_RentId(rentId)) { + return new SuccessResult(BusinessMessages.RENT_ALREADY_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); + } + + return new ErrorResult(BusinessMessages.RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); + } + + private void checkIfRentExistsIsSuccess(String rentId) { + if (!checkIfRentExists(rentId).isSuccess()) { + throw new EntityNotFoundException(BusinessMessages.RENT_NOT_EXISTS_IN_ORDERED_ADDITIONAL_PRODUCT); + } + } + + private void checkIfOrderedAdditionalProductExists(int orderedAdditionalProductId) { + if (!this.orderedAdditionalProductDao.existsById(orderedAdditionalProductId)) { + 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..134bce6 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/PaymentManager.java @@ -0,0 +1,117 @@ +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; +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; + + private RentService rentService; + private InvoiceService invoiceService; + private OrderedAdditionalProductService orderedAdditionalProductService; + + @Autowired + public PaymentManager(PaymentDao paymentDao, ModelMapperService modelMapperService, + @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(CreateMakePaymentRequest createMakePaymentRequest) { + + Payment payment = this.modelMapperService.forRequest().map(createMakePaymentRequest.getCreatePaymentRequest(), + Payment.class); + + checkIfPaymentIsSuccess(payment); + runPaymentSuccessor(createMakePaymentRequest); + + 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); + } + } + + @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 new file mode 100644 index 0000000..2e65c1a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/RentManager.java @@ -0,0 +1,272 @@ +package com.turkcell.rentacar.business.concretes; + +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; + +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; +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; +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.businessExceptions.CarIsAlreadyInMaintenanceException; +import com.turkcell.rentacar.exceptions.businessExceptions.CarIsAlreadyInRentException; + +@Service +public class RentManager implements RentService { + + private RentDao rentDao; + private ModelMapperService modelMapperService; + private CarMaintenanceService carMaintenanceService; + + @Autowired + public RentManager(RentDao rentDao, ModelMapperService modelMapperService, + @Lazy CarMaintenanceService carMaintenanceService) { + this.rentDao = rentDao; + this.modelMapperService = modelMapperService; + this.carMaintenanceService = carMaintenanceService; + } + + @Override + public Result addCorporateCustomer(CreateRentRequest createRentRequest) { + + checkIfCarAlreadyInMaintenance(createRentRequest.getCarId()); + checkIfCarAlreadyInRentIsSuccess(createRentRequest.getCarId()); + + Rent rent = this.modelMapperService.forRequest().map(createRentRequest, Rent.class); + + rent.setRentId(makeRentId()); + + checkIfRentReturnDateIsAfterNow(rent); + + this.rentDao.save(rent); + + return new SuccessResult(BusinessMessages.RENT_ADDED_SUCCESSFULLY); + } + + @Override + 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 SuccessDataResult(rentId, BusinessMessages.RENT_ADDED_SUCCESSFULLY); + } + + @Override + public Result update(UpdateRentRequest updateRentRequest) { + + Rent rent = this.modelMapperService.forRequest().map(updateRentRequest, Rent.class); + + checkIfRentReturnDateIsAfterNow(rent); + + this.rentDao.save(rent); + + return new SuccessResult(BusinessMessages.RENT_UPDATED_SUCCESSFULLY); + } + + @Override + public Result delete(DeleteRentRequest deleteRentRequest) { + + Rent rent = this.modelMapperService.forRequest().map(deleteRentRequest, Rent.class); + + this.rentDao.delete(rent); + + return new SuccessResult(BusinessMessages.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, BusinessMessages.RENTS_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult getRentDetailsByRentId(String rentId) { + + Rent result = this.rentDao.getById(rentId); + RentGetDto response = this.modelMapperService.forDto().map(result, RentGetDto.class); + + return new SuccessDataResult(response, BusinessMessages.RENT_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, RentGetDto.class)) + .collect(Collectors.toList()); + + 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(BusinessMessages.CAR_NOT_IN_RENT); + } + } + return new ErrorResult(BusinessMessages.CAR_ALREADY_IN_RENT); + } + + @Override + public DataResult> getOrderedAdditionalProductsByRentId(String rentId) { + + List result = this.rentDao.getOrderedAdditionalProductsByRentId(rentId); + + return new SuccessDataResult>(result, + BusinessMessages.ORDERED_ADDITIONAL_PRODUCT_FOR_RENT_LISTED_SUCCESSFULLY); + } + + @Override + public DataResult calculateRentTotalPrice(String 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, BusinessMessages.RENT_TOTAL_PRICE_CALCULATED_SUCCESSFULLY); + } + + @Override + public Result checkIfReturnCityIsDifferentForRentalCityIsSuccess(String rentId) { + + Rent rent = this.rentDao.getById(rentId); + + if (!rent.getRentalCity().equals(rent.getReturnCity())) { + return new SuccessResult(BusinessMessages.CITIES_ARE_DIFFERENT); + } + + return new ErrorResult(BusinessMessages.CITIES_ARE_SAME); + } + + @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); + } + } + } + + private void checkIfCarAlreadyInMaintenance(int carId) { + + if (!checkIfCarExistInCarMaintenanceTable(carId)) { + if (!this.carMaintenanceService.checkIfCarIsAlreadyInMaintenance(carId).isSuccess()) { + throw new CarIsAlreadyInMaintenanceException(BusinessMessages.CAR_ALREADY_IN_MAINTENANCE); + } + } + } + + private boolean checkIfCarExistInCarMaintenanceTable(int id) { + return this.carMaintenanceService.getByCarId(id).getData().isEmpty(); + } + + private void checkIfRentReturnDateIsAfterNow(Rent rent) { + + if (rent.getRentReturnDate() != null) { + if (!rent.getRentReturnDate().isAfter(LocalDate.now())) { + rent.setRentStatus(false); + } + } + } + + 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/concretes/UserManager.java b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java new file mode 100644 index 0000000..f96fc8b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/concretes/UserManager.java @@ -0,0 +1,55 @@ +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.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; +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.businessExceptions.EntityAlreadyExistsException; +import com.turkcell.rentacar.exceptions.businessExceptions.EntityNotFoundException; + +@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 update(UpdateUserRequest updateUserRequest) { + + checkIfUserExists(updateUserRequest.getUserId()); + + existsByEmail(updateUserRequest.getEmail()); + + User user = this.modelMapperService.forRequest().map(updateUserRequest, User.class); + + this.userDao.save(user); + + return new SuccessResult(BusinessMessages.USER_UPDATED_SUCCESSFULLY); + } + + private void checkIfUserExists(int userId) { + if (!this.userDao.existsById(userId)) { + throw new EntityNotFoundException(BusinessMessages.USER_NOT_FOUND); + } + } + + private void existsByEmail(String email) { + if (this.userDao.existsByEmail(email)) { + 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..71ae286 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/constants/messages/BusinessMessages.java @@ -0,0 +1,135 @@ +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 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"; + 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_DELAYED_DAY_PRICE_CALCULATED_FAILED = "RENT_DELAYED_DAY_PRICE_CALCULATED_FAILED"; + 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"; + + // 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/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/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/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/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/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/getDtos/RentGetDto.java b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java new file mode 100644 index 0000000..793a658 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/getDtos/RentGetDto.java @@ -0,0 +1,38 @@ +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 int rentId; + + private LocalDate rentDate; + + private LocalDate rentReturnDate; + + private boolean rentStatus; + + private int carId; + + private String brandName; + + private double dailyPrice; + + private String modelYear; + + private String colorName; + + private double additionalServicePrice; + + private String rentalCity; + + private String returnCity; + +} 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/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/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/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/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/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/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 new file mode 100644 index 0000000..55eaa94 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/dtos/listDtos/OrderedAdditionalProductListDto.java @@ -0,0 +1,23 @@ +package com.turkcell.rentacar.business.dtos.listDtos; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OrderedAdditionalProductListDto { + + + private int orderedAdditionalProductAmount; + + private int additionalProductId; + private String additionalProductName; + private double additionalProductUnitPrice; + + + + + +} 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/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/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 new file mode 100644 index 0000000..2f3b5de --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateBrandRequest.java @@ -0,0 +1,18 @@ +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; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateBrandRequest { + + @NotNull + @Size(min = 2) + private String brandName; +} 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/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/CreateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java new file mode 100644 index 0000000..4e2f9aa --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateCarRequest.java @@ -0,0 +1,40 @@ +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 CreateCarRequest { + + @NotNull + @Min(0) + private double dailyPrice; + + @NotNull + @Size(min = 2) + private String modelYear; + + @NotNull + @Size(min = 2, max = 50) + private String description; + + @NotNull + @Size(min = 2, max = 50) + private String kilometerInfo; + + @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 new file mode 100644 index 0000000..db1ad08 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateColorRequest.java @@ -0,0 +1,18 @@ +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; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateColorRequest { + + @NotNull + @Size(min = 2) + private String colorName; +} 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/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/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..80cf980 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateIndividualCustomerRequest.java @@ -0,0 +1,38 @@ +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..009e020 --- /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 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 new file mode 100644 index 0000000..2623de4 --- /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 String rentId; + + @NotNull + @Min(1) + private int additionalProductId; + +} 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..bd12cc2 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreatePaymentRequest.java @@ -0,0 +1,44 @@ +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 userId; + + @NotNull + @Min(1) + private String 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 new file mode 100644 index 0000000..04c4658 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/createRequests/CreateRentRequest.java @@ -0,0 +1,42 @@ +package com.turkcell.rentacar.business.requests.createRequests; + +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 CreateRentRequest { + + @NotNull + private LocalDate rentDate; + + @NotNull + private LocalDate rentReturnDate; + + @NotNull + private String startedKilometerInfo; + + @NotNull + @Min(1) + private int carId; + + @NotNull + @Min(1) + private int rentalCityId; + + @NotNull + @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/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 new file mode 100644 index 0000000..d2e5eea --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteBrandRequest.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 DeleteBrandRequest { + + @NotNull + @Min(1) + private int brandId; + +} 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/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/DeleteCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.java new file mode 100644 index 0000000..971c441 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteCarRequest.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 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 new file mode 100644 index 0000000..1e6d9ef --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteColorRequest.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 DeleteColorRequest { + + @NotNull + @Min(1) + private int colorId; + +} 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/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/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/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/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/deleteRequests/DeleteRentRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.java new file mode 100644 index 0000000..f9b220c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/deleteRequests/DeleteRentRequest.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 DeleteRentRequest { + + @NotNull + @Min(1) + private String rentId; + +} 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/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 new file mode 100644 index 0000000..735c2ef --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandRequest.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 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 new file mode 100644 index 0000000..d1af360 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateBrandToCarRequest.java @@ -0,0 +1,23 @@ +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 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/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/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/UpdateCarRequest.java b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java new file mode 100644 index 0000000..a0ffc66 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateCarRequest.java @@ -0,0 +1,31 @@ +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 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 new file mode 100644 index 0000000..6c1823b --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorRequest.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 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 new file mode 100644 index 0000000..24e8238 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateColorToCarRequest.java @@ -0,0 +1,23 @@ +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 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/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/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/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/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 new file mode 100644 index 0000000..aab4976 --- /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 String rentId; + + @NotNull + @Size(min = 2) + private String endedKilometerInfo; + +} 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..61ab9dc --- /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 String rentId; + + @NotNull + @Min(1) + private int userId; + +} 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..d53f2de --- /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 String rentId; + + @NotNull + @Min(1) + private int additionalProductId; + +} 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..8add8c4 --- /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 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 new file mode 100644 index 0000000..b86fa45 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/business/requests/updateRequests/UpdateRentRequest.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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateRentRequest { + + @NotNull + @Min(1) + private String rentId; + + @NotNull + private LocalDate rentDate; + + @NotNull + private LocalDate rentReturnDate; + + @NotNull + private String startedKilometerInfo; + + @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/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/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..b5b6e32 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/HalkbankPaymentManagerAdapter.java @@ -0,0 +1,28 @@ +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.outServices.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) { + 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..1bf0cc9 --- /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.outServices.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..0681091 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/core/services/concretes/ZiraatBankPaymentManagerAdapter.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.outServices.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) { + return this.ziraatBankPaymentService.payment(payment.getCreditCardNo(), payment.getCardHolder(), + payment.getExpirationDate(), payment.getCvv()); + } + +} 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/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/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/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 new file mode 100644 index 0000000..511cb3a --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarDao.java @@ -0,0 +1,31 @@ +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); + + @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/CarMaintenanceDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java new file mode 100644 index 0000000..41edae3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CarMaintenanceDao.java @@ -0,0 +1,19 @@ +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 { + + 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/ColorDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/ColorDao.java new file mode 100644 index 0000000..e7dbed2 --- /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.listDtos.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/dataAccess/abstracts/CorporateCustomerDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java new file mode 100644 index 0000000..ede3e36 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/CorporateCustomerDao.java @@ -0,0 +1,13 @@ +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); + + boolean existsByEmail(String email); + +} 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/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..397cc57 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/IndividualCustomerDao.java @@ -0,0 +1,13 @@ +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); + + boolean existsByEmail(String email); + +} 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..e367b51 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/InvoiceDao.java @@ -0,0 +1,25 @@ +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(String rentId); + + boolean existsByRent_RentId(String rentId); + + boolean existsByUser_UserId(int userId); + + List getByUser_UserId(int userId); + + @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 new file mode 100644 index 0000000..c4e076d --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/OrderedAdditionalProductDao.java @@ -0,0 +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 { + + List getByRent_RentId(String 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 new file mode 100644 index 0000000..872c3b1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/PaymentDao.java @@ -0,0 +1,13 @@ +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/RentDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java new file mode 100644 index 0000000..0d7f841 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/RentDao.java @@ -0,0 +1,31 @@ +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.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(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(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/dataAccess/abstracts/UserDao.java b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java new file mode 100644 index 0000000..30ac2e5 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/dataAccess/abstracts/UserDao.java @@ -0,0 +1,13 @@ +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/abstracts/User.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java new file mode 100644 index 0000000..a653828 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/abstracts/User.java @@ -0,0 +1,56 @@ +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.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; +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; + + @OneToMany(mappedBy = "user") + private List creditCards; + + @OneToMany(mappedBy = "user") + private List payment; + + +} 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/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..2ec5164 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Car.java @@ -0,0 +1,61 @@ +package com.turkcell.rentacar.entities.concretes; + +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 = "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; + + @Column(name = "kilometer_info") + private String kilometerInfo; + + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "brand_id") + private Brand brand; + + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "color_id") + private Color color; + + @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/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/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/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/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/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/Customer.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java new file mode 100644 index 0000000..5c71db3 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Customer.java @@ -0,0 +1,29 @@ +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; + +import com.turkcell.rentacar.entities.abstracts.User; + +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/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..2f0a77c --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Invoice.java @@ -0,0 +1,50 @@ +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; + + @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 new file mode 100644 index 0000000..1bde9fb --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/OrderedAdditionalProduct.java @@ -0,0 +1,41 @@ +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/Payment.java b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java new file mode 100644 index 0000000..bc50d31 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Payment.java @@ -0,0 +1,58 @@ +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 com.turkcell.rentacar.entities.abstracts.User; + +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 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 new file mode 100644 index 0000000..9a09ca1 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/entities/concretes/Rent.java @@ -0,0 +1,74 @@ +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.Id; +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; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "rents") +public class Rent { + + @Id + @Column(name = "rent_id") + private String rentId; + + @Column(name = "rent_date") + private LocalDate rentDate; + + @Column(name = "rent_return_date") + private LocalDate rentReturnDate; + + @Column(name = "delivery_date") + private LocalDate deliveryDate; + + @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; + + @ManyToOne + @JoinColumn(name = "rental_city_id") + private City rentalCity; + + @ManyToOne + @JoinColumn(name = "return_city_id") + private City returnCity; + + @OneToMany(mappedBy = "rent") + private List orderedAdditionalProducts; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @OneToMany(mappedBy = "rent") + private List invoices; + + @OneToMany(mappedBy = "rent") + private List payments; + +} 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/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/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/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/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/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..d5f6152 --- /dev/null +++ b/rentacar/src/main/java/com/turkcell/rentacar/nationalIdentityService/NationalIdentityManager.java @@ -0,0 +1,38 @@ +package com.turkcell.rentacar.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/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); + +} 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/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); + +} diff --git a/rentacar/src/main/resources/application.properties b/rentacar/src/main/resources/application.properties new file mode 100644 index 0000000..db01470 --- /dev/null +++ b/rentacar/src/main/resources/application.properties @@ -0,0 +1,9 @@ +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/Rent_A_Car +spring.datasource.username=postgres +spring.datasource.password=123123 +spring.jpa.properties.javax.persistence.validation.mode = none +spring.mvc.pathmatch.matching-strategy = ant-path-matcher +server.port = 8081 \ 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() { + } + +}