Sei sulla pagina 1di 19

CREATE TABLE Member(

Member_Id numeric(10, 0) NOT NULL PRIMARY KEY,


User_Name varchar(20) NOT NULL,
Password varchar(20) NOT NULL,
First_Name varchar(40) NOT NULL,
Last_Name varchar(40) NOT NULL,
Middle_Name varchar(40) NULL,
User_Type char(1) NOT NULL DEFAULT ('M'),
Address varchar(50) NOT NULL,
Email varchar(40) NOT NULL,
Phone numeric(10, 0) NOT NULL,
Mobile numeric(10, 0) NULL,
Security_Question varchar(100) NOT NULL,
Security_Answer varchar(100) NOT NULL,
Sex char(1) NOT NULL,
Status bigint NULL DEFAULT ((1)),
Registration_Date smalldatetime NOT NULL DEFAULT (getdate()),
Defaulter bigint NULL DEFAULT ((0)),
Sanction_Date smalldatetime NULL,
Created_By numeric(10, 0) NOT NULL,
Last_Upd_By numeric(10, 0) NOT NULL,
Modified_Date smalldatetime NOT NULL DEFAULT (getdate()))

INSERT INTO MEMBER(


Member_Id,User_Name,Password,First_Name,Last_Name,Status,Address,Email,Phone,Mobile
,Sex,Security_Question,Security_Answer,Created_By,Last_Upd_By)
VALUES(123456,'Admin','password','Admin','Admin',1,'Address','email@yahoo.es',12345
67,1234567890,'M','Security_Question','Security_Answer',123456,123456)

CREATE TABLE Category(


Category_Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Name varchar(50) NOT NULL,
Description varchar(255) NULL,
Status bigint NULL DEFAULT ((1)))

CREATE TABLE Publisher(


Publisher_Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Name varchar(50) NOT NULL,
Publishing_Year int NOT NULL,
Publishing_House varchar(50) NOT NULL,
Edition varchar(50) NOT NULL,
Address varchar(50) NOT NULL,
Phone numeric(10, 0) NULL,
Fax numeric(10, 0) NULL,
Email varchar(40) NULL,
Status bigint NULL DEFAULT ((1)))

CREATE TABLE Author(


Author_Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Name varchar(100) NOT NULL,
Address varchar(50) NOT NULL,
Phone numeric(10, 0) NULL,
Fax numeric(10, 0) NULL,
Email varchar(40) NULL,
Status bigint NULL DEFAULT ((1)))

CREATE TABLE HoliDays(


Holiday smalldatetime NOT NULL PRIMARY KEY)
CREATE TABLE Book_Master(
Book_Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Title varchar(50) NOT NULL,
Author_Id int NOT NULL,
Publisher_Id int NOT NULL,
Category_Id int NOT NULL,
Key_Word varchar(100) NULL,
ISBN numeric(13, 0) NOT NULL,
Quantity int NOT NULL DEFAULT ((1)),
Status bigint NULL DEFAULT ((0)),
Restriction bigint NULL DEFAULT ((0)),
CONSTRAINT Author_Id FOREIGN KEY (Author_Id)
REFERENCES Author (Author_Id),
CONSTRAINT Publisher_Id FOREIGN KEY (Publisher_Id)
REFERENCES Publisher (Publisher_Id),
CONSTRAINT Category_Id FOREIGN KEY (Category_Id)
REFERENCES Category (Category_Id))

CREATE TABLE Book_Transaction(


Book_Id int NOT NULL,
Member_Id numeric(10, 0) NOT NULL PRIMARY KEY,
Issue_Date smalldatetime NOT NULL DEFAULT (getdate()),
Return_Date smalldatetime NOT NULL,
Observation varchar(255) NULL,
Renovate bigint NULL DEFAULT ((0)),
Created_By numeric(10, 0) NOT NULL,
Last_Upd_By numeric(10, 0) NOT NULL,
Created_Date smalldatetime NOT NULL DEFAULT (getdate()),
Modified_Date smalldatetime NOT NULL DEFAULT (getdate()),
CONSTRAINT Book_Id FOREIGN KEY (Book_Id)
REFERENCES Book_Master (Book_Id),
CONSTRAINT Member_Id FOREIGN KEY (Member_Id)
REFERENCES Member (Member_Id))

