use utakmice

-- 1. zadatak

create table Tabela
(
	id int primary key identity(1,1),
	id_sezone int foreign key references sezona(id),
	id_tima int foreign key references timovi(id),
	broj_bodova int
)


-- 2. zadatak

create trigger upisUTabelu on Tabela
instead of insert
as
begin

	declare @id_sezone int
	declare @id_tima int
	declare @broj_bodova int
	
	declare kursorKrozInserted cursor
	for select id_sezone, id_tima, broj_bodova from inserted 

	open kursorKrozInserted

	fetch next from kursorKrozInserted into  @id_sezone, @id_tima, @broj_bodova

	while @@FETCH_STATUS = 0
	begin

		print concat(@id_sezone, @id_tima, @broj_bodova)

		if exists (select * from Tabela where id_sezone = @id_sezone and id_tima = @id_tima)
		begin
			print 'update'
			update Tabela
				set broj_bodova = @broj_bodova
			where id_sezone = @id_sezone and id_tima = @id_tima
		end
		else
		begin
			print 'insert'
			insert into Tabela values (@id_sezone, @id_tima, @broj_bodova)
		end
		

		fetch next from kursorKrozInserted into  @id_sezone, @id_tima, @broj_bodova
	end

	close kursorKrozInserted
	deallocate kursorKrozInserted
end


go

-- 3. zadatak

create FUNCTION dajBodoveNaUtakmici
(
	@idUtakmice int, 
	@idTima int
)
RETURNS int
AS
BEGIN
	DECLARE @brGolovaTima int
	DECLARE @brGolovaProtivnickogTima int

	set @brGolovaTima = (	select count(*) 
							from golovi 
							where id_utakmice = @idUtakmice and id_tima = @idTima
						)
	set @brGolovaProtivnickogTima = (	
										select count(*) 
										from golovi 
										where id_utakmice = @idUtakmice and id_tima != @idTima
									)

	if @brGolovaTima > @brGolovaProtivnickogTima -- ako je @idTima pobedio
	begin
		RETURN 3
	end
	else if @brGolovaTima = @brGolovaProtivnickogTima --ako je nereseno
	begin
		RETURN 1
	end

	-- Ako je @idTima izgubio
	return 0
END
GO

-- Prmimer poziva
select dbo.dajBodoveNaUtakmici(1,2)


go


-- 4. zadatak

create FUNCTION dajBodoveTimaUSezoni
(
	@idSezone int, 
	@idTima int
)
RETURNS int
AS
BEGIN

	return (
				select sum(dbo.dajBodoveNaUtakmici(id, @idTima))
				from utakmice
				where id_sezone = @idSezone and (id_domacina = @idTima or id_gosta = @idTima)
			)

	
END
GO

select dbo.dajBodoveTimaUSezoni(1,1)

-- 5. zadatak
go
alter procedure popuniTabelu
as
begin

	insert into Tabela
	select s.id, t.id, dbo.dajBodoveTimaUSezoni(s.id, t.id)
	from timovi t, sezona s
	
end
go

exec popuniTabelu

go




