Jeżeli miało by to być po stronie aplikacji, a do tego będę dążył żeby wyeliminować procedury rozwiązanie to będzie oparte o EntityFrameworka i Linq w dodatkowym module aplikacji (gdyż tym razem maraton podzielony jest na wiele modułów).
W aplikacji jest moduł dostępu do danych, można by zrobić osobny moduł tylko do rejestracji czasu, ta sama baza ale inne tabele (do przemyślenia).
Zapomniałem dodać, zapytanie działa.
-- rejestracja czasu
declare
@zaw_id int = 1
declare
@iloscRejestracji int
declare
@odbicie datetime
declare
@rejestracja datetime =
'2018-09-05 17:05:00'
declare
@roznicaCzasu int
declare
@licznik int
--
select
@iloscRejestracji = count(czas_id) from Time_Registration
where
zaw_id = @zaw_id
if(@iloscRejestracji
> 0)
begin
select top 1 @odbicie =
czas_registration from Time_Registration
where zaw_id = @zaw_id order by
czas_registration desc
select
@roznicaCzasu = DATEDIFF(minute,@odbicie,@rejestracja)
if( @roznicaCzasu >
30 )
begin
--mozliwosc
inserta
select
@licznik = czas_counter from Time_Registration
where
zaw_id = @zaw_id
set
@licznik = @licznik +
1
INSERT
INTO [dbo].[Time_Registration]
([czas_registration],[czas_counter],[zaw_id])
VALUES
(@rejestracja,@licznik,@zaw_id)
print 'czas
zarejestrowany'
end
else
begin
print
'brak mozliwosci odbicia - limit czasu'
end
end
else
begin
INSERT INTO [dbo].[Time_Registration]
([czas_registration],[czas_counter],[zaw_id])
VALUES
(GETDATE(),1,@zaw_id)
print 'start zawodnika'
end
Brak komentarzy:
Prześlij komentarz