CREATE TABLE Book_Transaction_Backup(


Book_ID int NOT NULL,
Member_Id numeric(10, 0) NOT NULL,
Issue_Date smalldatetime NOT NULL DEFAULT (getdate()),
Return_Date smalldatetime NOT NULL,
Observation varchar(255) NULL,
Renovate bigint NULL DEFAULT ((0)),
Created_By numeric(10, 0) NOT NULL,
Last_Upd_By numeric(10, 0) NOT NULL,
Created_Date smalldatetime NOT NULL DEFAULT (getdate()),
Modified_Date smalldatetime NOT NULL DEFAULT (getdate()))

USE [Library2]
GO
CREATE PROCEDURE [dbo].[spr_IUAuthor](
@Author_Id int,
@Name varchar(50),
@Address varchar(50),
@Phone numeric(10, 0),
@Fax numeric(10, 0),
@Email varchar(40),
@Status bigint,
@p_Result int OUT)
AS
DECLARE @NewName varchar(50)
DECLARE @CurrentName varchar(50)
SET @NewName = ''
SET @CurrentName = ''
SET @p_Result = 0

BEGIN TRY
SET @NewName = (SELECT NAME FROM AUTHOR WHERE NAME = @Name)

IF (@Author_ID = 0)
IF (@NewName <> '')
SET @p_Result = 1
ELSE
INSERT INTO AUTHOR(
Name,
Address,
Phone,
Fax,
Email)
VALUES(
@Name,
@Address,
@Phone,
@Fax,
@Email)
ELSE
SET @CurrentName = (SELECT NAME FROM AUTHOR WHERE AUTHOR_ID =
@Author_Id)
IF ((@NewName <> '') AND (@CurrentName <> @Name))
SET @p_Result = 1
ELSE
UPDATE AUTHOR SET
Name = @Name,
Address = @Address,
Phone = @Phone,
Fax = @Fax,
Email = @Email,
Status = @Status
WHERE AUTHOR_ID = @Author_Id
END TRY

BEGIN CATCH
SET @p_Result = ERROR_NUMBER()
RETURN @p_Result
END CATCH

GO
CREATE PROCEDURE [dbo].[spr_IUBook](
@Book_Id int,
@Title varchar(50),
@Author_Id int,
@Publisher_Id int,
@Category_Id int,
@Key_Word varchar(100),
@Isbn numeric (13, 0),
@Status bigint,
@p_Result int OUT)
AS
DECLARE @v_Quantity int
SET @p_Result = 0

BEGIN TRY
IF (@Book_ID = 0)
BEGIN
INSERT INTO BOOK_MASTER(
Title,
Author_Id,
Publisher_Id,
Category_Id,
Key_Word,
ISBN)
VALUES(
@Title,
@Author_Id,
@Publisher_Id,
@Category_Id,
@Key_Word,
@Isbn)

SELECT @v_Quantity = COUNT(*) FROM BOOK_MASTER WHERE AUTHOR_ID


= @Author_Id AND TITLE = @Title
IF (@v_Quantity >1)
UPDATE BOOK_MASTER SET QUANTITY = @v_Quantity WHERE
AUTHOR_ID = @Author_Id AND TITLE = @Title
END

ELSE
UPDATE BOOK_MASTER SET
Title = @Title,
Author_Id =
@Author_Id,
Publisher_Id =
@Publisher_Id,
Category_Id =
@Category_Id,
Key_Word =
@Key_Word,
ISBN = @Isbn,

Status =
@Status
WHERE BOOK_ID = @Book_ID

END TRY

BEGIN CATCH
SET @p_Result = ERROR_NUMBER()
RETURN @p_Result
END CATCH

GO
CREATE PROCEDURE [dbo].[spr_IUCategory](
@Category_Id int,
@Name varchar(50),
@Description varchar(255),
@Status int,
@p_Result int OUT)

AS
DECLARE @NewName varchar(50)
DECLARE @CurrentName varchar(50)
SET @NewName = ''
SET @CurrentName = ''
SET @p_Result = 0

BEGIN TRY
SET @NewName = (SELECT NAME FROM CATEGORY WHERE NAME = @Name)

IF (@Category_ID = 0)
IF (@NewName <> '')
SET @p_Result = 1
ELSE
INSERT INTO CATEGORY(

Name,
Description)

VALUES(
@Name,
@Description)
ELSE
SET @CurrentName = (SELECT NAME FROM CATEGORY WHERE CATEGORY_ID =
@Category_Id)
IF ((@NewName <> '') AND (@CurrentName <> @Name))
SET @p_Result = 1
ELSE
UPDATE CATEGORY SET
Name = @Name,
Description = @Description,
Status = @Status
WHERE CATEGORY_ID = @Category_Id

END TRY

