Here, I’ve merely thought to write my thoughts about hands-on Angular. This is the third article, which states that you can manage the database and stored procedures.

This is the technology stack for BookMySeat library Application, as shown below.



In the first article, I have shared the technology and other brief information about the components used.

This article elaborates about the database structure, which will be used within this Application, as given below.



If you look at the image shown above, all the columns names are self-explanatory.

Kindly find the complete script for the database, as given below.
  1. USE [master]
  2. GO
  3. /****** Object: Database [BookMySeat] Script Date: 10/13/2016 15:49:26 ******/
  4. CREATE DATABASE [BookMySeat] ON PRIMARY
  5. ( NAME = N'BookMySeat', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\BookMySeat.mdf' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
  6. LOG ON
  7. ( NAME = N'BookMySeat_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\BookMySeat_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
  8. GO
  9. ALTER DATABASE [BookMySeat] SET COMPATIBILITY_LEVEL = 100
  10. GO
  11. IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
  12. begin
  13. EXEC [BookMySeat].[dbo].[sp_fulltext_database] @action = 'enable'
  14. end
  15. GO
  16. ALTER DATABASE [BookMySeat] SET ANSI_NULL_DEFAULT OFF
  17. GO
  18. ALTER DATABASE [BookMySeat] SET ANSI_NULLS OFF
  19. GO
  20. ALTER DATABASE [BookMySeat] SET ANSI_PADDING OFF
  21. GO
  22. ALTER DATABASE [BookMySeat] SET ANSI_WARNINGS OFF
  23. GO
  24. ALTER DATABASE [BookMySeat] SET ARITHABORT OFF
  25. GO
  26. ALTER DATABASE [BookMySeat] SET AUTO_CLOSE OFF
  27. GO
  28. ALTER DATABASE [BookMySeat] SET AUTO_CREATE_STATISTICS ON
  29. GO
  30. ALTER DATABASE [BookMySeat] SET AUTO_SHRINK OFF
  31. GO
  32. ALTER DATABASE [BookMySeat] SET AUTO_UPDATE_STATISTICS ON
  33. GO
  34. ALTER DATABASE [BookMySeat] SET CURSOR_CLOSE_ON_COMMIT OFF
  35. GO
  36. ALTER DATABASE [BookMySeat] SET CURSOR_DEFAULT GLOBAL
  37. GO
  38. ALTER DATABASE [BookMySeat] SET CONCAT_NULL_YIELDS_NULL OFF
  39. GO
  40. ALTER DATABASE [BookMySeat] SET NUMERIC_ROUNDABORT OFF
  41. GO
  42. ALTER DATABASE [BookMySeat] SET QUOTED_IDENTIFIER OFF
  43. GO
  44. ALTER DATABASE [BookMySeat] SET RECURSIVE_TRIGGERS OFF
  45. GO
  46. ALTER DATABASE [BookMySeat] SET DISABLE_BROKER
  47. GO
  48. ALTER DATABASE [BookMySeat] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
  49. GO
  50. ALTER DATABASE [BookMySeat] SET DATE_CORRELATION_OPTIMIZATION OFF
  51. GO
  52. ALTER DATABASE [BookMySeat] SET TRUSTWORTHY OFF
  53. GO
  54. ALTER DATABASE [BookMySeat] SET ALLOW_SNAPSHOT_ISOLATION OFF
  55. GO
  56. ALTER DATABASE [BookMySeat] SET PARAMETERIZATION SIMPLE
  57. GO
  58. ALTER DATABASE [BookMySeat] SET READ_COMMITTED_SNAPSHOT OFF
  59. GO
  60. ALTER DATABASE [BookMySeat] SET HONOR_BROKER_PRIORITY OFF
  61. GO
  62. ALTER DATABASE [BookMySeat] SET READ_WRITE
  63. GO
  64. ALTER DATABASE [BookMySeat] SET RECOVERY FULL
  65. GO
  66. ALTER DATABASE [BookMySeat] SET MULTI_USER
  67. GO
  68. ALTER DATABASE [BookMySeat] SET PAGE_VERIFY CHECKSUM
  69. GO
  70. ALTER DATABASE [BookMySeat] SET DB_CHAINING OFF
  71. GO
  72. EXEC sys.sp_db_vardecimal_storage_format N'BookMySeat', N'ON'
  73. GO
  74. USE [BookMySeat]
  75. GO
  76. /****** Object: Table [dbo].[UserDetails] Script Date: 10/13/2016 15:49:27 ******/
  77. SET ANSI_NULLS ON
  78. GO
  79. SET QUOTED_IDENTIFIER ON
  80. GO
  81. CREATE TABLE [dbo].[UserDetails](
  82. [id] [int] IDENTITY(1,1) NOT NULL,
  83. [username] [nvarchar](20) NOT NULL,
  84. [userid] [nchar](10) NOT NULL,
  85. [currentday] [date] NULL,
  86. [timeslot] [int] NULL,
  87. [seatno] [int] NULL,
  88. CONSTRAINT [PK_UserDetails] PRIMARY KEY CLUSTERED
  89. (
  90. [id] ASC
  91. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  92. ) ON [PRIMARY]
  93. GO
  94. SET IDENTITY_INSERT [dbo].[UserDetails] ON
  95. INSERT [dbo].[UserDetails] ([id], [username], [userid], [currentday], [timeslot], [seatno]) VALUES (28, N'ABhibav', N'2 ', CAST(0xDA3B0B00 AS Date), 100, 13)
  96. INSERT [dbo].[UserDetails] ([id], [username], [userid], [currentday], [timeslot], [seatno]) VALUES (29, N'abhi', N'2 ', CAST(0xDA3B0B00 AS Date), 100, 26)
  97. INSERT [dbo].[UserDetails] ([id], [username], [userid], [currentday], [timeslot], [seatno]) VALUES (30, N'abhinavtesting', N'2 ', CAST(0xDA3B0B00 AS Date), 100, 3)
  98. INSERT [dbo].[UserDetails] ([id], [username], [userid], [currentday], [timeslot], [seatno]) VALUES (31, N'sachi', N'2 ', CAST(0xDA3B0B00 AS Date), 100, 9)
  99. INSERT [dbo].[UserDetails] ([id], [username], [userid], [currentday], [timeslot], [seatno]) VALUES (32, N'nn', N'2 ', CAST(0xDA3B0B00 AS Date), 100, 8)
  100. INSERT [dbo].[UserDetails] ([id], [username], [userid], [currentday], [timeslot], [seatno]) VALUES (33, N'new', N'2 ', CAST(0xDA3B0B00 AS Date), 100, 14)
  101. SET IDENTITY_INSERT [dbo].[UserDetails] OFF
  102. /****** Object: Table [dbo].[TimeDetails] Script Date: 10/13/2016 15:49:27 ******/
  103. SET ANSI_NULLS ON
  104. GO
  105. SET QUOTED_IDENTIFIER ON
  106. GO
  107. CREATE TABLE [dbo].[TimeDetails](
  108. [timeslot] [nvarchar](500) NOT NULL
  109. ) ON [PRIMARY]
  110. GO
  111. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'100')
  112. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'120')
  113. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'140')
  114. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'200')
  115. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'220')
  116. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'240')
  117. INSERT [dbo].[TimeDetails] ([timeslot]) VALUES (N'300')
  118. /****** Object: StoredProcedure [dbo].[ValidateUser] Script Date: 10/13/2016 15:49:28 ******/
  119. SET ANSI_NULLS ON
  120. GO
  121. SET QUOTED_IDENTIFIER ON
  122. GO
  123. CREATE Procedure [dbo].[ValidateUser]
  124. (
  125. @UserName nvarchar(500)
  126. )
  127. AS
  128. BEGIN
  129. -- Declare the return variable here
  130. DECLARE @SlotNum int
  131. -- Add the T-SQL statements to compute the return value here
  132. SELECT @SlotNum=timeslot from UserDetails where username= @UserName
  133. select isnull(@SlotNum,-1)
  134. -- Return the result of the function
  135. --RETURN @SlotNum
  136. END
  137. GO
  138. /****** Object: StoredProcedure [dbo].[sp_ShowBookDetail] Script Date: 10/13/2016 15:49:28 ******/
  139. SET ANSI_NULLS ON
  140. GO
  141. SET QUOTED_IDENTIFIER ON
  142. GO
  143. CREATE PROCEDURE [dbo].[sp_ShowBookDetail]
  144. AS
  145. BEGIN
  146. SELECT username,currentday,timeslot,seatno from UserDetails
  147. END
  148. GO
  149. /****** Object: StoredProcedure [dbo].[sp_GetSeatDetail] Script Date: 10/13/2016 15:49:28 ******/
  150. SET ANSI_NULLS ON
  151. GO
  152. SET QUOTED_IDENTIFIER ON
  153. GO
  154. -- =============================================
  155. -- Author: <Author,,Name>
  156. -- Create date: <Create Date,,>
  157. -- Description: <Description,,>
  158. -- =============================================
  159. CREATE PROCEDURE [dbo].[sp_GetSeatDetail]
  160. @TimeSlot int,
  161. @SeatNo int
  162. AS
  163. BEGIN
  164. select username from userdetails where timeslot=@TimeSlot and seatno=@SeatNo and datediff(D,currentday,getdate())=0
  165. END
  166. GO
  167. /****** Object: StoredProcedure [dbo].[sp_GetMySeat] Script Date: 10/13/2016 15:49:28 ******/
  168. SET ANSI_NULLS ON
  169. GO
  170. SET QUOTED_IDENTIFIER ON
  171. GO
  172. CREATE PROCEDURE [dbo].[sp_GetMySeat]
  173. @timeslotid int
  174. AS
  175. BEGIN
  176. select Seatno from UserDetails where datediff(D,currentday,getdate())=0 and timeslot=@timeslotid
  177. END
  178. GO
  179. /****** Object: StoredProcedure [dbo].[sp_DeleteSeat] Script Date: 10/13/2016 15:49:28 ******/
  180. SET ANSI_NULLS ON
  181. GO
  182. SET QUOTED_IDENTIFIER ON
  183. GO
  184. CREATE PROCEDURE [dbo].[sp_DeleteSeat]
  185. @SeatNo int,
  186. @SlotNo int
  187. AS
  188. BEGIN
  189. -- SET NOCOUNT ON added to prevent extra result sets from
  190. -- interfering with SELECT statements.
  191. SET NOCOUNT ON;
  192. -- Insert statements for procedure here
  193. delete from userdetails where seatno=@seatNo and timeslot=@SlotNo
  194. select 1
  195. END
  196. GO
  197. /****** Object: StoredProcedure [dbo].[sp_BookMySeat] Script Date: 10/13/2016 15:49:28 ******/
  198. SET ANSI_NULLS ON
  199. GO
  200. SET QUOTED_IDENTIFIER ON
  201. GO
  202. CREATE PROCEDURE [dbo].[sp_BookMySeat]
  203. @UserName nvarchar(500),
  204. @TimeSlot int,
  205. @SeatNo int
  206. AS
  207. BEGIN
  208. insert into UserDetails values(@username,2,getdate(),@TimeSlot,@SeatNo)
  209. select 1
  210. --select * from UserDetails where datediff(D,currentday,getdate())=1 and timeslot=@timeslotid
  211. END
  212. GO
  213. /****** Object: UserDefinedFunction [dbo].[GetBookedSlot] Script Date: 10/13/2016 15:49:29 ******/
  214. SET ANSI_NULLS ON
  215. GO
  216. SET QUOTED_IDENTIFIER ON
  217. GO
  218. CREATE FUNCTION [dbo].[GetBookedSlot]
  219. (
  220. @UserEmailID nvarchar(50)
  221. )
  222. RETURNS int
  223. AS
  224. BEGIN
  225. -- Declare the return variable here
  226. DECLARE @SlotNum int
  227. -- Add the T-SQL statements to compute the return value here
  228. SELECT @SlotNum= count(timeslot) from UserDetails where userid= @UserEmailID
  229. -- Return the result of the function
  230. RETURN @SlotNum
  231. END
  232. GO
I have also attached SQL script as an attachment also.

After installing the database at your local machine, you can verify an application API integration with the database, using fiddler.



As soon as you execute it jumps into API controller and executes the written code.

code

This is how you can verify all the defined WebAPI code, using specific URLs.

Hope it’ll help you some day. Enjoy coding.