ALTER PROCEDURE [dbo].[MEDWEB_RANDEVUKAYIT] @SUBEID int, @BOLUMID int, @DRID int, @HKIMLIKID int, 
	                                     @TARIH smalldatetime, @SAAT datetime,  @ACIKLAMA nvarchar(200), @KAYITYERI VARCHAR(50)='MEDWEB'	                                     
AS
BEGIN
    SET NOCOUNT ON
	DECLARE 
	  @Sonuc int,
	  @RSURE int,
	  @HastaAdSoyad nvarchar(100),
	  @HastaTCKimlikNo nvarchar(100),
	  @HastaTel nvarchar(20),
	  @HastaCariAnaGrupID int,
	  @RANDEVUID int,
	  @Hasta nvarchar(20),
	  @RandWeb bit,
	  @Izinli bit,
	  @HastaRandevusuVar integer
	  
    IF @TARIH + @SAAT  <= GETDATE()
	BEGIN
	    -- Geçmiş tarihli randevu verilemez
		SET @Sonuc = 1
	    SELECT @Sonuc
	    RETURN
	END
	
	SELECT @RANDEVUID = RANDEVUID FROM HRANDEVU WHERE KIMLIKID = @HKIMLIKID AND RTARIH>=dbo.TARIHAL(GETDATE()) AND BOLUMID=@BOLUMID AND SUBEID=@SUBEID AND RANDDURUMID NOT IN (5,6)
	IF @@ROWCOUNT > 0 
        -- Hastanın aynı bölüme randevusu var	    
		SET @HastaRandevusuVar = 1
	ELSE
	BEGIN		
		SELECT @RANDEVUID = RANDEVUID FROM HRANDEVU WHERE KIMLIKID = @HKIMLIKID AND RTARIH=@TARIH AND RSAAT = @SAAT - 2 AND RANDDURUMID NOT IN (5,6)
		IF @@ROWCOUNT > 0
		    -- -- Hastanın aynı saate randevusu var	
		    SET @HastaRandevusuVar = 2
		ELSE
		    SET @HastaRandevusuVar = 0 
	END
		
	
	IF @HastaRandevusuVar > 0
	BEGIN
	    IF @HastaRandevusuVar = 1
		    SET @Sonuc = 5
		ELSE 
		    SET @Sonuc = 6
	    SELECT @Sonuc
	    RETURN
	END
	
	SELECT @RandevuID = RANDEVUID, @Hasta = HASTA, @RandWeb = WEB, @Izinli = IZINLI
	FROM dbo.RANDEVUGUN (@DRID, @TARIH, default)
	WHERE CAST(SAAT AS datetime) = @SAAT
	
	if @@ROWCOUNT > 0 
	BEGIN      
	    if @RandevuID IS NULL AND @Hasta IS NULL AND @Izinli = 0
	    BEGIN  
	        SELECT @RSURE = RANDEVUDAKIKA FROM TDRKIMLIK WHERE DRID = @DRID
    		
	        SELECT @HastaAdSoyad = dbo.HKIMLIK.HADI+' '+dbo.HKIMLIK.HSOYADI, 
	               @HastaTCKimlikNo = dbo.HKIMLIK.HTCKIMLIKNO,
	               @HastaTel= ISNULL(HTEL,HCEP),
	               @HastaCariAnaGrupID= VWCARIAGAC.CARIANAGRUPID  
	               FROM dbo.HKIMLIK LEFT OUTER JOIN VWCARIAGAC ON
	               dbo.HKIMLIK.HKCARIID=VWCARIAGAC.CARIID WHERE HKIMLIKID = @HKIMLIKID        
    	     
		    EXEC SAYACOKU N'HRANDEVU', @RANDEVUID OUTPUT	
		    INSERT INTO HRANDEVU (RANDEVUID, KIMLIKID, DRID, BOLUMID, RNEDENID, RTARIH, RSAAT, RSURE, RBTARIH, RANDDURUMID, RACIKLAMA, ADISOYADI, TEL, 
							      RTARIHSAAT, KYTARIH, KYKULLANICI, SUBEID, CARIANAGRUPID, WEB) 
					      VALUES (@RANDEVUID, @HKIMLIKID, @DRID, @BOLUMID, 1, @TARIH, @SAAT - 2, @RSURE, DATEADD(mi,@RSURE,@TARIH+@SAAT) , 1, @ACIKLAMA, @HastaAdSoyad, @HastaTel, 
							      @TARIH + @SAAT, GETDATE(), @KAYITYERI, @SUBEID, @HastaCariAnaGrupID, 1)
		    IF @@ERROR = 0
		      SET @Sonuc = 0	
		    ELSE
		      SET @Sonuc = 4
	    END
	    ELSE IF  @Izinli = 1
	        SET @Sonuc = 8
	    ELSE IF @RandevuID IS NOT NULL AND @Hasta <> '----'  
	        -- randevu girilmiş
		    SET @Sonuc = 2
	    ELSE
		    SET @Sonuc = 3
	END 
	ELSE	
	    -- randevu saati çalışma saati dışında
		SET @Sonuc = 7
	
	SELECT @Sonuc
	RETURN
END
-- 1- Geçmiş tarihli randevu alınmaz, 2 - Randevu Alınmış, 3- Saat randevu alınamaz olarak ayarlı 4- Kayıt Sırasında hata oluştu
-- 5- Hasta için aynı bölumden bir adet randevu alınabilir. 6 - Aynı randevu saati için hastanın randevusu mevcut. 7 - Saat çalışma saatleri dışında
-- 8- Doktor izinli