BEGIN CATCH
SET @p_Result = ERROR_NUMBER()
RETURN @p_Result
END CATCH

GO
CREATE PROCEDURE [dbo].[spr_IUMember](
@Action char(1),
@Member_Id numeric(10, 0),
@User_Name varchar(20),
@Password varchar(20),
@First_Name varchar(40),
@Middle_Name varchar(40),
@Last_Name varchar(40),
@Status bigint,
@Address varchar(50),
@Email varchar(40),
@Phone numeric(10, 0),
@Mobile numeric(10, 0),
@Sex char(1),
@Security_Question varchar(100),
@Security_Answer varchar(100),
@Created_By numeric(10, 0),
@p_Result int OUT)

AS
DECLARE @Member NUMERIC(10, 0)
DECLARE @NewName varchar(50)
DECLARE @CurrentName varchar(50)
SET @Member = 0
SET @NewName = ''
SET @CurrentName = ''
SET @p_Result = 0

BEGIN TRY
SET @Member = (SELECT MEMBER_ID FROM MEMBER WHERE MEMBER_ID =
@Member_Id)
SET @NewName = (SELECT USER_NAME FROM MEMBER WHERE USER_NAME =
@User_Name)
IF (@Action = 'I')
IF (@NewName <> '')
SET @p_Result = 1
ELSE IF (@Member <> 0)
SET @p_Result = 2
ELSE
INSERT INTO MEMBER(
Member_Id,
User_Name,
Password,
First_Name,
Middle_Name,
Last_Name,
Status,

Address,
Email,
Phone,
Mobile,
Sex,
Security_Question,
Security_Answer,
Created_By,
Last_Upd_By)
VALUES(
@Member_Id,
@User_Name,
@Password,
@First_Name,
@Middle_Name,
@Last_Name,
@Status,

@Address,
@Email,
@Phone,
@Mobile,
@Sex,
@Security_Question,
@Security_Answer,
@Created_By,
@Created_By)
ELSE
SET @CurrentName = (SELECT USER_NAME FROM MEMBER WHERE MEMBER_ID =
@Member_Id)
IF ((@NewName <> '') AND (@CurrentName <> @User_Name))
SET @p_Result = 1
ELSE
UPDATE MEMBER SET
User_Name = @User_Name,
Password = @Password,
First_Name = @First_Name,
Middle_Name = @Middle_Name,
Last_Name = @Last_Name,
Status = @Status,

Address = @Address,
Email = @Email,
Phone = @Phone,
Mobile = @Mobile,
Sex = @Sex,
Security_Question =
@Security_Question,
Security_Answer =
@Security_Answer
WHERE Member_Id = @Member_Id
END TRY

BEGIN CATCH
SET @p_Result = ERROR_NUMBER()
RETURN @p_Result
END CATCH

GO
CREATE PROCEDURE [dbo].[spr_IUPublisher](
@Publisher_Id int,
@Name varchar(50),
@Publishing_Year int,
@Publishing_House varchar(50),
@Edition varchar(50),
@Address varchar(50),
@Phone numeric(10,0),
@Fax numeric(10,0),
@Email varchar(40),
@Status int,
@p_Result int OUT)

AS
DECLARE @NewName varchar(50)
DECLARE @CurrentName varchar(50)
SET @NewName = ''
SET @CurrentName = ''
SET @p_Result = 0

BEGIN TRY
SET @NewName = (SELECT NAME FROM PUBLISHER WHERE NAME = @Name)
IF (@Publisher_Id = 0)
IF (@NewName <> '')
SET @p_Result = 1
ELSE
INSERT INTO PUBLISHER(
Name,
Publishing_Year,
Publishing_House,
Edition,
Address,
Phone,
Fax,
Email)
VALUES(
@Name,
@Publishing_Year,
@Publishing_House,
@Edition,
@Address,
@Phone,
@Fax,
@Email)

ELSE
SET @CurrentName = (SELECT NAME FROM PUBLISHER WHERE PUBLISHER_ID =
@Publisher_Id)
IF ((@NewName <> '') AND (@CurrentName <> @Name))
SET @P_Result = 1
ELSE
UPDATE PUBLISHER SET
Name = @Name,
Publishing_Year = @Publishing_Year,
Publishing_House = @Publishing_House,
Edition = @Edition,
Address = @Address,
Phone = @Phone,
Fax = @Fax,
Email = @Email,
Status = @Status
WHERE PUBLISHER_ID = @Publisher_Id

END TRY

BEGIN CATCH
SET @P_Result = ERROR_NUMBER()
RETURN @P_Result
END CATCH

