Skip to content

Commit

Permalink
feat: 🎨 save marking region
Browse files Browse the repository at this point in the history
  • Loading branch information
Vini7Dev committed Jun 30, 2023
1 parent 4b46c0d commit be1916c
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
type MarkingRegion = 'NORTH' | 'SOUTH' | 'EAST' | 'WEST' | 'CENTER'

export interface ICreateConsumptionMarkingDTO {
hydrometer_id: number
consumption: number
monetary_value: number
marking_region?: MarkingRegion
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
type MarkingRegion = 'NORTH' | 'SOUTH' | 'EAST' | 'WEST' | 'CENTER'

export class ConsumptionMarking {
public id: string

Expand All @@ -7,5 +9,7 @@ export class ConsumptionMarking {

public monetary_value: number

public marking_region?: MarkingRegion

public created_at: Date
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,22 +51,24 @@ export class ConsumptionMarkingsRepository extends AppRepository implements ICon
orderBy: { created_at: 'desc' },
})

return consumptionMarkingList
return consumptionMarkingList as ConsumptionMarking[]
}

public async create({
hydrometer_id,
consumption,
monetary_value,
marking_region,
}: ICreateConsumptionMarkingDTO): Promise<ConsumptionMarking> {
const createdConsumptionMarking = await this.client.consumptionMarkings.create({
data: {
hydrometer_id,
consumption,
monetary_value,
marking_region,
}
})

return createdConsumptionMarking
return createdConsumptionMarking as ConsumptionMarking
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import { ICitiesForConversionRepository } from '@modules/citiesForConversion/rep
import { calculateConsumptionMonetaryByCity } from '@utils/calculateConsumptionMonetaryByCity'
import { format } from 'date-fns'

type MarkingRegion = 'NORTH' | 'SOUTH' | 'EAST' | 'WEST' | 'CENTER'

interface IUseCaseProps {
hydrometer_id: number
hydrometer_password: string
Expand Down Expand Up @@ -70,11 +72,31 @@ export class CreateConsumptionMarkingUseCase {
formattedCityName
)

const postalCodeRegion = hydrometerToAssociate.address?.postal_code.slice(
3,
5,
)

let hydrometerRegion: MarkingRegion | undefined

if (postalCodeRegion === '07' || postalCodeRegion === '09') {
hydrometerRegion = 'NORTH'
} else if (postalCodeRegion === '03' || postalCodeRegion === '04' || postalCodeRegion === '12') {
hydrometerRegion = 'SOUTH'
} else if (postalCodeRegion === '02' || postalCodeRegion === '10') {
hydrometerRegion = 'EAST'
} else if (postalCodeRegion === '05' || postalCodeRegion === '06' || postalCodeRegion === '08') {
hydrometerRegion = 'WEST'
} else if (postalCodeRegion === '00' || postalCodeRegion === '01') {
hydrometerRegion = 'CENTER'
}

if (!hydrometerCity) {
const createdConsumptionMarking = await this.consumptionMarkingsRepository.create({
hydrometer_id: hydrometerToAssociate.id,
consumption,
marking_region: hydrometerRegion,
monetary_value: EMPTY_MONETARY_CONVERSION,
consumption,
})

return createdConsumptionMarking
Expand All @@ -97,6 +119,7 @@ export class CreateConsumptionMarkingUseCase {

const createdConsumptionMarking = await this.consumptionMarkingsRepository.create({
hydrometer_id: hydrometerToAssociate.id,
marking_region: hydrometerRegion,
consumption,
monetary_value: calculateConsumptionMonetaryByCity({
city: hydrometerCity,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-- CreateEnum
CREATE TYPE "MarkingRegion" AS ENUM ('NORTH', 'SOUTH', 'EAST', 'WEST');

-- AlterTable
ALTER TABLE "consumptionMarkings" ADD COLUMN "marking_region" "MarkingRegion";
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterEnum
ALTER TYPE "MarkingRegion" ADD VALUE 'CENTER';
15 changes: 12 additions & 3 deletions server/src/shared/infra/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ enum ConsumptionCategory {
RESIDENTIAL_VULNERABLE_NORMAL
}

enum MarkingRegion {
NORTH
SOUTH
EAST
WEST
CENTER
}

model Users {
id String @id @default(uuid())
name String
Expand Down Expand Up @@ -111,13 +119,14 @@ model Adresses {
}

model ConsumptionMarkings {
id String @id @default(uuid())
id String @id @default(uuid())
hydrometer_id Int
consumption Int
monetary_value Int
created_at DateTime @default(now())
marking_region MarkingRegion?
created_at DateTime @default(now())
hydrometer Hydrometers @relation(fields: [hydrometer_id], references: [id])
hydrometer Hydrometers @relation(fields: [hydrometer_id], references: [id])
@@map("consumptionMarkings")
}
Expand Down

0 comments on commit be1916c

Please sign in to comment.