
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[EmployeeDetails](
	[ED_ID] [int] IDENTITY(1,1) NOT NULL,
	[ED_Code] [varchar](10) NOT NULL,
	[ED_FirstName] [varchar](50) NOT NULL,
	[ED_LastName] [varchar](50) NOT NULL,
	[ED_DOB] [datetime] NOT NULL,
	[ED_CellPhoneNumber] [varchar](12) NULL,
	[ED_LandlineNumber] [varchar](12) NULL,
	[ED_EmailID] [varchar](50) NULL,
	[ED_Address] [varchar](250) NULL,
	[ED_ImagePath] [varchar](150) NULL,
	[ED_Experience] [varchar](15) NULL,
	[ED_Skills] [varchar](50) NULL,
	[ED_Designation] [varchar](25) NOT NULL,
	[ED_PreviousCompany] [varchar](50) NULL,
	[ED_DOJ] [datetime] NOT NULL,
	[ED_IsPermanent] [bit] NOT NULL,
	[ED_IsReportingManager] [bit] NOT NULL,
 CONSTRAINT [PK_EmployeeDetails] PRIMARY KEY CLUSTERED 
(
	[ED_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =======================================================
-- Description:	Stored procedure used to get user list
-- =======================================================
CREATE PROCEDURE [dbo].[SP_GetUserDetails]
@keyword varchar(25),
@startRowIndex int,
@maximumRows int, 
@totalRows int OUTPUT
AS
BEGIN
DECLARE @first_id int, @startRow int

IF @startRowIndex = 1 
	SET @startRowIndex = 1
ELSE
	SET @startRowIndex = ((@startRowIndex - 1) * @maximumRows)+1
	
SET ROWCOUNT @startRowIndex
SELECT @first_id = ED_ID FROM EmployeeDetails ORDER BY ED_ID

SET ROWCOUNT @maximumRows
IF @keyword = ''
BEGIN
SELECT DISTINCT
ED_ID,
ED_Code,
ED_FirstName,
ED_LastName,
ED_DOB,
ED_Experience,
ED_Skills,
ED_Designation,
ED_PreviousCompany,
ED_DOJ,
ED_IsPermanent,
ED_IsReportingManager
FROM EmployeeDetails  
WHERE 
ED_ID >= @first_id 
ORDER BY ED_ID ASC
END
ELSE
BEGIN
SELECT DISTINCT
ED_ID,
ED_Code,
ED_FirstName,
ED_LastName,
ED_DOB,
ED_Experience,
ED_Skills,
ED_Designation,
ED_PreviousCompany,
ED_DOJ,
ED_IsPermanent,
ED_IsReportingManager
FROM EmployeeDetails  
WHERE 
(
ED_Code LIKE '%' + @keyword + '%' OR
ED_FirstName LIKE '%' + @keyword + '%' OR
ED_LastName LIKE '%' + @keyword + '%' OR
ED_Experience LIKE '%' + @keyword + '%' OR
ED_Skills LIKE '%' + @keyword + '%' OR
ED_Designation LIKE '%' + @keyword + '%' OR
ED_PreviousCompany LIKE '%' + @keyword + '%' 
)
AND
ED_ID >= @first_id 
ORDER BY ED_ID ASC
END
SET ROWCOUNT 0
SELECT @totalRows = COUNT(ED_ID) FROM EmployeeDetails
END

GO



SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =====================================================================
-- Description:	This stored procedure is used to add/update user details
-- =====================================================================
CREATE PROCEDURE [dbo].[SP_AddUpdateUserDetails]
(
@mode varchar(4),
@isfileuploaded bit,
@id int,
@edcode varchar(10),
@firstname varchar(50),
@lastname varchar(50),
@dateofbirth datetime,
@cellphonenumber varchar(12),
@landlinenumber varchar(12),
@emailid varchar(50),
@address varchar(250),
@imagepath varchar(150),
@experience varchar(15),
@skills varchar(50),
@designation varchar(25),
@previouscompany varchar(50),
@dateofjoining datetime,
@ispermanent bit,
@isreportingmanager bit
)
AS
BEGIN
if @mode = 'add' --To add a new user
BEGIN
	insert into dbo.EmployeeDetails
	(
	ED_Code,
	ED_FirstName,
	ED_LastName,
	ED_DOB,
	ED_CellPhoneNumber,
	ED_LandlineNumber,
	ED_EmailID,
	ED_Address,
	ED_ImagePath,
	ED_Experience,
	ED_Skills,
	ED_Designation,
	ED_PreviousCompany,
	ED_DOJ,
	ED_IsPermanent,
	ED_IsReportingManager
	)
	values
	(
	@edcode,
	@firstname,
	@lastname,
	@dateofbirth,
	@cellphonenumber,
	@landlinenumber,
	@emailid,
	@address,
	@imagepath,
	@experience,
	@skills,
	@designation,
	@previouscompany,
	@dateofjoining,
	@ispermanent,
	@isreportingmanager 
	)
END
else  --To update an existing user
BEGIN
if @isfileuploaded = 'True' --If a new image is uploaded, update all the details.
BEGIN
	update  dbo.EmployeeDetails
	set 
	ED_Code = @edcode,
	ED_FirstName = @firstname,
	ED_LastName = @lastname,
	ED_DOB = @dateofbirth,
	ED_CellPhoneNumber = @cellphonenumber,
	ED_LandlineNumber = @landlinenumber,
	ED_EmailID = @emailid,
	ED_Address = @address,
	ED_ImagePath = @imagepath,
	ED_Experience = @experience,
	ED_Skills = @skills,
	ED_Designation = @designation,
	ED_PreviousCompany = @previouscompany,
	ED_DOJ = @dateofjoining,
	ED_IsPermanent = @ispermanent,
	ED_IsReportingManager = @isreportingmanager
	where ED_ID = @id 
END
else  --Update all the details except user image.
BEGIN
	update  dbo.EmployeeDetails
	set 
	ED_Code = @edcode,
	ED_FirstName = @firstname,
	ED_LastName = @lastname,
	ED_DOB = @dateofbirth,
	ED_CellPhoneNumber = @cellphonenumber,
	ED_LandlineNumber = @landlinenumber,
	ED_EmailID = @emailid,
	ED_Address = @address,
	ED_Experience = @experience,
	ED_Skills = @skills,
	ED_Designation = @designation,
	ED_PreviousCompany = @previouscompany,
	ED_DOJ = @dateofjoining,
	ED_IsPermanent = @ispermanent,
	ED_IsReportingManager = @isreportingmanager
	where ED_ID = @id 
END
END
END

GO



SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =======================================================
-- Description:	Stored procedure used to get user detail
-- =======================================================
CREATE PROCEDURE [dbo].[SP_GetCompleteUserDetails]
(
@userid int
)
AS
BEGIN
SELECT 
ED_Code,
ED_FirstName,
ED_LastName,
CONVERT(VARCHAR(12), ED_DOB, 107) AS ED_DOB,
ED_CellPhoneNumber,
ED_LandlineNumber,
ED_EmailID,
ED_Address,
ED_ImagePath,
ED_Experience,
ED_Skills,
ED_Designation,
ED_PreviousCompany,
CONVERT(VARCHAR(12), ED_DOJ, 107) AS ED_DOJ,
CASE ED_IsPermanent WHEN 'True' THEN 'Yes' ELSE 'No' END AS ED_IsPermanent,
CASE ED_IsReportingManager WHEN 'True' THEN 'Yes' ELSE 'No' END AS ED_IsReportingManager
FROM dbo.EmployeeDetails
WHERE ED_ID = @userid 
END

GO



SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =================================================================
-- Description:	This stored procedure is used to delete user details.
-- =================================================================
CREATE PROCEDURE [dbo].[SP_DeleteUserDetails]
@idlist VARCHAR(100)
AS
BEGIN
DECLARE @Delimiter VARCHAR(1)
SET @Delimiter = ','
CREATE TABLE #IDTODELTE(Item VARCHAR(100))
DECLARE @Item           VARCHAR(100)
DECLARE @ItemList       VARCHAR(100)
DECLARE @DelimIndex     INT

SET @ItemList = @idlist
SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
WHILE (@DelimIndex != 0)
BEGIN
	SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex)
	INSERT INTO #IDTODELTE VALUES (@Item)
	SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+1, LEN(@ItemList)-@DelimIndex)
	SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
END 

IF @Item IS NOT NULL  
BEGIN
	SET @Item = @ItemList
	INSERT INTO #IDTODELTE VALUES (@Item)
END
ELSE INSERT INTO #IDTODELTE VALUES (@idlist)

DELETE FROM EmployeeDetails
WHERE [ED_ID] IN
(
SELECT Item FROM #IDTODELTE
WHERE Item <> '' AND Item IS NOT NULL
)
DROP TABLE #IDTODELTE
END
GO