GO
CREATE PROCEDURE [dbo].[spr_CSearchRecord](
@p_TABLE varchar(20),
@p_DATASEARCH varchar(50),
@p_CONDITION varchar(50))

AS
DECLARE @p_DATASEARCHN NUMERIC(10, 0)
BEGIN
IF(@p_TABLE = 'MEMBER')
IF (@p_CONDITION <> '')
BEGIN
SELECT * FROM Member WHERE USER_NAME = @p_DATASEARCH AND
PASSWORD = @p_CONDITION
END
ELSE
BEGIN
SET @p_DATASEARCHN = CONVERT(NUMERIC (10,0), @p_DATASEARCH)
SELECT * FROM Member WHERE Member_id = @p_DATASEARCHN
END
ELSE IF (@p_TABLE = 'CATEGORY')
SELECT * FROM CATEGORY WHERE CATEGORY_ID = @p_DATASEARCH

ELSE IF (@p_TABLE = 'AUTHOR')


SELECT * FROM AUTHOR WHERE AUTHOR_ID = @p_DATASEARCH
ELSE IF (@p_TABLE = 'BOOK_MASTER')
SELECT * FROM BOOK_MASTER WHERE BOOK_ID = @p_DATASEARCH

ELSE IF (@p_TABLE = 'BOOK_TRANSACTION')


SELECT * FROM BOOK_TRANSACTION WHERE BOOK_ID = @p_DATASEARCH

ELSE IF (@p_TABLE = 'PUBLISHER')


SELECT * FROM PUBLISHER WHERE PUBLISHER_ID = @p_DATASEARCH

END

GO
CREATE PROCEDURE [dbo].[spr_CLoadCombosLists](
@p_TABLE varchar(20))

AS
BEGIN
IF(@p_TABLE = 'CATEGORY')
SELECT CATEGORY_ID,NAME FROM CATEGORY
ELSE IF (@p_TABLE = 'AUTHOR')
SELECT AUTHOR_ID,NAME FROM AUTHOR
ELSE IF (@p_TABLE = 'PUBLISHER')
SELECT PUBLISHER_ID,NAME FROM PUBLISHER
ELSE IF (@p_TABLE = 'BOOK_MASTER')
SELECT BOOK_ID,TITLE FROM BOOK_MASTER
ELSE IF (@p_TABLE = 'MEMBER')
SELECT MEMBER_ID,(FIRST_NAME + ' ' + LAST_NAME) AS DETAIL FROM
MEMBER
ELSE IF (@p_TABLE = 'ALLRELATIONBOOK')
SELECT CATEGORY_ID,NAME, 'CATEGORY' AS CLAS FROM CATEGORY
UNION ALL(SELECT AUTHOR_ID,NAME, 'AUTHOR' AS CLAS FROM AUTHOR)
UNION ALL(SELECT PUBLISHER_ID,NAME, 'PUBLISHER' AS CLAS FROM
PUBLISHER)
ORDER BY CLAS
END

GO
CREATE FUNCTION [dbo].[GetReturnDate] (
@v_Book int
)
RETURNS smalldatetime
AS

BEGIN
DECLARE @v_ReturnDate smalldatetime
DECLARE @v_Holiday smalldatetime
DECLARE @v_Dia int

IF (@v_Book = 0) -- Borrow: only 15 Business days


BEGIN
SET @v_ReturnDate = DATEADD (day , 15 , GETDATE())
END
ELSE -- Renovate: 8 days more
BEGIN
SELECT @v_ReturnDate = RETURN_DATE
FROM BOOK_TRANSACTION
WHERE BOOK_ID = @v_Book
SET @v_ReturnDate = DATEADD (day , 8 , @v_ReturnDate)

END
-- Search Holydays
SELECT @v_Holiday = Holiday
FROM HOLIDAYS
WHERE HOLIDAY = @v_ReturnDate
SET @v_Dia = DATEPART(weekday, @v_ReturnDate)
IF ((@v_Dia <> 6) AND (@v_Dia <> 7)) -- Business day
BEGIN
IF (@v_Holiday IS NOT NULL)
BEGIN
IF ((@v_Dia = 4) OR (@v_Dia = 5))

SET @v_ReturnDate=
(@v_ReturnDate+4)
END
ELSE
SET @v_ReturnDate= (@v_ReturnDate+1)
END
ELSE
IF (@v_Dia = 6)
SET @v_ReturnDate= (@v_ReturnDate+2)
ELSE
BEGIN
SET @v_ReturnDate= (@v_ReturnDate+1)
-- Search again Holidays if it's Monday

