Developing Book My Seat Application In AngularJS And ASP.NET- Part Three

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] [dateNULL,  
  86. [timeslot] [intNULL,  
  87. [seatno] [intNULL,  
  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 = ONON [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.   
  128. AS  
  129. BEGIN  
  130. -- Declare the return variable here  
  131. DECLARE @SlotNum int  
  132.   
  133. -- Add the T-SQL statements to compute the return value here  
  134. SELECT @SlotNum=timeslot from UserDetails where username= @UserName  
  135.   
  136.   
  137. select isnull(@SlotNum,-1)  
  138.   
  139. -- Return the result of the function  
  140. --RETURN @SlotNum  
  141. END  
  142. GO  
  143. /****** Object: StoredProcedure [dbo].[sp_ShowBookDetail] Script Date: 10/13/2016 15:49:28 ******/  
  144. SET ANSI_NULLS ON  
  145. GO  
  146. SET QUOTED_IDENTIFIER ON  
  147. GO  
  148. CREATE PROCEDURE [dbo].[sp_ShowBookDetail]  
  149.   
  150. AS  
  151. BEGIN   
  152.   
  153. SELECT username,currentday,timeslot,seatno from UserDetails  
  154. END  
  155. GO  
  156. /****** Object: StoredProcedure [dbo].[sp_GetSeatDetail] Script Date: 10/13/2016 15:49:28 ******/  
  157. SET ANSI_NULLS ON  
  158. GO  
  159. SET QUOTED_IDENTIFIER ON  
  160. GO  
  161. -- =============================================  
  162. -- Author: <Author,,Name>  
  163. -- Create date: <Create Date,,>  
  164. -- Description: <Description,,>  
  165. -- =============================================  
  166. CREATE PROCEDURE [dbo].[sp_GetSeatDetail]  
  167. @TimeSlot int,  
  168. @SeatNo int  
  169. AS  
  170. BEGIN  
  171. select username from userdetails where timeslot=@TimeSlot and seatno=@SeatNo and datediff(D,currentday,getdate())=0  
  172. END  
  173. GO  
  174. /****** Object: StoredProcedure [dbo].[sp_GetMySeat] Script Date: 10/13/2016 15:49:28 ******/  
  175. SET ANSI_NULLS ON  
  176. GO  
  177. SET QUOTED_IDENTIFIER ON  
  178. GO  
  179. CREATE PROCEDURE [dbo].[sp_GetMySeat]  
  180. @timeslotid int  
  181. AS  
  182. BEGIN  
  183. select Seatno from UserDetails where datediff(D,currentday,getdate())=0 and timeslot=@timeslotid  
  184.   
  185.   
  186. END  
  187. GO  
  188. /****** Object: StoredProcedure [dbo].[sp_DeleteSeat] Script Date: 10/13/2016 15:49:28 ******/  
  189. SET ANSI_NULLS ON  
  190. GO  
  191. SET QUOTED_IDENTIFIER ON  
  192. GO  
  193. CREATE PROCEDURE [dbo].[sp_DeleteSeat]  
  194. @SeatNo int,  
  195. @SlotNo int  
  196. AS  
  197. BEGIN  
  198. -- SET NOCOUNT ON added to prevent extra result sets from  
  199. -- interfering with SELECT statements.  
  200. SET NOCOUNT ON;  
  201.   
  202. -- Insert statements for procedure here  
  203. delete from userdetails where seatno=@seatNo and timeslot=@SlotNo  
  204. select 1  
  205.   
  206. END  
  207. GO  
  208. /****** Object: StoredProcedure [dbo].[sp_BookMySeat] Script Date: 10/13/2016 15:49:28 ******/  
  209. SET ANSI_NULLS ON  
  210. GO  
  211. SET QUOTED_IDENTIFIER ON  
  212. GO  
  213. CREATE PROCEDURE [dbo].[sp_BookMySeat]  
  214. @UserName nvarchar(500),  
  215. @TimeSlot int,  
  216. @SeatNo int  
  217. AS  
  218. BEGIN  
  219. insert into UserDetails values(@username,2,getdate(),@TimeSlot,@SeatNo)  
  220. select 1  
  221. --select * from UserDetails where datediff(D,currentday,getdate())=1 and timeslot=@timeslotid  
  222.   
  223.   
  224. END  
  225. GO  
  226. /****** Object: UserDefinedFunction [dbo].[GetBookedSlot] Script Date: 10/13/2016 15:49:29 ******/  
  227. SET ANSI_NULLS ON  
  228. GO  
  229. SET QUOTED_IDENTIFIER ON  
  230. GO  
  231. CREATE FUNCTION [dbo].[GetBookedSlot]   
  232. (  
  233. @UserEmailID nvarchar(50)  
  234. )  
  235. RETURNS int  
  236. AS  
  237. BEGIN  
  238. -- Declare the return variable here  
  239. DECLARE @SlotNum int  
  240.   
  241. -- Add the T-SQL statements to compute the return value here  
  242. SELECT @SlotNum= count(timeslot) from UserDetails where userid= @UserEmailID  
  243.   
  244. -- Return the result of the function  
  245. RETURN @SlotNum  
  246. END  
  247. 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.