· 9 years ago · Feb 01, 2017, 01:44 PM
1drop procedure klient_rejestracja
2drop procedure klient_usuwanie
3drop procedure klient_przywracanie
4drop procedure klient_zmienImie
5drop procedure klient_zmienNazwisko
6drop procedure klient_zmienAdres
7drop procedure klient_zmienTelefon
8drop procedure klient_zmienMail
9drop procedure klient_awansuj
10drop procedure klient_degraduj
11drop procedure administrator_dodawanie
12drop procedure moderator_dodawanie
13drop function klient_lista
14drop procedure towar_dodawanieNowego
15drop procedure towar_wycofanie
16drop procedure towar_przywracanie
17drop procedure towar_dostawa
18drop procedure towar_zmienIlosc
19drop procedure towar_zmienCene
20drop procedure towar_zmienNazwe
21drop function towar_producent
22drop function towar_mniejNiz
23drop function towar_wiecejNiz
24drop function towar_tanszyNiz
25drop function towar_drozszyNiz
26drop function towar_tanszyNizNetto
27drop function towar_drozszyNizNetto
28drop procedure towar_filtrowanie
29drop procedure zamowienie_utworzNowe
30drop procedure zamowienie_dodajTowar
31GO
32drop table Zwrot
33drop table Wymiana
34drop table Reklamacja
35drop table Zamowienie_Towar
36drop table Towar
37drop table Zamowienie
38drop table Status
39drop table Klient
40drop table Uzytkownik
41drop table Rola
42GO
43
44create table Rola (
45 id smallint identity (1,1) primary key,
46 nazwa varchar(50) not null
47)
48create table Uzytkownik(
49 id int identity (1,1) primary key,
50 login varchar (50) unique not null,
51 haslo varchar (50) unique not null,
52 czyAktywny bit default 'true',
53 rola smallint references Rola(id)
54)
55create table Klient(
56 id int identity (1,1) primary key,
57 imie varchar (50) not null,
58 nazwisko varchar (50) not null,
59 adres text not null,
60 telefon varchar (11) not null,
61 email varchar (100),
62 idUzytkownika int references Uzytkownik(id)
63)
64create table Status (
65 id smallint identity (1,1) primary key,
66 nazwa varchar(50) not null
67)
68create table Zamowienie(
69 id int identity (1,1) primary key,
70 idKlienta int references Klient(id),
71 dataZamowiena date not null,
72 dataRealizacji date,
73 wartosc int not null default 0,
74 status smallint references Status(id)
75)
76create table Towar (
77 id int identity (1,1) primary key,
78 producent varchar (100) not null,
79 nazwa varchar (100) not null unique,
80 ilosc int not null,
81 cenaNetto money not null,
82 podatek smallint not null default '23',
83 cenaBrutto as round( (cenaNetto + cenaNetto * podatek * 0.01), 2),
84 czyDostepny bit default 'true'
85)
86create table Zamowienie_Towar(
87 idZamowienia int references Zamowienie(id),
88 idTowaru int references Towar(id),
89 ilosc int not null,
90 cena money not null default '0',
91 --imei varchar (15) not null,
92 primary key (idZamowienia, idTowaru)
93)
94create table Reklamacja(
95 id_rekamacja int identity (1,1) primary key,
96 idZamowienia int references Zamowienie(id),
97 idTowaru int references Towar(id),
98 opis text not null,
99 status smallint references Status(id)
100)
101create table Wymiana(
102 id_wymiana int identity (1,1) primary key,
103 idZamowienia int references Zamowienie(id),
104 idTowaru int references Towar(id),
105 opis text not null,
106 status smallint references Status(id)
107)
108create table Zwrot(
109 id_zwrot int identity (1,1) primary key,
110 idZamowienia int references Zamowienie(id),
111 idTowaru int references Towar(id),
112 opis text not null,
113 status smallint references Status(id)
114)
115GO
116
117--CONSTRAINTS
118
119alter table Towar
120add constraint towar_ilosc_check check (ilosc >= 0)
121GO
122alter table Towar
123add constraint towar_cenaNetto_check check (cenaNetto >= 0)
124GO
125alter table Towar
126add constraint towar_podatek_check check (podatek >= 0)
127GO
128alter table Zamowienie_Towar
129add constraint zamowienie_ilosc_check check (ilosc >= 0)
130GO
131alter table Zamowienie_Towar
132add constraint zamowienie_cena_check check (cena >= 0)
133GO
134
135-- INSERT
136
137insert into Rola (nazwa)
138values
139 ('administrator'),
140 ('klient'),
141 ('stalyKlient'),
142 ('moderator')
143GO
144insert into Uzytkownik(login, haslo, rola)
145values
146 ('JanNowak', 'poziomki', '4'),
147 ('EwaKowalska', 'kobylamamalybok', '1'),
148 ('AdamBajsztok', 'qwerty', '2'),
149 ('DanutaKos', 'ptak', '2'),
150 ('KatarzynaMaczek', 'general', '4')
151GO
152insert into Klient (imie, nazwisko, adres, telefon, email, idUzytkownika)
153values
154 ('Adam', 'Bajsztok', 'Poznań, os. Różany Potok 17', '841548143', 'AdamBajsztok@gmail.com', '3'),
155 ('Danuta', 'Kos', 'Wrocław, ul. Grunwaldzka 14/5', '741852963', 'DanKos@wp.pl', '4')
156GO
157insert into Status (nazwa)
158values
159 ('w trakcie'),
160 ('zakończono'),
161 ('przerwano')
162GO
163insert into Towar (producent, nazwa, ilosc, cenaNetto)
164values
165 ('Samsung', 'Galaxy A3 gray', 50, 600),
166 ('Samsung', 'Galaxy S7 white', 50, 2100),
167 ('Sony', 'Xperia Z5 black', 37, 1200),
168 ('LG', 'G5', 24, 1100 )
169GO
170
171-- TRIGGER
172
173CREATE TRIGGER trigger_usuwanieUzytkownika ON uzytkownik
174INSTEAD OF DELETE
175AS
176BEGIN
177 DECLARE @id int
178 SELECT @id = deleted.id FROM deleted
179 UPDATE uzytkownik SET czyAktywny = 'false' WHERE id=@id
180END
181GO
182
183CREATE TRIGGER trigger_usuwanieKlienta ON klient
184INSTEAD OF DELETE
185AS
186BEGIN
187 DECLARE @id int
188 SELECT @id = deleted.idUzytkownika FROM deleted
189 UPDATE uzytkownik SET czyAktywny = 'false' WHERE id=@id
190END
191GO
192
193-- PRCEDUER
194
195CREATE PROCEDURE klient_rejestracja
196 @login varchar(45),
197 @haslo varchar(45),
198 @imie varchar(50),
199 @nazwisko varchar(50),
200 @adres varchar(300),
201 @telefon varchar(11),
202 @email varchar(100)
203AS
204 DECLARE @id int
205
206 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
207 RAISERROR('Taki login jest już zajęty!', 11, 1)
208 ELSE IF EXISTS (SELECT * FROM klient WHERE email = @email)
209 RAISERROR('Taki mail jest już w bazie!', 11, 2)
210 ELSE
211 BEGIN
212 INSERT INTO uzytkownik
213 VALUES(@login, @haslo, 'true', 2)
214
215 SELECT @id = Uzytkownik.id FROM Uzytkownik
216
217 INSERT INTO klient
218 VALUES(@imie, @nazwisko, @adres, @telefon, @email, @id)
219 END
220GO
221
222CREATE PROCEDURE klient_usuwanie
223 @id int = NULL,
224 @login varchar(50) = NULL
225AS
226 IF @id IS NOT NULL
227 IF @login IS NOT NULL
228 RAISERROR('Podaj jeden parametr!', 11, 3)
229
230 IF @id IS NOT NULL BEGIN
231 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE id = @id)
232 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
233 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE id = @id AND czyAktywny = 'false')
234 RAISERROR('Ten uzytkownik jest już nieaktywny!', 11, 1)
235 ELSE BEGIN
236 UPDATE uzytkownik
237 SET czyAktywny = 'false'
238 WHERE id = @id
239 END
240 END
241
242 IF @login IS NOT NULL BEGIN
243 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
244 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
245 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login AND czyAktywny = 'false')
246 RAISERROR('Ten uzytkownik jest już nieaktywny!', 11, 1)
247 ELSE BEGIN
248 UPDATE uzytkownik
249 SET czyAktywny = 'false'
250 WHERE login = @login
251 END
252 END
253
254 IF @id IS NULL
255 IF @login IS NULL
256 RAISERROR('Podaj jeden parametr!', 11, 3)
257GO
258
259CREATE PROCEDURE klient_przywracanie
260 @id int = NULL,
261 @login varchar(50) = NULL
262AS
263 IF @id IS NOT NULL
264 IF @login IS NOT NULL
265 RAISERROR('Podaj jeden parametr!', 11, 3)
266
267 IF @id IS NOT NULL BEGIN
268 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE id = @id)
269 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
270 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE id = @id AND czyAktywny = 'true')
271 RAISERROR('Ten uzytkownik jest już aktywny!', 11, 1)
272 ELSE BEGIN
273 UPDATE uzytkownik
274 SET czyAktywny = 'true'
275 WHERE id = @id
276 END
277 END
278
279 IF @login IS NOT NULL BEGIN
280 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
281 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
282 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login AND czyAktywny = 'true')
283 RAISERROR('Ten uzytkownik jest już aktywny!', 11, 1)
284 ELSE BEGIN
285 UPDATE uzytkownik
286 SET czyAktywny = 'true'
287 WHERE login = @login
288 END
289 END
290
291 IF @id IS NULL
292 IF @login IS NULL
293 RAISERROR('Podaj jeden parametr!', 11, 3)
294GO
295
296CREATE PROCEDURE klient_zmienImie
297 @id int = NULL,
298 @login varchar(50) = NULL,
299 @imie varchar(50)
300AS
301 IF @id IS NOT NULL
302 IF @login IS NOT NULL
303 RAISERROR('Podaj jeden parametr!', 11, 3)
304
305 IF @id IS NOT NULL BEGIN
306 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
307 RAISERROR('Taki klient nie istnieje!', 11, 3)
308 ELSE BEGIN
309 UPDATE klient
310 SET imie = @imie
311 WHERE id = @id
312 END
313 END
314
315 IF @login IS NOT NULL BEGIN
316 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
317 RAISERROR('Taki klient nie istnieje!', 11, 3)
318 ELSE BEGIN
319 DECLARE @idU int
320 SELECT @idU = Uzytkownik.id FROM Uzytkownik WHERE login = @login
321
322 UPDATE klient
323 SET imie = @imie
324 WHERE id = @idU
325 END
326 END
327
328 IF @id IS NULL
329 IF @login IS NULL
330 RAISERROR('Podaj jeden parametr!', 11, 3)
331GO
332
333CREATE PROCEDURE klient_zmienNazwisko
334 @id int = NULL,
335 @login varchar(50) = NULL,
336 @nazwisko varchar(50)
337AS
338 IF @id IS NOT NULL
339 IF @login IS NOT NULL
340 RAISERROR('Podaj jeden parametr!', 11, 3)
341
342 IF @id IS NOT NULL BEGIN
343 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
344 RAISERROR('Taki klient nie istnieje!', 11, 3)
345 ELSE BEGIN
346 UPDATE klient
347 SET nazwisko = @nazwisko
348 WHERE id = @id
349 END
350 END
351
352 IF @login IS NOT NULL BEGIN
353 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
354 RAISERROR('Taki klient nie istnieje!', 11, 3)
355 ELSE BEGIN
356 DECLARE @idU int
357 SELECT @idU = Uzytkownik.id FROM Uzytkownik WHERE login = @login
358
359 UPDATE klient
360 SET nazwisko = @nazwisko
361 WHERE id = @idU
362 END
363 END
364
365 IF @id IS NULL
366 IF @login IS NULL
367 RAISERROR('Podaj jeden parametr!', 11, 3)
368GO
369
370CREATE PROCEDURE klient_zmienAdres
371 @id int = NULL,
372 @login varchar(50) = NULL,
373 @adres varchar(300)
374AS
375 IF @id IS NOT NULL
376 IF @login IS NOT NULL
377 RAISERROR('Podaj jeden parametr!', 11, 3)
378
379 IF @id IS NOT NULL BEGIN
380 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
381 RAISERROR('Taki klient nie istnieje!', 11, 3)
382 ELSE BEGIN
383 UPDATE klient
384 SET adres = @adres
385 WHERE id = @id
386 END
387 END
388
389 IF @login IS NOT NULL BEGIN
390 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
391 RAISERROR('Taki klient nie istnieje!', 11, 3)
392 ELSE BEGIN
393 DECLARE @idU int
394 SELECT @idU = Uzytkownik.id FROM Uzytkownik WHERE login = @login
395
396 UPDATE klient
397 SET adres = @adres
398 WHERE id = @idU
399 END
400 END
401
402 IF @id IS NULL
403 IF @login IS NULL
404 RAISERROR('Podaj jeden parametr!', 11, 3)
405GO
406
407CREATE PROCEDURE klient_zmienTelefon
408 @id int = NULL,
409 @login varchar(50) = NULL,
410 @telefon varchar(11)
411AS
412 IF @id IS NOT NULL
413 IF @login IS NOT NULL
414 RAISERROR('Podaj jeden parametr!', 11, 3)
415
416 IF @id IS NOT NULL BEGIN
417 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
418 RAISERROR('Taki klient nie istnieje!', 11, 3)
419 ELSE BEGIN
420 UPDATE klient
421 SET telefon = @telefon
422 WHERE id = @id
423 END
424 END
425
426 IF @login IS NOT NULL BEGIN
427 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
428 RAISERROR('Taki klient nie istnieje!', 11, 3)
429 ELSE BEGIN
430 DECLARE @idU int
431 SELECT @idU = Uzytkownik.id FROM Uzytkownik WHERE login = @login
432
433 UPDATE klient
434 SET telefon = @telefon
435 WHERE id = @idU
436 END
437 END
438
439 IF @id IS NULL
440 IF @login IS NULL
441 RAISERROR('Podaj jeden parametr!', 11, 3)
442GO
443
444CREATE PROCEDURE klient_zmienMail
445 @id int = NULL,
446 @login varchar(50) = NULL,
447 @email varchar(100)
448AS
449 IF @id IS NOT NULL
450 IF @login IS NOT NULL
451 RAISERROR('Podaj jeden parametr!', 11, 3)
452
453 IF @id IS NOT NULL BEGIN
454 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
455 RAISERROR('Taki klient nie istnieje!', 11, 3)
456 ELSE BEGIN
457 UPDATE klient
458 SET email = @email
459 WHERE id = @id
460 END
461 END
462
463 IF @login IS NOT NULL BEGIN
464 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
465 RAISERROR('Taki klient nie istnieje!', 11, 3)
466 ELSE BEGIN
467 DECLARE @idU int
468 SELECT @idU = Uzytkownik.id FROM Uzytkownik WHERE login = @login
469
470 UPDATE klient
471 SET email = @email
472 WHERE id = @idU
473 END
474 END
475
476 IF @id IS NULL
477 IF @login IS NULL
478 RAISERROR('Podaj jeden parametr!', 11, 3)
479GO
480
481CREATE PROCEDURE klient_awansuj
482 @id int = NULL,
483 @login varchar(50) = NULL
484AS
485 IF @id IS NOT NULL
486 IF @login IS NOT NULL
487 RAISERROR('Podaj jeden parametr!', 11, 3)
488
489 IF @id IS NOT NULL BEGIN
490 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
491 RAISERROR('Taki klient nie istnieje!', 11, 3)
492 ELSE BEGIN
493 DECLARE @idU int
494 SELECT @idU = Klient.idUzytkownika FROM Klient WHERE id = @id
495
496 UPDATE uzytkownik
497 SET rola = 3
498 WHERE id = @idU
499 END
500 END
501
502 IF @login IS NOT NULL BEGIN
503 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
504 RAISERROR('Taki klient nie istnieje!', 11, 3)
505 ELSE BEGIN
506 UPDATE uzytkownik
507 SET rola = 3
508 WHERE login = @login
509 END
510 END
511
512 IF @id IS NULL
513 IF @login IS NULL
514 RAISERROR('Podaj jeden parametr!', 11, 3)
515GO
516
517CREATE PROCEDURE klient_degraduj
518 @id int = NULL,
519 @login varchar(50) = NULL
520AS
521 IF @id IS NOT NULL
522 IF @login IS NOT NULL
523 RAISERROR('Podaj jeden parametr!', 11, 3)
524
525 IF @id IS NOT NULL BEGIN
526 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
527 RAISERROR('Taki klient nie istnieje!', 11, 3)
528 ELSE BEGIN
529 DECLARE @idU int
530 SELECT @idU = Klient.idUzytkownika FROM Klient WHERE id = @id
531
532 UPDATE uzytkownik
533 SET rola = 2
534 WHERE id = @idU
535 END
536 END
537
538 IF @login IS NOT NULL BEGIN
539 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
540 RAISERROR('Taki klient nie istnieje!', 11, 3)
541 ELSE BEGIN
542 UPDATE uzytkownik
543 SET rola = 2
544 WHERE login = @login
545 END
546 END
547
548 IF @id IS NULL
549 IF @login IS NULL
550 RAISERROR('Podaj jeden parametr!', 11, 3)
551GO
552
553----
554
555CREATE PROCEDURE administrator_dodawanie
556 @login varchar(45),
557 @haslo varchar(45)
558AS
559 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
560 RAISERROR('Taki login jest już zajęty!', 11, 1)
561 ELSE
562 BEGIN
563 INSERT INTO uzytkownik
564 VALUES(@login, @haslo, 'true', 1)
565 END
566GO
567
568----
569
570CREATE PROCEDURE moderator_dodawanie
571 @login varchar(45),
572 @haslo varchar(45)
573AS
574 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
575 RAISERROR('Taki login jest już zajęty!', 11, 1)
576 ELSE
577 BEGIN
578 INSERT INTO uzytkownik
579 VALUES(@login, @haslo, 'true', 4)
580 END
581GO
582
583----
584
585CREATE FUNCTION klient_lista(@czyAktywny bit)
586RETURNS TABLE
587AS
588RETURN (SELECT u.login, k.imie, k.nazwisko, k.adres, k.telefon, k.email FROM Klient k
589 JOIN Uzytkownik u on u.id = k.idUzytkownika
590 WHERE u.czyAktywny = @czyAktywny)
591GO
592
593----
594
595CREATE PROCEDURE towar_dodawanieNowego
596 @producent varchar(100),
597 @nazwa varchar(100),
598 @ilosc int,
599 @cenaNetto money
600AS
601 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
602 RAISERROR('Taki towar jest już w bazie!', 11, 1)
603 ELSE IF @ilosc <0
604 RAISERROR('Ilosc nie moze byc mniejsza od 0!', 11, 1)
605 ELSE IF @cenaNetto <0
606 RAISERROR('Cena nie moze byc ujemna!', 11, 1)
607 ELSE
608 BEGIN
609 INSERT INTO towar(producent, nazwa, ilosc, cenaNetto)
610 VALUES(@producent, @nazwa, @ilosc, @cenaNetto)
611 END
612GO
613
614CREATE PROCEDURE towar_wycofanie
615 @id int = NULL,
616 @nazwa varchar(100) = NULL
617AS
618 IF @id IS NOT NULL
619 IF @nazwa IS NOT NULL
620 RAISERROR('Podaj jeden parametr!', 11, 3)
621
622 IF @id IS NULL
623 IF @nazwa IS NULL
624 RAISERROR('Podaj jeden parametr!', 11, 3)
625
626 IF @id IS NOT NULL
627 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
628 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
629 IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
630 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
631 ELSE BEGIN
632 UPDATE towar
633 SET czyDostepny = 'false'
634 WHERE id = @id
635 END
636
637 IF @nazwa IS NOT NULL
638 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
639 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
640 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
641 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
642 ELSE BEGIN
643 UPDATE towar
644 SET czyDostepny = 'false'
645 WHERE nazwa = @nazwa
646 END
647GO
648
649CREATE PROCEDURE towar_przywracanie
650 @id int = NULL,
651 @nazwa varchar(100) = NULL
652AS
653 IF @id IS NOT NULL
654 IF @nazwa IS NOT NULL
655 RAISERROR('Podaj jeden parametr!', 11, 3)
656
657 IF @id IS NULL
658 IF @nazwa IS NULL
659 RAISERROR('Podaj jeden parametr!', 11, 3)
660
661 IF @id IS NOT NULL
662 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
663 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
664 IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'true')
665 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
666 ELSE BEGIN
667 UPDATE towar
668 SET czyDostepny = 'true'
669 WHERE id = @id
670 END
671
672 IF @nazwa IS NOT NULL
673 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
674 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
675 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'true')
676 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
677 ELSE BEGIN
678 UPDATE towar
679 SET czyDostepny = 'true'
680 WHERE nazwa = @nazwa
681 END
682GO
683
684CREATE PROCEDURE towar_dostawa
685 @id int = NULL,
686 @nazwa varchar(100) = NULL,
687 @ilosc int
688AS
689 IF @id IS NOT NULL
690 IF @nazwa IS NOT NULL
691 RAISERROR('Podaj jeden parametr!', 11, 3)
692
693 IF @id IS NULL
694 IF @nazwa IS NULL
695 RAISERROR('Podaj jeden parametr!', 11, 3)
696
697 DECLARE @obecnaIlosc int
698 IF @id IS NOT NULL
699 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
700 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
701 IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
702 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
703 ELSE BEGIN
704 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE id = @id
705
706 UPDATE towar
707 SET ilosc = @obecnaIlosc + @ilosc
708 WHERE id = @id
709 END
710
711 IF @nazwa IS NOT NULL
712 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
713 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
714 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
715 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
716 ELSE BEGIN
717 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE nazwa = @nazwa
718
719 UPDATE towar
720 SET ilosc = @obecnaIlosc + @ilosc
721 WHERE nazwa = @nazwa
722 END
723GO
724
725CREATE PROCEDURE towar_zmienIlosc
726 @id int = NULL,
727 @nazwa varchar(100) = NULL,
728 @ilosc int
729AS
730 IF @id IS NOT NULL
731 IF @nazwa IS NOT NULL
732 RAISERROR('Podaj jeden parametr!', 11, 3)
733
734 IF @id IS NULL
735 IF @nazwa IS NULL
736 RAISERROR('Podaj jeden parametr!', 11, 3)
737
738 IF @id IS NOT NULL
739 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
740 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
741 IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
742 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
743 ELSE BEGIN
744 UPDATE towar
745 SET ilosc = @ilosc
746 WHERE id = @id
747 END
748
749 IF @nazwa IS NOT NULL
750 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
751 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
752 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
753 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
754 ELSE BEGIN
755 UPDATE towar
756 SET ilosc = @ilosc
757 WHERE nazwa = @nazwa
758 END
759GO
760
761CREATE PROCEDURE towar_zmienCene
762 @id int = NULL,
763 @nazwa varchar(100) = NULL,
764 @cenaNetto money
765AS
766 IF @id IS NOT NULL
767 IF @nazwa IS NOT NULL
768 RAISERROR('Podaj jeden parametr!', 11, 3)
769
770 IF @id IS NULL
771 IF @nazwa IS NULL
772 RAISERROR('Podaj jeden parametr!', 11, 3)
773
774 IF @id IS NOT NULL
775 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
776 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
777 IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
778 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
779 ELSE BEGIN
780 UPDATE towar
781 SET cenaNetto = @cenaNetto
782 WHERE id = @id
783 END
784
785 IF @nazwa IS NOT NULL
786 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
787 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
788 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
789 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
790 ELSE BEGIN
791 UPDATE towar
792 SET cenaNetto = @cenaNetto
793 WHERE nazwa = @nazwa
794 END
795GO
796
797CREATE PROCEDURE towar_zmienNazwe
798 @id int = NULL,
799 @nazwa varchar(100) = NULL,
800 @nowaNazwa varchar(100)
801AS
802 IF @id IS NOT NULL
803 IF @nazwa IS NOT NULL
804 RAISERROR('Podaj jeden parametr!', 11, 3)
805
806 IF @id IS NULL
807 IF @nazwa IS NULL
808 RAISERROR('Podaj jeden parametr!', 11, 3)
809
810 IF @id IS NOT NULL
811 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
812 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
813 IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
814 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
815 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
816 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
817 ELSE BEGIN
818 UPDATE towar
819 SET nazwa = @nowaNazwa
820 WHERE id = @id
821 END
822
823 IF @nazwa IS NOT NULL
824 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
825 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
826 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
827 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
828 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
829 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
830 ELSE BEGIN
831 UPDATE towar
832 SET nazwa = @nowaNazwa
833 WHERE nazwa = @nazwa
834 END
835GO
836
837----
838
839CREATE FUNCTION towar_producent(@producent varchar(100))
840RETURNS TABLE
841AS
842RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
843 WHERE t.producent = @producent)
844GO
845
846CREATE FUNCTION towar_mniejNiz(@ilosc int)
847RETURNS TABLE
848AS
849RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
850 WHERE t.ilosc < @ilosc)
851GO
852
853CREATE FUNCTION towar_wiecejNiz(@ilosc int)
854RETURNS TABLE
855AS
856RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
857 WHERE t.ilosc > @ilosc)
858GO
859
860CREATE FUNCTION towar_tanszyNiz(@cenaBrutto money)
861RETURNS TABLE
862AS
863RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
864 WHERE t.cenaBrutto < @cenaBrutto)
865GO
866
867CREATE FUNCTION towar_drozszyNiz(@cenaBrutto money)
868RETURNS TABLE
869AS
870RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
871 WHERE t.cenaBrutto > @cenaBrutto)
872GO
873
874CREATE FUNCTION towar_tanszyNizNetto(@cenaNetto money)
875RETURNS TABLE
876AS
877RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
878 WHERE t.cenaNetto < @cenaNetto)
879GO
880
881CREATE FUNCTION towar_drozszyNizNetto(@cenaNetto money)
882RETURNS TABLE
883AS
884RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto FROM Towar t
885 WHERE t.cenaNetto > @cenaNetto)
886GO
887
888----
889
890CREATE PROCEDURE towar_filtrowanie
891 @producent varchar(100) = NULL,
892 @nazwa varchar(100) = NULL,
893 @ilosc int = NULL,
894 @ilosc_mniejNiz int = NULL,
895 @ilosci_wiecejNiz int = NULL,
896 @cenaNetto money = NULL,
897 @cenaNetto_mniejNiz money = NULL,
898 @cenaNetto_wiecejNiz money = NULL,
899 @cenaBrutto money = NULL,
900 @cenaBrutto_mniejNiz money = NULL,
901 @cenaBrutto_wiecejNiz money = NULL
902AS
903 DECLARE @Query nvarchar(1000)
904 DECLARE @Params nvarchar(1000)
905
906 SET @Query = 'SELECT * FROM towar WHERE 1=1'
907 SET @Params = '@producent varchar(100),
908 @nazwa varchar(100),
909 @ilosc int,
910 @ilosc_mniejNiz int,
911 @ilosci_wiecejNiz int,
912 @cenaNetto money,
913 @cenaNetto_mniejNiz money,
914 @cenaNetto_wiecejNiz money,
915 @cenaBrutto money,
916 @cenaBrutto_mniejNiz money,
917 @cenaBrutto_wiecejNiz money'
918
919 IF @producent IS NOT NULL
920 SET @Query = @Query + 'AND (producent = @producent)'
921 IF @nazwa IS NOT NULL
922 SET @Query = @Query + 'AND (nazwa like ''%' + @nazwa + '%'')'
923 print @Query
924 IF @ilosc IS NOT NULL
925 SET @Query = @Query + 'AND (ilosc = @ilosc)'
926 IF @ilosc_mniejNiz IS NOT NULL
927 SET @Query = @Query + 'AND (ilosc < @ilosc_mniejNiz)'
928 IF @ilosci_wiecejNiz IS NOT NULL
929 SET @Query = @Query + 'AND (ilosc > @ilosci_wiecejNiz)'
930
931 IF @cenaNetto IS NOT NULL
932 SET @Query = @Query + 'AND (cenaNetto = @cenaNetto)'
933 IF @cenaNetto_mniejNiz IS NOT NULL
934 SET @Query = @Query + 'AND (cenaNetto < @cenaNetto_mniejNiz)'
935 IF @cenaNetto_wiecejNiz IS NOT NULL
936 SET @Query = @Query + 'AND (cenaNetto > @cenaNetto_wiecejNiz)'
937
938 IF @cenaBrutto IS NOT NULL
939 SET @Query = @Query + 'AND (cenaBrutto = @cenaBrutto)'
940 IF @cenaBrutto_mniejNiz IS NOT NULL
941 SET @Query = @Query + 'AND (cenaBrutto < @cenaBrutto_mniejNiz)'
942 IF @cenaBrutto_wiecejNiz IS NOT NULL
943 SET @Query = @Query + 'AND (cenaBrutto > @cenaBrutto_wiecejNiz)'
944
945 execute sp_executesql @Query, @Params,
946 @producent, @nazwa,
947 @ilosc, @ilosc_mniejNiz, @ilosci_wiecejNiz,
948 @cenaNetto, @cenaNetto_mniejNiz, @cenaNetto_wiecejNiz,
949 @cenaBrutto, @cenaBrutto_mniejNiz, @cenaBrutto_wiecejNiz
950GO
951
952--towar_filtrowanie
953--@producent = 'Samsung',
954--@nazwa = 'A3'
955
956----
957
958CREATE PROCEDURE zamowienie_utworzNowe
959 @idKlienta int = NULL,
960 @login varchar(50) = NULL,
961 @dataZamowiena date = NULL
962AS
963 IF @idKlienta IS NOT NULL
964 IF @login IS NOT NULL
965 RAISERROR('Podaj idKlienta LUB login!', 11, 1)
966
967 IF @idKlienta IS NULL
968 IF @login IS NULL
969 RAISERROR('Podaj idKlienta lub login!', 11, 1)
970
971 DECLARE @status smallint
972 DECLARE @data date
973
974 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
975 SELECT @data = CONVERT (date, SYSDATETIME())
976
977 IF @idKlienta IS NOT NULL
978 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @idKlienta)
979 RAISERROR('Taki klient nie istnieje w bazie', 11, 1)
980 ELSE IF @dataZamowiena IS NULL BEGIN
981 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
982 VALUES(@idKlienta, @data, @status)
983 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
984 END ELSE BEGIN
985 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
986 VALUES(@idKlienta, @dataZamowiena, @status)
987 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
988 END
989
990 IF @login IS NOT NULL
991 IF NOT EXISTS (SELECT * FROM Uzytkownik WHERE login = @login)
992 RAISERROR('Klient z takim loginem nie istnieje w bazie', 11, 1)
993 ELSE BEGIN
994 DECLARE @idK int
995 SELECT @idK = id FROM Klient WHERE idUzytkownika = (SELECT id FROM Uzytkownik WHERE login = @login)
996
997 IF @dataZamowiena IS NULL BEGIN
998 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
999 VALUES(@idK, @data, @status)
1000 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1001 END ELSE BEGIN
1002 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1003 VALUES(@idK, @dataZamowiena, @status)
1004 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1005 END
1006 END
1007GO
1008
1009CREATE PROCEDURE zamowienie_dodajTowar
1010 @idZamowienia int,
1011 @idTowaru int = NULL,
1012 @nazwaTowaru varchar(100) = NULL,
1013 @ilosc int = NULL
1014AS
1015 IF @idZamowienia IS NULL
1016 RAISERROR('Podaj id zamowienia!', 11, 1)
1017
1018 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia)
1019 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1020
1021 IF @idTowaru IS NULL
1022 IF @nazwaTowaru IS NULL
1023 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1024
1025 IF @idTowaru IS NOT NULL
1026 IF @nazwaTowaru IS NOT NULL
1027 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1028
1029 DECLARE @kwota money
1030
1031 IF @idTowaru IS NOT NULL
1032 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1033 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1034 ELSE BEGIN
1035 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE id = @idTowaru
1036
1037 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1038 VALUES (@idZamowienia, @idTowaru, @ilosc, @kwota)
1039
1040 UPDATE Zamowienie
1041 SET wartosc = wartosc + @kwota
1042 WHERE id = @idZamowienia
1043 END
1044
1045 IF @nazwaTowaru IS NOT NULL
1046 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1047 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1048 ELSE BEGIN
1049 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE nazwa = @nazwaTowaru
1050
1051 DECLARE @idT int
1052 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1053
1054 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1055 VALUES (@idZamowienia, @idT, @ilosc, @kwota)
1056
1057 UPDATE Zamowienie
1058 SET wartosc = wartosc + @kwota
1059 WHERE id = @idZamowienia
1060 END
1061GO