SET @v_Holiday=NULL
SELECT @v_Holiday = HOLIDAY
FROM HOLIDAYS
WHERE HOLIDAY = @v_ReturnDate
IF (@v_Holiday IS NOT NULL)
SET @v_ReturnDate= (@v_ReturnDate+1)
END
RETURN @v_ReturnDate
END

GO
CREATE PROCEDURE [dbo].[spr_UChangePassword]
@Member_Id numeric(10, 0),
@Password varchar(20),
@Result int OUT
AS

SET @Result = 0

BEGIN TRY
UPDATE MEMBER SET
PASSWORD = @Password
WHERE MEMBER_ID = @Member_Id
END TRY

BEGIN CATCH
SET @Result = ERROR_NUMBER()
RETURN @Result
END CATCH

GO

CREATE PROCEDURE [dbo].[spr_SearchBook] (


@p_searchcriteria varchar(15),
@p_Data varchar(100)
)

AS
DECLARE @p_DataSearchN NUMERIC(15, 0)
BEGIN
if (@p_searchcriteria = 'Book_Id')
BEGIN
SET @p_DataSearchN = CONVERT(NUMERIC (15,0), @p_Data)

SELECT B.BOOK_ID, B.Title, A.NAME, B.Quantity,


(CASE B.Status
WHEN 0 THEN 'OK'
ELSE 'R' END) AS Status,
(CASE B.RESTRICTION
WHEN 0 THEN 'N'
ELSE 'Y' END) AS Restriction,
CONVERT(varchar (20), BT.Return_Date, 103) AS Return_Date
FROM BOOK_MASTER B
INNER JOIN AUTHOR A ON A.Author_Id = B.Author_Id
LEFT JOIN Book_Transaction BT ON BT.BOOK_Id = B.BOOK_Id
WHERE B.BOOK_ID = @p_DataSearchN
END
ELSE IF (@p_searchcriteria = 'ISBN')
BEGIN
SET @p_DataSearchN = CONVERT(NUMERIC (15,0), @p_Data)

SELECT B.BOOK_ID, B.Title, A.NAME, B.Quantity,


(CASE B.Status
WHEN 0 THEN 'OK'
ELSE 'R' END) AS Status,
(CASE B.RESTRICTION
WHEN 0 THEN 'N'
ELSE 'Y' END) AS Restriction,
CONVERT(varchar (20), BT.Return_Date, 103) AS
Return_Date
FROM BOOK_MASTER B
INNER JOIN AUTHOR A ON A.Author_Id = B.Author_Id
LEFT JOIN Book_Transaction BT ON BT.BOOK_Id = B.BOOK_Id
WHERE B.ISBN = @p_DataSearchN
END
ELSE IF (@p_searchcriteria = 'Author_Name')
SELECT B.BOOK_ID, B.Title, A.NAME, B.Quantity,
(CASE B.Status
WHEN 0 THEN 'OK'
ELSE 'R' END) AS Status,
(CASE B.RESTRICTION
WHEN 0 THEN 'N'
ELSE 'Y' END) AS Restriction,
CONVERT(varchar (20), BT.Return_Date, 103) AS Return_Date
FROM BOOK_MASTER B
INNER JOIN AUTHOR A ON A.Author_Id = B.Author_Id
LEFT JOIN Book_Transaction BT ON BT.BOOK_Id = B.BOOK_Id
WHERE A.NAME LIKE '%' + @p_Data + '%'
ELSE IF (@p_searchcriteria = 'Book_Name')
SELECT B.BOOK_ID, B.Title, A.NAME, B.Quantity,
(CASE B.Status
WHEN 0 THEN 'OK'
ELSE 'R' END) AS Status,
(CASE B.RESTRICTION
WHEN 0 THEN 'N'
ELSE 'Y' END) AS Restriction,
CONVERT(varchar (20), BT.Return_Date, 103) AS Return_Date
FROM BOOK_MASTER B
INNER JOIN AUTHOR A ON A.Author_Id = B.Author_Id
LEFT JOIN Book_Transaction BT ON BT.BOOK_Id = B.BOOK_Id
WHERE B.TITLE LIKE '%' + @p_Data + '%'
END

GO
CREATE PROCEDURE [dbo].[spr_DeleteRecord](
@p_Table varchar(30),
@p_DataRemove int,
@p_Result int OUT)

AS
DECLARE @CheckIntegrity int
SET @CheckIntegrity = NULL
SET @p_Result = 0

