Skip to content

elisaveta9/KirovTransportTax

Repository files navigation

KirovTransportTax

НСобходимо Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ WebApi для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡:

1. Π‘ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру Π‘Π” для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠ°Ρ€ΠΊΠ°Ρ…, модСлях, водитСлях ΠΈ самих автомобилях.

ER_scheme_kirov_transport_tax ER-схСма Π‘Π”

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

image Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ‚Π°Π±ΠΈΡ†Ρ‹ transport_type

image Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ transport_tax_rate

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Код ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

CREATE TABLE IF NOT EXISTS public.transport_type
(
 type text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT type_transport_pkey PRIMARY KEY (type)
)

CREATE TABLE IF NOT EXISTS public.transport_tax_rate
(
 id integer NOT NULL DEFAULT nextval('transport_tax_rate_id_seq'::regclass),
 transport_type text COLLATE pg_catalog."default" NOT NULL,
 min_horsepower integer NOT NULL,
 max_horsepower integer,
 tax_rate integer NOT NULL,
 CONSTRAINT transport_tax_rate_pkey PRIMARY KEY (id),
 CONSTRAINT transport FOREIGN KEY (transport_type)
     REFERENCES public.transport_type (type) MATCH FULL
     ON UPDATE CASCADE
     ON DELETE CASCADE,
 CONSTRAINT transport_tax_rate_check CHECK (max_horsepower = NULL::integer OR min_horsepower < max_horsepower)
)

CREATE TABLE IF NOT EXISTS public.driver
(
 passport text COLLATE pg_catalog."default" NOT NULL,
 last_name text COLLATE pg_catalog."default" NOT NULL,
 name text COLLATE pg_catalog."default" NOT NULL,
 patronymic text COLLATE pg_catalog."default",
 birthday date NOT NULL,
 CONSTRAINT driver_pkey PRIMARY KEY (passport),
 CONSTRAINT driver_birthday_check CHECK (EXTRACT(year FROM age(birthday::timestamp with time zone)) >= 18::numeric),
 CONSTRAINT driver_passport_check CHECK (passport ~* '\d{4} \d{6}'::text)
)

CREATE TABLE IF NOT EXISTS public.transport_brand
(
 brand text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT transport_brand_pkey PRIMARY KEY (brand)
)

CREATE TABLE IF NOT EXISTS public.transport_model
(
 model text COLLATE pg_catalog."default" NOT NULL,
 brand text COLLATE pg_catalog."default" NOT NULL,
 horsepower integer NOT NULL,
 release_year integer NOT NULL,
 transport_type text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT transport_model_pkey PRIMARY KEY (model),
 CONSTRAINT transport_model_brand_fkey FOREIGN KEY (brand)
     REFERENCES public.transport_brand (brand) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_model_transport_type_fkey FOREIGN KEY (transport_type)
     REFERENCES public.transport_type (type) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_model_release_year_check CHECK (release_year >= 1900 AND release_year::double precision <= date_part('year'::text, now())),
 CONSTRAINT transport_model_horsepower_check CHECK (horsepower > 0) NOT VALID
)

CREATE TABLE IF NOT EXISTS public.transport
(
 number_transport text COLLATE pg_catalog."default" NOT NULL,
 model text COLLATE pg_catalog."default" NOT NULL,
 registration_date date NOT NULL,
 driver text COLLATE pg_catalog."default" NOT NULL,
 CONSTRAINT transport_driver_pkey PRIMARY KEY (number_transport),
 CONSTRAINT transport_driver_fkey FOREIGN KEY (driver)
     REFERENCES public.driver (passport) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_model_transport_fkey FOREIGN KEY (model)
     REFERENCES public.transport_model (model) MATCH SIMPLE
     ON UPDATE CASCADE
     ON DELETE CASCADE
     NOT VALID,
 CONSTRAINT transport_number_transport_check CHECK (number_transport ~* '^[ΠΠ’Π•ΠšΠœΠΠžΠ Π‘Π’Π£Π₯][0-9]{3}[ΠΠ’Π•ΠšΠœΠΠžΠ Π‘Π’Π£Π₯]{2}$'::text OR number_transport ~* '^[ΠΠ’Π•ΠšΠœΠΠžΠ Π‘Π’Π£Π₯]{2}[0-9]{3,4}$'::text OR number_transport ~* '^[0-9]{4}[ΠΠ’Π•ΠšΠœΠΠžΠ Π‘Π’Π£Π₯]{2}$'::text)
)

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ WebApi для получСния/добавлСния/измСнСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠ°Ρ€ΠΊΠ°Ρ…, модСлях, водитСлях, автомобилях.

Swagger-UI-Google-Chrome-2023-12-25-02-33-41 (2) (1) ВсС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выполняСт WebApi

Π’ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

https___localhost_7055_Drivers-My-Workspace-2023-12-25-03-37-49 (1)

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎ всСх водитСлях

image

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²ΠΎΠ΄Π΅Ρ‚Π΅Π»Π΅ ΠΏΠΎ паспорту. (%20 - ΠΏΡ€ΠΎΠ±Π΅Π»).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ записи ΠΎ Π½ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄Π΅Ρ‚Π΅Π»Π΅

image

Ошибка ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ записи с Π½Π΅ΠΏΡ€Π°Π²Π»ΡŒΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚ΠΎΠΉ.

image

Ошибка ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ водитСля с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ паспортом.

image

Ошибка ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ водитСля с паспортом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² Π±Π΄.

image

ΠžΡ‚Π²Π΅Ρ‚ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ водитСля.

ИзмСнСниС записи водитСля

image

image

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ записи.

image

НС Π½Π°ΠΉΠ΄Π΅Π½Π° запись с Ρ‚Π°ΠΊΠΈΠΌ паспортом для измСнСния.

Если Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π° Π΄Π°Ρ‚Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ паспорт (Ссли ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ старый паспорт), Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ создании записи с этими Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записи водитСля

image

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ водитСля с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

image

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ водитСля ΠΏΠΎ паспорту.

image

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ записи.

Π‘Ρ€Π΅Π½Π΄ ΠΌΠ°ΡˆΠΈΠ½Ρ‹

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ WebApi для получСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅: Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, возраст Π°Π²Ρ‚ΠΎ, Π».с., сумма Π½Π°Π»ΠΎΠ³Π°, сортировка ΠΏΠΎ суммС Π½Π°Π»ΠΎΠ³Π° (ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ).

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages