SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MEDWEB_HASTABASVURU]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE MEDWEB_HASTABASVURU
GO

IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MEDWEB_HASTABASVURU]') AND xtype in (N'FN', N'IF', N'TF'))
DROP FUNCTION [dbo].[MEDWEB_HASTABASVURU]
GO

CREATE PROCEDURE dbo.MEDWEB_HASTABASVURU @HTCKIMLIKNO nvarchar(25), @HADI nvarchar(25), @HSOYADI nvarchar(25), 
                                         @HEMAIL nvarchar(40), @HCEP nvarchar(20), @HDTARIHI datetime, @HCINSIYETI nvarchar(1)
AS
BEGIN
    SET NOCOUNT ON
	DECLARE 
      @KAYITSAYI int,
      @HKIMLIKID int,
      @HastaWebsifre nvarchar(10),
      @HastaCep nvarchar(20),
      @HastaWebKullan bit,
      @HastaWebAktif bit,
      @HastaAdi nvarchar(50),
      @HastaSoyAdi nvarchar(50),
      @HastaDTarihi smalldatetime,
      @HastaTCKIMLIKNO nvarchar(25),
      @Sonuc int
    
    SET @KAYITSAYI = 0
	SELECT @KAYITSAYI = COUNT(*) FROM HKIMLIK WHERE HTCKIMLIKNO = @HTCKIMLIKNO
	
	IF @KAYITSAYI = 0
	BEGIN
	-- TC Kimlik No ya sahip Kayıt Yok
	SET @HADI = UPPER(@HADI)
	SET @HSOYADI = UPPER(@HSOYADI)

	  SELECT @HKIMLIKID = HKIMLIKID,@HastaAdi = HADI, @HastaSoyAdi = HSOYADI, @HastaDTarihi = HDTARIHI, 
 	         @HastaCep = HCEP, @HastaWebKullan = HWEBKULLAN, @HastaWebAktif = HWEBAKTIF, @HastaWebsifre = HWEBSIFRE, 
 	         @HastaTCKIMLIKNO = HTCKIMLIKNO
	  FROM HKIMLIK WHERE RTRIM(HADI) = RTRIM(@HADI) AND RTRIM(HSOYADI) = RTRIM(@HSOYADI) AND HDTARIHI = @HDTARIHI AND HCINSIYETI = @HCINSIYETI  
      SET @KAYITSAYI = @@ROWCOUNT
        
	  IF @KAYITSAYI = 0
	  BEGIN
		  EXEC SAYACOKU N'HKIMLIK', @HKIMLIKID OUTPUT
		  SET @HastaWebsifre = 
				CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10)) + 
				CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10))
	       
		  INSERT INTO HKIMLIK (HKIMLIKID,HKARTNO,HADI,HSOYADI,HTCKIMLIKNO,HDTARIHI,HCINSIYETI,HKCARIID,HCEP,HEMAIL,HWEBSIFRE,HWEBKULLAN,HWEBAKTIF,HWEBKAYIT,UYRUKKODU)
		  VALUES (@HKIMLIKID,@HKIMLIKID,@HADI,@HSOYADI,@HTCKIMLIKNO,@HDTARIHI,@HCINSIYETI,-1,@HCEP,@HEMAIL,@HastaWebsifre,1,1,1,'TC')
		  SET @SONUC = 0
	  END
	  ELSE IF @KAYITSAYI = 1
	  BEGIN
	    SET @HKIMLIKID = NULL
	    SET @HastaWebsifre = NULL
		IF LTRIM(RTRIM(ISNULL(@HastaTCKIMLIKNO,''))) <> ''
	      -- Hasta kaydındaki TC Kimlik Numarası farklı
		  SET @Sonuc = 8
		ELSE
	      -- Hasta kaydında TC Kimlik Numarası girilmemiş
		  SET @Sonuc = 9
	  END
	  ELSE
	  BEGIN
	      -- Aynı Hasta bilgileri ile birden fazla kayıt var
		  SET @HKIMLIKID = NULL
		  SET @HastaWebsifre = NULL
		  SET @Sonuc = 10
	  END
	END
    ELSE IF @KAYITSAYI= 1   
    BEGIN
		SELECT @HKIMLIKID = HKIMLIKID,@HastaAdi = HADI, @HastaSoyAdi = HSOYADI, @HastaDTarihi = HDTARIHI, 
		       @HastaCep = HCEP, @HastaWebKullan = HWEBKULLAN, @HastaWebAktif = HWEBAKTIF, @HastaWebsifre = HWEBSIFRE
		FROM HKIMLIK WHERE HTCKIMLIKNO = @HTCKIMLIKNO
		IF @HastaWebKullan = 0
		-- Web erişimine kapalı
		BEGIN
		  SET @HKIMLIKID = NULL
		  SET @HastaWebsifre = NULL
		  SET @Sonuc = 6
		END
		/*ELSE IF @HastaWebAktif = 1
		-- Önceden aktif
		BEGIN
		  SET @HKIMLIKID = NULL
		  SET @HastaWebsifre = NULL
		  SET @Sonuc = 5
		END*/
		ELSE IF ISNULL(@HastaCep,'') = ''  
		BEGIN
		  SET @HKIMLIKID = NULL
		  SET @HastaWebsifre = NULL
		  SET @Sonuc = 2
		END
		ELSE IF ISNULL(@HastaCep,'') <> ISNULL(@HCEP,'')  
		BEGIN
		  SET @HKIMLIKID = NULL
		  SET @HastaWebsifre = NULL
		  SET @Sonuc = 3
		END
		ELSE IF ISNULL(@HastaAdi,'') <> ISNULL(@HADI,'') OR 
		        ISNULL(@HastaSoyAdi,'') <> ISNULL(@HSOYADI,'') OR 
		        ABS(YEAR(ISNULL(@HDTARIHI,'19000101')) - YEAR(@HDTARIHI)) > 1
		BEGIN
		  SET @HKIMLIKID = NULL
		  SET @HastaWebsifre = NULL
		  SET @Sonuc = 4
		END	    
		ELSE
		BEGIN
		  SET @HastaWebsifre = 
				CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10)) + 
				CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10)) + CHAR(48+CONVERT(INT,RAND()*10))
	       
		  UPDATE HKIMLIK 
		  SET HWEBAKTIF = 1,
		      HWEBSIFRE = @HastaWebsifre
		  WHERE HKIMLIKID = @HKIMLIKID
		  SET @Sonuc = 0
		END
	END 
	ELSE IF @KAYITSAYI > 1
	BEGIN
	-- Mükerrer Kayıt Var
	  SET @Sonuc = 1
	END
	SELECT @HKIMLIKID AS HKIMLIKID, @HastaWebsifre AS WEBSIFRE, @Sonuc AS SONUC	
	RETURN
END
GO

IF EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'medisoftweb')
GRANT
	EXECUTE
	ON [dbo].[MEDWEB_HASTABASVURU]
	TO medisoftweb
GO