BEGIN
IF (@p_Table = 'AUTHOR')
BEGIN
SELECT @CheckIntegrity=AUTHOR_ID FROM BOOK_MASTER WHERE AUTHOR_ID =
@p_DataRemove
IF (@CheckIntegrity IS NOT NULL)
SET @p_Result = 1
ELSE
DELETE FROM AUTHOR WHERE AUTHOR_ID = @p_DataRemove
END
ELSE IF (@p_Table = 'PUBLISHER')
BEGIN
SELECT @CheckIntegrity=PUBLISHER_ID FROM BOOK_MASTER
WHERE PUBLISHER_ID = @p_DataRemove
IF (@CheckIntegrity IS NOT NULL)
SET @p_Result = 1
ELSE
DELETE FROM PUBLISHER WHERE PUBLISHER_ID =
@p_DataRemove
END
ELSE IF (@p_Table = 'CATEGORY')
BEGIN
SELECT @CheckIntegrity=CATEGORY_ID FROM BOOK_MASTER
WHERE CATEGORY_ID = @p_DataRemove
IF (@CheckIntegrity IS NOT NULL)
SET @p_Result = 1
ELSE
DELETE FROM CATEGORY WHERE CATEGORY_ID =
@p_DataRemove
END
ELSE IF (@p_Table = 'BOOK_MASTER')
BEGIN
SELECT @CheckIntegrity=BOOK_ID FROM BOOK_TRANSACTION
WHERE BOOK_ID = @p_DataRemove
IF (@CheckIntegrity IS NOT NULL)
SET @p_Result = 1
ELSE
DELETE FROM BOOK_MASTER WHERE BOOK_ID =
@p_DataRemove
END
ELSE IF (@p_Table = 'MEMBER')
BEGIN
SELECT @CheckIntegrity=MEMBER_ID FROM MEMBER WHERE
MEMBER_ID = @p_DataRemove
IF (@CheckIntegrity IS NOT NULL)
SET @p_Result = 1
ELSE
DELETE FROM MEMBER WHERE MEMBER_ID = @p_DataRemove
END
--ELSE IF (@p_Table = 'HOLIDAYS')
--DELETE FROM HOLIDAYS WHERE HOLIDAY = CONVERT(@p_DataRemove,
smalldatetime)

END

GO
CREATE PROCEDURE [dbo].[spr_CValidateEmptyTable]
(
@p_Table varchar(30),
@p_Result INT OUT
)

AS

BEGIN
SET @p_Result = 0
IF (@p_Table = 'BOOKRELATION')
BEGIN
SELECT @p_Result = COUNT(*) FROM CATEGORY
IF (@p_Result = 0)
SET @p_Result = -1
ELSE
BEGIN
SELECT @p_Result = COUNT(*) FROM AUTHOR
IF (@p_Result = 0)
SET @p_Result = -2
ELSE
BEGIN
SELECT @p_Result = COUNT(*) FROM PUBLISHER

IF (@p_Result = 0)
SET @p_Result = -3
END
END
END
ELSE IF (@p_Table = 'BOOK_MASTER')
SELECT @p_Result = COUNT(*) FROM BOOK_MASTER
WHERE NOT EXISTS
(SELECT BOOK_ID
FROM BOOK_TRANSACTION
WHERE (BOOK_TRANSACTION.BOOK_ID = BOOK_ID))
ELSE IF (@p_Table = 'AUTHOR')
SELECT @p_Result = COUNT(*) FROM AUTHOR
ELSE IF (@p_Table = 'PUBLISHER')
SELECT @p_Result = COUNT(*) FROM PUBLISHER
ELSE IF (@p_Table = 'CATEGORY')
SELECT @p_Result = COUNT(*) FROM CATEGORY

END

GO
CREATE PROCEDURE [dbo].[Spr_BookTransaction](
@p_ACTION char (1), -- Only B = Borrow, R = Renovate, Other = Delete
@p_BOOK_ID int,
@p_MEMBER_ID numeric(10, 0),
@p_OBSERVATION varchar(255),
@p_USERCONECTED numeric(10, 0),
@p_ANSWER varchar(150) OUT
)

