344 lines
8.7 KiB
Transact-SQL
344 lines
8.7 KiB
Transact-SQL
CREATE DATABASE BLUEFIREDATABASE
|
|
USE BLUEFIREDATABASE
|
|
|
|
---------------------------------------------------------------------------------------------------
|
|
--Reset Identity
|
|
|
|
-- DBCC CHECKIDENT ('Emp', RESEED, 1)
|
|
|
|
----------------------------------------------------------------------------------------------------
|
|
|
|
|
|
CREATE TABLE [Admin](
|
|
AdminID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
|
|
AdminName VARCHAR(50),
|
|
AdminPassword VARCHAR(50)
|
|
)
|
|
INSERT INTO [Admin] VALUES ('admin', 'admin123');
|
|
INSERT INTO [Admin] VALUES ('adminHero', 'admin321');
|
|
GO
|
|
CREATE TABLE [User](
|
|
UserID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
|
|
[Password] VARCHAR(50),
|
|
UserName VARCHAR(50),
|
|
DOB VARCHAR(50),
|
|
Gender VARCHAR(50),
|
|
[Address] VARCHAR(50),
|
|
Phone VARCHAR(50),
|
|
Email VARCHAR(50)
|
|
)
|
|
--DBCC CHECKIDENT ('[User]', RESEED, 0)
|
|
|
|
INSERT INTO [User] VALUES('kevin123','Kevin','11/11/2000','Male','SS Street','082211323456','Kevin@gmail.com')
|
|
INSERT INTO [User] VALUES('budi321','Budi','08/12/2001','Male','M Street','082211234533','Budi@gmail.com')
|
|
INSERT INTO [User] VALUES('Julia111','Julia','3/1/1999','Female','K Street','089098123849','Julia@gmail.com')
|
|
GO
|
|
CREATE TABLE Country(
|
|
CountryID INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
|
|
CountryName VARCHAR (50)
|
|
)
|
|
|
|
INSERT INTO Country VALUES('Indonesia')
|
|
INSERT INTO Country VALUES('Singapore')
|
|
INSERT INTO Country VALUES('India')
|
|
GO
|
|
CREATE TABLE City(
|
|
CityID INT IDENTITY (1,1) PRIMARY KEY NOT NULL,
|
|
CountryID INT FOREIGN KEY REFERENCES Country(CountryID),
|
|
CityName VARCHAR (50),
|
|
AddressDetail VARCHAR(50)
|
|
)
|
|
INSERT INTO City VALUES(1,'Jakarta','Jakarta Selatan')
|
|
INSERT INTO City VALUES(2,'Singapore','Singapore')
|
|
INSERT INTO City VALUES(3,'Bengaluru','Bengaluru')
|
|
GO
|
|
CREATE TABLE Job(
|
|
JobID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
|
|
JobName VARCHAR(50),
|
|
CityID INT FOREIGN KEY REFERENCES city(cityId),
|
|
JobLevel VARCHAR(50),
|
|
Deadline VARCHAR (50),
|
|
JobDescription VARCHAR(50),
|
|
)
|
|
INSERT INTO Job VALUES('IT Infrastructure',1,'Easy','12/12/2012','need computer knowledge')
|
|
INSERT INTO Job VALUES('Trust and Safety Associate',2,'Medium','12/01/2013','cyber knowledge')
|
|
INSERT INTO Job VALUES('HR System Analyst',1,'Medium','8/1/2012','Communication knowledge')
|
|
GO
|
|
CREATE TABLE UserBookmark(
|
|
BookmarkID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
|
|
UserID INT FOREIGN KEY REFERENCES [User](userId) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
JobID INT FOREIGN KEY REFERENCES Job(jobId) ON UPDATE CASCADE ON DELETE CASCADE
|
|
)
|
|
INSERT INTO UserBookmark VALUES(1,1)
|
|
INSERT INTO UserBookmark VALUES(1,2)
|
|
INSERT INTO UserBookmark VALUES(2,2)
|
|
INSERT INTO UserBookmark VALUES(2,3)
|
|
INSERT INTO UserBookmark VALUES(3,3)
|
|
GO
|
|
CREATE TABLE ApplicationEntry(
|
|
EntryID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
|
|
UserID INT FOREIGN KEY REFERENCES [User](userId) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
JobID INT FOREIGN KEY REFERENCES Job(jobId) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
Email VARCHAR(50),
|
|
PrevCompanyName VARCHAR(50),
|
|
PrevPosition VARCHAR(50),
|
|
UniversityName VARCHAR(50),
|
|
CvLink VARCHAR(50),
|
|
PortofolioLink VARCHAR(50),
|
|
StatusEntry VARCHAR(50)
|
|
)
|
|
INSERT INTO ApplicationEntry VALUES(1,1,'K@k.com','Grab','Enterprise Security Lead','ITS','www.cvUser1.com','www.portUser1.com','pending')
|
|
INSERT INTO ApplicationEntry VALUES(2,2,'B@b.coms','Uber','Head of Data Science','Sunib','www.cvUser2.com','www.portUser2.com','pending')
|
|
GO
|
|
---------------------------
|
|
SELECT*FROM [Admin]
|
|
SELECT*FROM [User]
|
|
SELECT*FROM Country
|
|
SELECT*FROM City
|
|
SELECT*FROM Job
|
|
SELECT*FROM UserBookmark
|
|
SELECT*FROM ApplicationEntry
|
|
GO
|
|
----------------------------------
|
|
---------STORED PROCEDURES----------
|
|
----------------------------------
|
|
|
|
--Done
|
|
CREATE PROC sp_getAllCity
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT CityID,CountryID,CityName,AddressDetail FROM City
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_insertAdmin
|
|
@password VARCHAR(50),
|
|
@name VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
INSERT INTO [Admin] (AdminName,AdminPassword)
|
|
VALUES (@name,@password)
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_insertUser
|
|
@password VARCHAR(50),
|
|
@name VARCHAR(50),
|
|
@DOB VARCHAR(50),
|
|
@gender VARCHAR(50),
|
|
@address VARCHAR(50),
|
|
@phone VARCHAR(50),
|
|
@email VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
INSERT INTO [User] ([Password],UserName,DOB,Gender,Address,Phone,Email)
|
|
VALUES (@password, @name, @DOB, @gender, @address, @phone, @email)
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_loginUser
|
|
@name VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT UserName FROM [User]
|
|
WHERE ([User].UserName=@name)
|
|
END
|
|
--Done
|
|
GO
|
|
CREATE PROC sp_loginAdmin
|
|
@name VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT AdminName FROM [Admin]
|
|
WHERE ([Admin].AdminName=@name)
|
|
END
|
|
|
|
---Done
|
|
GO
|
|
CREATE PROC sp_insertJob
|
|
@name VARCHAR(50),
|
|
@cityId INT,
|
|
@jobLevel VARCHAR(50),
|
|
@deadline VARCHAR (50),
|
|
@description VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
INSERT INTO Job (JobName,CityID,JobLevel,Deadline,JobDescription)
|
|
VALUES(@name, @cityId, @jobLevel, @deadline, @description)
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_deleteJob
|
|
@jobId INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
DELETE FROM Job
|
|
WHERE JobID = @jobId
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_insertBookmark
|
|
@userId INT,
|
|
@jobId INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
INSERT INTO UserBookmark (UserID,JobID)
|
|
VALUES(@userId, @jobId)
|
|
END
|
|
-----------------------------------------
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_getBookmark
|
|
@userId INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT ub.BookmarkID,j.JobID,JobName,CountryName,CityName, COUNT (EntryID) AS ApplicantCount, (CASE WHEN CONVERT(DATE,Deadline) > GETDATE() THEN 1 ELSE 0 END ) As IsOpen FROM Job j
|
|
JOIN UserBookmark ub
|
|
ON j.jobId = ub.jobId
|
|
LEFT JOIN ApplicationEntry ae
|
|
ON ae.JobID=j.JobID
|
|
JOIN City ci
|
|
ON ci.CityID = j.CityID
|
|
JOIN Country co
|
|
ON ci.CountryID = co.CountryID
|
|
WHERE ub.userId = @userId
|
|
|
|
GROUP BY ub.BookmarkID,j.JobID,JobName,CountryName,CityName,Deadline
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_deleteBookmark
|
|
@bookmarkID INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
DELETE FROM UserBookmark WHERE BookmarkID = @bookmarkID
|
|
END
|
|
GO
|
|
--DONE
|
|
CREATE PROC sp_insertEntry
|
|
@userId INT,
|
|
@jobId INT,
|
|
@email VARCHAR(50),
|
|
@prevCompanyName VARCHAR(50),
|
|
@prevPosition VARCHAR(50),
|
|
@universityName VARCHAR(50),
|
|
@cvLink VARCHAR(50),
|
|
@portofolioLink VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
INSERT INTO ApplicationEntry (UserID,JobID,Email,PrevCompanyName,PrevPosition,UniversityName,CvLink,PortofolioLink,StatusEntry)
|
|
VALUES(@userId, @jobId, @email, @prevCompanyName, @prevPosition, @universityName, @cvLink, @portofolioLink, 'pending')
|
|
|
|
END
|
|
GO
|
|
--DONE
|
|
CREATE PROC sp_getAllCountry
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT CountryName,CountryID
|
|
FROM Country
|
|
END
|
|
GO
|
|
--DONE
|
|
CREATE PROC sp_getAllJob
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT JobName,JobDescription,JobLevel,JobID,Deadline,CityID FROM Job
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_denyApplicationEntry
|
|
@applicationID INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
UPDATE ApplicationEntry SET StatusEntry='Denied'
|
|
WHERE EntryID = @applicationID
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_getJob
|
|
@jobId INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT j.JobID,JobName,co.CountryID,CountryName,ci.CityID,CityName,AddressDetail, Deadline,JobLevel,JobDescription, COUNT (EntryID) AS ApplicantCount
|
|
FROM [Job] j
|
|
LEFT JOIN ApplicationEntry ae
|
|
ON ae.JobID=j.JobID
|
|
JOIN City ci
|
|
ON ci.CityID = j.CityID
|
|
JOIN Country co
|
|
ON ci.CountryID = co.CountryID
|
|
WHERE j.JobID = @jobID
|
|
GROUP BY j.JobID,JobName,co.CountryID,CountryName,ci.CityID,CityName,Deadline,JobLevel,JobDescription,AddressDetail
|
|
END
|
|
|
|
--Done
|
|
GO
|
|
CREATE PROC sp_hiredApplicationEntry
|
|
@applicationID INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
UPDATE ApplicationEntry SET StatusEntry='Accepted'
|
|
WHERE EntryID = @applicationID
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_getAllEntry
|
|
-- @userid INT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT EntryID,u.UserID,JobID,ae.Email,PrevCompanyName,PrevPosition,UniversityName,CvLink,PortofolioLink,StatusEntry FROM ApplicationEntry ae
|
|
JOIN [User] u
|
|
ON ae.UserID=u.UserID
|
|
-- WHERE UserID = @userID
|
|
END
|
|
----------------------------------------
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_getListJob
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SELECT j.JobID,JobName,co.CountryID,CountryName,ci.CityID, CityName, COUNT (EntryID) AS ApplicantCount, (CASE WHEN CONVERT(DATE,Deadline) > GETDATE() THEN 1 ELSE 0 END ) As IsOpen
|
|
FROM Job j
|
|
LEFT JOIN ApplicationEntry ae
|
|
ON ae.JobID=j.JobID
|
|
JOIN City ci
|
|
ON ci.CityID = j.CityID
|
|
JOIN Country co
|
|
ON ci.CountryID = co.CountryID
|
|
GROUP BY j.JobID,JobName,co.CountryID,CountryName,ci.CityID,CityName,Deadline
|
|
END
|
|
GO
|
|
--Done
|
|
CREATE PROC sp_updateJob
|
|
@jobId INT,
|
|
@name VARCHAR(50),
|
|
@cityId INT,
|
|
@jobLevel VARCHAR(50),
|
|
@deadline VARCHAR (50),
|
|
@description VARCHAR(50)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
UPDATE Job SET JobName=@name,CityID=@cityId,JobLevel=@jobLevel,Deadline=@deadline,JobDescription=@description
|
|
WHERE JobID=@jobId
|
|
END
|
|
GO |