AS
DECLARE @v_Book int
DECLARE @v_Status int
DECLARE @v_Restriction bigint
DECLARE @v_Borrow int
DECLARE @v_DocumentSearch numeric(10, 0)
DECLARE @v_DateDevolution smalldatetime
DECLARE @v_DateRenovate smalldatetime
DECLARE @v_Renovate bigint
DECLARE @v_Defaulter bigint
DECLARE @v_SanctionDate smalldatetime
DECLARE @v_Member numeric(10, 0)
DECLARE @v_DevolutionControl smalldatetime
DECLARE @v_Holiday smalldatetime
DECLARE @v_SanctionDays int
DECLARE @v_BooksQuantity int
DECLARE @v_DateToday smalldatetime
DECLARE @v_Day varchar(15)
DECLARE @v_UserName varchar(20)
DECLARE @v_Title varchar(50)

SET @v_Book = NULL


SET @v_Status = 0
SET @v_Restriction = 0
SET @v_Borrow = NULL
SET @v_DocumentSearch = NULL
SET @v_DateDevolution = NULL
SET @v_DateRenovate = NULL
SET @v_Renovate = 0
SET @v_Defaulter = 0
SET @v_SanctionDate = NULL
SET @v_Member = NULL
SET @v_DevolutionControl = NULL
SET @v_Holiday = NULL
SET @v_SanctionDays = 0
SET @v_BooksQuantity = 0
SET @v_DateToday = getdate()
SET @v_Day = NULL
SET @v_UserName = NULL
SET @v_Title = NULL

BEGIN
-- Search Books
SELECT @v_Book =BOOK_ID, @v_Restriction =RESTRICTION, @v_Status=STATUS,
@v_Title = TITLE
FROM BOOK_MASTER
WHERE BOOK_ID = @p_BOOK_ID;
IF (@v_Book IS NOT NULL) -- If the book exists
BEGIN
-- Search Borrows
SELECT @v_Borrow=BOOK_ID, @v_DocumentSearch=MEMBER_ID,
@v_DateDevolution=RETURN_DATE, @v_Renovate=RENOVATE
FROM BOOK_TRANSACTION
WHERE BOOK_ID = @p_BOOK_ID;
IF (@v_Borrow IS NOT NULL) -- If exists
BEGIN
IF (@p_ACTION = 'B') -- Loan Request
SET @p_ANSWER= 'Book not available'

ELSE
BEGIN
-- Search Members
SELECT @v_Member=MEMBER_ID,
@v_SanctionDate=SANCTION_DATE, @v_Defaulter=DEFAULTER, @v_UserName = USER_NAME
FROM MEMBER
WHERE MEMBER_ID = @v_DocumentSearch
IF (@p_ACTION = 'R') -- Renovate
BEGIN
IF (@v_Defaulter = 0) --
If member is not defaulter
BEGIN

IF
(@v_Renovate = 0) -- If they renewed for the first time

BEGIN

SET
@v_DateRenovate = dbo.GetReturnDate(@p_BOOK_ID)

UPDATE BOOK_TRANSACTION SET

RENOVATE = 1,
RETURN_DATE = @v_DateRenovate,

LAST_UPD_BY = @p_USERCONECTED,

MODIFIED_DATE = getdate()
WHERE
BOOK_ID = @p_BOOK_ID
SET @p_ANSWER= '|The
loan was renewed successfully|' + CONVERT(varchar (20), @v_DateRenovate, 103)
END
ELSE
SET @p_ANSWER= 'The loan can
be renewed only once'
END
ELSE
SET @p_ANSWER= 'The member is
penalized'
END
ELSE -- Loan Request Removal
BEGIN
UPDATE BOOK_TRANSACTION SET -- Mark who
removed
LAST_UPD_BY = @p_USERCONECTED,
MODIFIED_DATE = getDate()
WHERE BOOK_ID = @p_BOOK_ID

-- LLenar Respaldo
INSERT INTO BOOK_TRANSACTION_BACKUP SELECT
* FROM BOOK_TRANSACTION WHERE BOOK_ID = @p_BOOK_ID
-- Eliminar Prestamo
DELETE FROM BOOK_TRANSACTION WHERE BOOK_ID
= @p_BOOK_ID
IF (@v_DateDevolution < getdate()) --
Sanction
BEGIN

SET @v_SanctionDays = DATEDIFF


(day, @v_DateDevolution , @v_DateToday )
SET @v_SanctionDays=
(@v_SanctionDays * 3)
IF (@v_SanctionDate IS NOT NULL)
SET @v_SanctionDate =
DATEADD(day, @v_SanctionDays, @v_SanctionDate )

ELSE
SET @v_SanctionDate =
DATEADD(day, @v_SanctionDays, @v_DateToday )

END
UPDATE MEMBER SET
SANCTION_DATE =
@v_SanctionDate,
LAST_UPD_BY =
@p_USERCONECTED,
MODIFIED_DATE =
getdate()
WHERE MEMBER_ID =
@v_DocumentSearch
SET @p_ANSWER = 'The loan was removed
successfully'
END
END
END
ELSE
IF (@p_ACTION = 'B')
BEGIN
SET @v_DocumentSearch = @p_MEMBER_ID
-- Search Member
SELECT @v_Member=MEMBER_ID,
@v_SanctionDate=SANCTION_DATE, @v_Defaulter=DEFAULTER, @v_UserName = USER_NAME
FROM MEMBER
WHERE MEMBER_ID = @v_DocumentSearch
IF (@v_Member IS NOT NULL) -- If
member exists
BEGIN
IF (@v_Defaulter = 0) --
If member is not defaulter
BEGIN

SELECT
@v_BooksQuantity = COUNT(*) FROM BOOK_TRANSACTION WHERE MEMBER_ID = @p_MEMBER_ID
IF
(@v_BooksQuantity < 3)
BEGIN

IF (@v_Restriction = 0) -- if not book of internal consult

BEGIN

IF (@v_Status = 0) -- If Status = OK

BEGIN

SET @v_DevolutionControl = dbo.GetReturnDate(0)

INSERT INTO
BOOK_TRANSACTION(BOOK_ID,MEMBER_ID,RETURN_DATE,OBSERVATION,CREATED_BY,LAST_UPD_BY)

VALUES(@p_BOOK_ID,@p_MEMBER_ID,@v_DevolutionControl,@p_OBSERVATION,@p_USERCONECTED,
@p_USERCONECTED)

SET @p_ANSWER= '|The loan was recorded successfully|' +


@v_UserName + '|'+ @V_Title + '|'+CONVERT(varchar (20), @v_DevolutionControl, 103)

END
ELSE

SET @p_ANSWER = 'The book is in repair'

END
ELSE

SET @p_ANSWER = 'Book internal consultation'


END
ELSE
SET
@p_ANSWER = 'The number of books on loan exceeds the allowed limit'
END
ELSE
SET @p_ANSWER = 'The
member is penalized'
END
ELSE
SET @p_ANSWER= 'The member does not
exist'
END
ELSE
SET @p_ANSWER= 'The action is invalid'
END
ELSE
SET @p_ANSWER = 'The book does not exist'
END
/*=================================================================
Collection of values returned by the procedure
==================================================================
1. Book not available
2. The member is penalized
3. Book internal consultation
4. The book is in repair
5. The book does not exist
6. The member does not exist
7. The action is invalid
8. The loan can be renewed only once
9. The number of books on loan exceeds the allowed limit
10. The loan was recorded successfully
11. The loan was renewed successfully
12. The loan was removed successfully

***********************
Sequence Actions
***********************

Search Book
IF exists THEN
Search Loan
IF exists THEN
IF (Action = B) THEN
Message = "Book not available"
ELSE
Search Member
IF (Action = R) THEN
IF (Defaulter = 0) THEN
IF (Renovate = 0) THEN
Message= "The loan was renewed successfully"
ELSE
Message= "The loan can be renewed only once"
END IF
ELSE
Message= "The member is penalized"
END IF
ELSE
Message= "The loan was removed successfully"
END IF
END IF
ELSE
Search Member
IF exists THEN
IF (Action = B) THEN
IF (Defaulter = 0) THEN
IF (Books Quantity < 3) THEN
IF (Restriction = 0) THEN
IF (Status = Ok) THEN
Message= "The loan was recorded successfully"
ELSE
Message= "The book is in repair"
END IF
ELSE
Message= "Book internal consultation"
END IF
ELSE
Message= "The number of books on loan exceeds the allowed
limit"
END IF
ELSE
Message= "The member is penalized"
END IF
ELSE
Message= "The action is invalid"
END IF
ELSE
Message= "The member does not exist"
END IF
END IF
ELSE
Message= "The book does not exist"
END IF
*/

GO
CREATE PROCEDURE [dbo].[spr_UpdateDefaulter]
-- This procedure should be created as a job to run daily

AS

BEGIN
-- Update Defaulter Status
UPDATE MEMBER
SET DEFAULTER = 1
WHERE MEMBER_ID IN(SELECT MEMBER_ID FROM BOOK_TRANSACTION WHERE RETURN_DATE
< GETDATE())

-- Delete Sanctions
UPDATE MEMBER
SET DEFAULTER = 0,
SANCTION_DATE = NULL
WHERE SANCTION_DATE IS NOT NULL AND SANCTION_DATE < GETDATE()

END

Potrebbero piacerti anche