Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 83.03 KB | None | 0 0
  1. --LESSA PARENT MAT3AMALSH
  2.  
  3. CREATE DATABASE dec9b
  4. GO
  5. USE dec9b
  6. GO
  7. CREATE FUNCTION isElementary(@x VARCHAR(50)) RETURNS BIT
  8. AS BEGIN
  9.     DECLARE @r BIT
  10.     SELECT @r = is_elementary FROM Schools WHERE @x = email
  11.     RETURN @r
  12. END
  13. GO
  14.  
  15. CREATE FUNCTION hasChildInSchool(@parentEmail VARCHAR(50), @schoolEmail VARCHAR(50)) RETURNS BIT
  16. AS BEGIN
  17.     DECLARE @r2 BIT
  18.     IF EXISTS
  19.     (
  20.         SELECT *
  21.         FROM Enrolled_Students es
  22.         WHERE es.school_email = @schoolEmail AND es.parent_email = @parentEmail
  23.     )
  24.         SET @r2 = '1'
  25.     ELSE
  26.         SET @r2 = '0'
  27.     RETURN @r2
  28. END
  29. GO
  30.  
  31. CREATE FUNCTION teacherTeachesStudent (@parentEmail VARCHAR(50), @teacherEmail VARCHAR(50)) RETURNS BIT
  32. AS BEGIN
  33.     DECLARE @r3 BIT
  34.     IF EXISTS
  35.     (
  36.         SELECT *
  37.         FROM Enrolled_Students es, Schools s, Employees e
  38.         WHERE @parentEmail = es.parent_email
  39.         AND es.school_email = s.email
  40.         AND s.email = e.school_email
  41.         AND e.email = @teacherEmail
  42.         AND e.is_teacher = '1'
  43.     )
  44.     SET @r3 = '1'
  45.     ELSE
  46.     SET @r3 = '0'
  47.     RETURN @r3
  48. END
  49. GO
  50. ------------------------------------------------------------
  51. CREATE TABLE Schools
  52. (
  53.     email VARCHAR(50) PRIMARY KEY,
  54.     vision VARCHAR(300),
  55.     main_language VARCHAR (30) ,
  56.     mission VARCHAR(300),
  57.     is_national BIT DEFAULT '0',
  58.     is_international BIT DEFAULT '0',
  59.     phone_number VARCHAR(20) UNIQUE,
  60.     home_page VARCHAR(100),
  61.     fees FLOAT ,
  62.     school_address VARCHAR(100) ,
  63.     general_information VARCHAR(300),
  64.     name VARCHAR (50),
  65.     is_elementary BIT NOT NULL DEFAULT '0',
  66.     is_middle BIT NOT NULL DEFAULT '0',
  67.     is_high BIT NOT NULL DEFAULT '0',
  68.     CONSTRAINT school_type CHECK (is_national<>0 OR is_international<>0),
  69.     CONSTRAINT school_grade CHECK (is_elementary<>0 OR is_middle<>0 OR is_high<>0)
  70. );
  71. CREATE TABLE Elementary_Supplies
  72. (
  73.   supply VARCHAR(50),
  74.   email VARCHAR(50),
  75.   PRIMARY KEY(supply,email),
  76.   FOREIGN KEY (email) REFERENCES Schools,
  77.   CHECK (dbo.isElementary(email) = '1')
  78. );
  79. CREATE TABLE Parents
  80. (
  81.     email VARCHAR(50) PRIMARY KEY,
  82.     parent_address VARCHAR(100),
  83.     home_phone VARCHAR(20),
  84.     first_name VARCHAR(25),
  85.     last_name VARCHAR(25),
  86.     parent_user_name VARCHAR(25) UNIQUE,
  87.     parent_password VARCHAR(25)
  88. );
  89. CREATE TABLE Parents_Mobiles
  90. (
  91.     mobile VARCHAR(20) PRIMARY KEY,
  92.     email VARCHAR(50),
  93.     FOREIGN KEY (email) REFERENCES Parents
  94. );
  95. CREATE TABLE Parents_Write_Review_Schools
  96. (
  97.     parent_email VARCHAR(50),
  98.     school_email VARCHAR(50),
  99.     reviews VARCHAR(200),
  100.     PRIMARY KEY(parent_email, school_email),
  101.     FOREIGN KEY(parent_email) REFERENCES Parents(email),
  102.     FOREIGN KEY(school_email) REFERENCES Schools(email),
  103.     CHECK(dbo.hasChildInSchool(parent_email, school_email) = '1')
  104. );
  105. /*
  106. a0 2
  107. b0 5
  108. c1 1
  109. d1 3
  110. e1 10
  111. f1 11
  112. */
  113. CREATE TABLE Applicants
  114. (
  115.     ssn INT PRIMARY KEY,
  116.     name VARCHAR(50),
  117.     gender BIT,
  118.     birth_date DATE,
  119.     age AS (YEAR(CURRENT_TIMESTAMP) - YEAR(birth_date)),
  120.     parent_email VARCHAR(50),
  121.     FOREIGN KEY (parent_email) REFERENCES Parents
  122. );
  123.  
  124. CREATE TABLE Applicants_Applies_Schools
  125. (
  126.     school_email VARCHAR(50),
  127.     child_ssn INT,
  128.     accepted BIT DEFAULT '0',
  129.     parent_email VARCHAR(50),
  130.     PRIMARY KEY(child_ssn, school_email),
  131.     FOREIGN KEY(child_ssn) REFERENCES Applicants,
  132.     FOREIGN KEY(parent_email) REFERENCES Parents,
  133.     FOREIGN KEY(school_email) REFERENCES Schools
  134. );
  135. CREATE TABLE Enrolled_Students
  136. (
  137.     ssn INT PRIMARY KEY,
  138.     student_level INT,
  139.     name VARCHAR(50),
  140.     gender BIT,
  141.     birth_date DATE,
  142.     age AS (YEAR(CURRENT_TIMESTAMP) - YEAR(birth_date)),
  143.     student_password VARCHAR(20),
  144.     student_user_name VARCHAR(20) UNIQUE,
  145.     school_email VARCHAR(50),
  146.     parent_email VARCHAR(50),
  147.     FOREIGN KEY (school_email) REFERENCES Schools,
  148.     FOREIGN KEY (parent_email) REFERENCES Parents
  149. );
  150. CREATE TABLE Courses
  151. (
  152.     code VARCHAR(10) PRIMARY KEY,
  153.     name VARCHAR(50),
  154.     level_of_school INT,
  155.     course_description VARCHAR(100)
  156. );
  157. CREATE TABLE Courses_Prequisites
  158. (
  159.     course_code_1 VARCHAR(10),
  160.     course_code_2 VARCHAR(10),
  161.     PRIMARY KEY (course_code_1,course_code_2),
  162.     FOREIGN KEY (course_code_1) REFERENCES Courses,
  163.     FOREIGN KEY (course_code_2) REFERENCES Courses
  164. );
  165.  
  166.  
  167.  
  168. CREATE TABLE Courses_Offered_By_Schools
  169. (
  170.     course_code VARCHAR(10),
  171.     school_email VARCHAR(50),
  172.     PRIMARY KEY (course_code, school_email),
  173.     FOREIGN KEY (course_code) REFERENCES Courses,
  174.     FOREIGN KEY (school_email) REFERENCES Schools
  175. );
  176.  
  177.  
  178.  
  179. CREATE TABLE Employees
  180. (
  181.     email VARCHAR(50) PRIMARY KEY,
  182.     birth_date DATE,
  183.     employee_user_name VARCHAR(25) UNIQUE,
  184.     employee_password VARCHAR(25),
  185.     first_name VARCHAR(25),
  186.     middle_name VARCHAR(25),
  187.     last_name VARCHAR(25),
  188.     gender BIT,
  189.     employee_address VARCHAR(100),
  190.     salary FLOAT,
  191.     enrollment_year DATE,
  192.     years_of_experience AS (YEAR(CURRENT_TIMESTAMP) - YEAR(enrollment_year)),
  193.     is_administrator BIT NOT NULL DEFAULT '0',
  194.     is_teacher BIT NOT NULL DEFAULT '0',
  195.     is_supervisor BIT NOT NULL DEFAULT '0',
  196.     is_verified BIT NOT NULL DEFAULT '0',
  197.     school_email VARCHAR(50),
  198.     supervisor_email VARCHAR(50),
  199.     FOREIGN KEY (school_email) REFERENCES Schools,
  200.     FOREIGN KEY (supervisor_email) REFERENCES Employees
  201. );
  202. CREATE TABLE Activities
  203. (
  204.     activity_date DATE,
  205.     activity_location VARCHAR(30),
  206.     activity_type VARCHAR(20),
  207.     activity_description VARCHAR(300),
  208.     administrator_email VARCHAR(50) NOT NULL,
  209.     teacher_email VARCHAR(50),
  210.     school_email VARCHAR(50) NOT NULL,
  211.     PRIMARY KEY (activity_date, activity_location),
  212.     FOREIGN KEY (administrator_email) REFERENCES Employees,
  213.     FOREIGN KEY (teacher_email) REFERENCES Employees,
  214.     FOREIGN KEY (school_email) REFERENCES Schools
  215. );
  216. CREATE TABLE Equipment
  217. (
  218.     activity_date DATE,
  219.     activity_location VARCHAR(30),
  220.     equipment VARCHAR(50),
  221.     PRIMARY KEY (activity_date, activity_location, equipment),
  222.     FOREIGN KEY (activity_date, activity_location) REFERENCES Activities
  223. );
  224. CREATE TABLE Activities_Applied_By_Enrolled_Students
  225. (
  226.     activity_date DATE,
  227.     activity_location VARCHAR(30),
  228.     ssn INT,
  229.     PRIMARY KEY (ssn, activity_date, activity_location),
  230.     FOREIGN KEY (ssn) REFERENCES Enrolled_Students,
  231.     FOREIGN KEY (activity_date, activity_location) REFERENCES Activities
  232. );
  233. CREATE TABLE Clubs
  234. (
  235.     name VARCHAR(50) PRIMARY KEY,
  236.     purpose VARCHAR(50)
  237. );
  238. CREATE TABLE Clubs_Joined_By_Enrolled_Student
  239. (
  240.     club_name VARCHAR(50),
  241.     enrolled_ssn INT,
  242.     PRIMARY KEY (club_name, enrolled_ssn),
  243.     FOREIGN KEY (club_name) REFERENCES Clubs,
  244.     FOREIGN KEY (enrolled_ssn) REFERENCES Enrolled_Students
  245. );
  246. CREATE TABLE Clubs_Offered_By_Schools --eh offers da :P
  247. (
  248.     name VARCHAR(50),
  249.     school_email VARCHAR(50),
  250.     PRIMARY KEY(name,school_email),
  251.     FOREIGN KEY (name) REFERENCES Clubs,
  252.     FOREIGN KEY (school_email) REFERENCES Schools
  253. );
  254. CREATE TABLE Questions
  255. (
  256.     question_number INT IDENTITY,
  257.     course_code VARCHAR(10) NOT NULL,
  258.     question_itself VARCHAR(500), --3ash X')
  259.     question_answer VARCHAR(500),
  260.     askers_ssn INT,
  261.     PRIMARY KEY (question_number,course_code),
  262.     FOREIGN KEY (course_code) REFERENCES Courses,
  263.     FOREIGN KEY (askers_ssn) REFERENCES Enrolled_Students
  264. );
  265. CREATE TABLE Enrolled_Students_View_Questions
  266. (
  267.     ssn INT,
  268.     question_number INT,
  269.     course_code VARCHAR(10),
  270.     PRIMARY KEY (ssn, question_number, course_code),
  271.     FOREIGN KEY (ssn) REFERENCES Enrolled_Students,
  272.     FOREIGN KEY (question_number,course_code) REFERENCES Questions
  273. );
  274. CREATE TABLE Teachers_Response_To_Questions
  275. (
  276.     question_number INT,
  277.     course_code VARCHAR(10),
  278.     teacher_email VARCHAR(50),
  279.     PRIMARY KEY (question_number, course_code, teacher_email),
  280.     FOREIGN KEY (question_number,course_code) REFERENCES Questions,
  281.     FOREIGN KEY (teacher_email) REFERENCES Employees
  282. );
  283. CREATE TABLE Assignments
  284. (
  285.     assignment_number INT,
  286.     course_code VARCHAR(10),
  287.     teacher_email VARCHAR(50),
  288.     posting_date DATE,
  289.     due_date DATE,
  290.     content VARCHAR(500),
  291.     PRIMARY KEY (assignment_number, course_code, teacher_email),
  292.     FOREIGN KEY (course_code) REFERENCES Courses,
  293.     FOREIGN KEY (teacher_email) REFERENCES Employees
  294. );
  295. CREATE TABLE Assignments_Solved_By_Students
  296. (
  297.     ssn INT,
  298.     assignment_number INT,
  299.     teacher_email VARCHAR(50),
  300.     course_code VARCHAR(10),
  301.     grade FLOAT,
  302.     solution VARCHAR(3000),
  303.     PRIMARY KEY (ssn, assignment_number, teacher_email, course_code),
  304.     FOREIGN KEY (ssn) REFERENCES Enrolled_Students,
  305.     FOREIGN KEY (assignment_number, course_code, teacher_email) REFERENCES Assignments
  306. );
  307.  
  308.  
  309.  
  310. CREATE TABLE View_And_Grade_Assignments
  311. (
  312.     viewer_email VARCHAR(50), --teacher_email ya3ny
  313.     assignment_number INT,
  314.     course_code VARCHAR(10),
  315.     creator_email VARCHAR(50),
  316.     PRIMARY KEY(viewer_email, assignment_number, course_code, creator_email),
  317.     FOREIGN KEY (assignment_number, course_code, creator_email) REFERENCES Assignments,
  318.     FOREIGN KEY (viewer_email) REFERENCES Employees
  319. );
  320. CREATE TABLE Attends
  321. (
  322.     enrolled_ssn INT,
  323.     course_code VARCHAR(10),
  324.     grade FLOAT,
  325.     PRIMARY KEY (enrolled_ssn, course_code),
  326.     FOREIGN KEY (enrolled_ssn) REFERENCES Enrolled_Students,
  327.     FOREIGN KEY (course_code) REFERENCES Courses
  328. );
  329.  
  330. CREATE TABLE Teaches
  331. (
  332.     teacher_email VARCHAR(50),
  333.     course_code VARCHAR(10),
  334.     PRIMARY KEY (course_code, teacher_email),
  335.     FOREIGN KEY (teacher_email) REFERENCES Employees,
  336.     FOREIGN KEY (course_code) REFERENCES Courses
  337. );
  338. CREATE TABLE Announcements
  339. (
  340.     administrator_email VARCHAR(50),
  341.     announcement_date DATE,
  342.     announcement_time TIME,
  343.     announcement_type VARCHAR(20),
  344.     title VARCHAR(25),
  345.     announcement_description VARCHAR(300),
  346.     school_email VARCHAR(50) NOT NULL,
  347.     PRIMARY KEY (administrator_email, announcement_date, announcement_time),
  348.     FOREIGN KEY (administrator_email) REFERENCES Employees,
  349.     FOREIGN KEY (school_email) REFERENCES Schools
  350. );
  351. CREATE TABLE Announcements_Visible_To_Parents
  352. (
  353.     administrator_email VARCHAR(50),
  354.     announcement_date DATE,
  355.     announcement_time TIME,
  356.     parent_email VARCHAR(50),
  357.     PRIMARY KEY (administrator_email,announcement_date,announcement_time,parent_email),
  358.     FOREIGN KEY (parent_email) REFERENCES Parents,
  359.     FOREIGN KEY (administrator_email, announcement_date, announcement_time) REFERENCES Announcements
  360. );
  361. CREATE TABLE Announcements_Visible_To_Enrolled_Students
  362. (
  363.     administrator_email VARCHAR(50),
  364.     announcement_date DATE,
  365.     announcement_time TIME,
  366.     enrolled_ssn INT,
  367.     PRIMARY KEY (administrator_email,announcement_date,announcement_time),
  368.     FOREIGN KEY (enrolled_ssn) REFERENCES Enrolled_Students,
  369.     FOREIGN KEY (administrator_email, announcement_date, announcement_time) REFERENCES Announcements
  370. );
  371. CREATE TABLE Parents_Ratings_To_Teachers
  372. (
  373.     employee_email VARCHAR(50),
  374.     parent_email VARCHAR(50),
  375.     rating DECIMAL(2,1), --eh da? X) leh decimal tab? mesh int? madam zero to five
  376.     CONSTRAINT chk_Rating CHECK (rating >= 0 AND rating <= 5),
  377.     PRIMARY KEY (employee_email, parent_email),
  378.     FOREIGN KEY (employee_email) REFERENCES Employees,
  379.     FOREIGN KEY (parent_email) REFERENCES Parents,
  380.     CHECK(dbo.teacherTeachesStudent(parent_email, employee_email) = '1')
  381. );
  382.  
  383. --SELECT * FROM Monthly_Reports_Replies
  384.  
  385. CREATE TABLE Monthly_Reports
  386. (
  387.     enrolled_ssn INT,
  388.     issue_date DATE,
  389.     comment VARCHAR(200),
  390.     writer VARCHAR(50) NOT NULL,
  391.     PRIMARY KEY (enrolled_ssn, issue_date),
  392.     FOREIGN KEY (enrolled_ssn) REFERENCES Enrolled_Students,
  393.     FOREIGN KEY (writer) REFERENCES Employees
  394. );
  395.  
  396. CREATE TABLE Monthly_Reports_Replies
  397. (
  398.     enrolled_ssn INT,
  399.     issue_date DATE,
  400.     parent_email VARCHAR (50),
  401.     reply VARCHAR(200),
  402.     PRIMARY KEY (enrolled_ssn, issue_date, parent_email),
  403.     FOREIGN KEY (enrolled_ssn, issue_date) REFERENCES Monthly_Reports,
  404.     FOREIGN KEY (parent_email) REFERENCES Parents
  405. );
  406. GO
  407. -----------------------------------------------------------------------------------------
  408. --sysadmin
  409. CREATE PROC CreateSchool
  410. @school_name VARCHAR(50),
  411. @address VARCHAR(100),
  412. @phone_number VARCHAR(20),
  413. @email VARCHAR(50),
  414. @general_information VARCHAR(300),
  415. @vision VARCHAR(300),
  416. @mission VARCHAR(300),
  417. @main_language VARCHAR (30),
  418. @TYPE BIT,
  419. @is_elementary BIT,
  420. @is_middle BIT,
  421. @is_high BIT,
  422. @fees FLOAT
  423. AS
  424.     DECLARE @isNational bit SET @isNational = 0;
  425.     DECLARE @isInternational bit SET @isInternational = 0;
  426.     IF @TYPE = 1
  427.         SET @isInternational = 1;
  428.     ELSE
  429.         SET @isNational = 1
  430.     IF @school_name IS NULL OR
  431.     @address IS NULL OR
  432.     @phone_number IS NULL OR
  433.     @TYPE IS NULL OR
  434.     @fees IS NULL
  435.         print 'One of the inputs is null'
  436.     ELSE
  437.         INSERT INTO Schools(email , vision , main_language , mission , is_national , is_international , phone_number , fees , school_address , general_information , name,is_elementary,is_middle,is_high)
  438.         VALUES(@email, @vision, @main_language, @mission, @isNational, @isInternational, @phone_number, @fees, @address, @general_information, @school_name,@is_elementary,@is_middle,@is_high)
  439. GO
  440.  
  441. --di 7aga fadla m'el functions?
  442. CREATE TYPE Course_List
  443. AS TABLE
  444. (
  445.     course_code VARCHAR(10)
  446. );
  447. GO
  448.  
  449. --azonn me7tageen separate proc t'insert a separate prequisite
  450. CREATE PROC AddCourse
  451. @course_code VARCHAR(10),
  452. @course_name VARCHAR(50),
  453. --@course_level_elementary BIT,
  454. --@course_level_middle BIT,
  455. --@course_level_high BIT,
  456. @school_level INT,
  457. @description VARCHAR(100),
  458. @prequisite_courses AS Course_List READONLY
  459. AS
  460.     IF @course_code IS NULL OR
  461.     @course_name IS NULL OR
  462. --  @course_level_elementary is NULL or
  463. --  @course_level_middle is NULL or
  464. --  @course_level_high is NULL or
  465.     @school_level IS NULL
  466.         print 'One of the inputs is null'
  467.     ELSE
  468.         INSERT INTO Courses(code, level_of_school, course_description, name)
  469.         VALUES(@course_code, @school_level, @description, @course_name)
  470.  
  471.     DECLARE @code VARCHAR(10)
  472.     DECLARE MY_CURSOR CURSOR
  473.     LOCAL STATIC READ_ONLY FORWARD_ONLY
  474.     FOR
  475.     SELECT DISTINCT course_code
  476.     FROM @prequisite_courses
  477.     OPEN MY_CURSOR
  478.     FETCH NEXT FROM MY_CURSOR INTO @code
  479.     WHILE @@FETCH_STATUS = 0
  480.     BEGIN
  481.         IF EXISTS (SELECT code FROM Courses WHERE code = @code)
  482.             INSERT INTO Courses_Prequisites(course_code_1, course_code_2)
  483.             VALUES(@course_code, @code)
  484.         ELSE
  485.             print 'Prequisite course does not exist'
  486.         FETCH NEXT FROM MY_CURSOR INTO @code
  487.     END
  488.     CLOSE MY_CURSOR
  489.     DEALLOCATE MY_CURSOR
  490. GO
  491.  
  492. CREATE PROC AddAdmin2
  493. @first_name VARCHAR(25),
  494. @middle_name VARCHAR(25),
  495. @last_name VARCHAR(25),
  496. @birthdate DATE,
  497. @address VARCHAR(100), 
  498. @email VARCHAR(50),
  499. @username VARCHAR(25),
  500. @password VARCHAR(25),
  501. @gender BIT
  502. AS
  503.     IF @first_name IS NULL OR
  504.     @middle_name IS NULL OR
  505.     @last_name IS NULL OR
  506.     @birthdate IS NULL OR
  507.     @address IS NULL OR
  508.     @email IS NULL OR
  509.     @username IS NULL OR
  510.     @password IS NULL OR
  511.     @gender IS NULL
  512.         print 'One of the inputs is null'
  513.     ELSE
  514.         DECLARE @DATE AS DATE SET @DATE = CAST(GETDATE() AS DATE);
  515.         INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,gender,employee_address,enrollment_year,birth_date,is_administrator)
  516.         VALUES(@email, @username, @password, @first_name, @middle_name, @last_name, @gender, @address, @DATE, @birthdate, 1)
  517. GO
  518.  
  519. CREATE PROC AssignAdminToSchool
  520. @admin_email VARCHAR(50),
  521. @school_email VARCHAR(50)
  522. AS
  523.     DECLARE @school_type BIT
  524.     IF @admin_email IS NULL
  525.     OR @school_email IS NULL
  526.         print 'One of the inputs is null'
  527.     ELSE
  528.         IF EXISTS(
  529.             SELECT *
  530.             FROM Schools s
  531.             WHERE s.email = @school_email)
  532.         AND EXISTS(
  533.             SELECT *
  534.             FROM Employees
  535.             WHERE email = @admin_email)
  536.         BEGIN
  537.             DECLARE @salary INT --???
  538.             SELECT @school_type = s.is_international
  539.             FROM Schools s
  540.             WHERE s.email = @school_email
  541.             IF @school_type = 1 --international
  542.                 UPDATE Employees
  543.                 SET school_email = @school_email, salary = 5000
  544.                 WHERE email = @admin_email;
  545.             ELSE --national
  546.                 UPDATE Employees
  547.                 SET school_email = @school_email, salary = 3000
  548.                 WHERE email = @admin_email;
  549.         END
  550.         ELSE
  551.             print 'School or Admin Does Not Exist'
  552. GO
  553.  
  554. CREATE PROC DeleteSchool
  555. @school_email VARCHAR(50)
  556. AS
  557.     IF
  558.         @school_email IS NULL
  559.         print 'Input is null'
  560.     ELSE
  561.         DELETE FROM Schools
  562.         WHERE email = @school_email;
  563.         UPDATE Employees
  564.         SET employee_user_name = NULL, employee_password = NULL
  565.         WHERE school_email = @school_email
  566. GO
  567. ----------------------------------------------------------
  568.  
  569. -- Parent Procedures 1
  570. CREATE PROC InsertParents
  571. @email VARCHAR(50) ,
  572. @parent_address VARCHAR(100),
  573. @home_phone VARCHAR(20),
  574. @first_name VARCHAR(25),
  575. @last_name VARCHAR(25),
  576. @parent_user_name VARCHAR(25),
  577. @parent_password VARCHAR(25)
  578. AS
  579.     IF @email IS NULL OR
  580.     @parent_address IS NULL OR
  581.     @home_phone IS NULL OR
  582.     @first_name IS NULL OR
  583.     @last_name IS NULL OR
  584.     @parent_user_name IS NULL OR
  585.     @parent_password IS NULL
  586.         PRINT 'One of the inputs is null'
  587.     ELSE
  588.         INSERT INTO Parents(email, parent_address, home_phone, first_name, last_name, parent_user_name, parent_password )
  589.         VALUES(@email, @parent_address, @home_phone, @first_name, @last_name, @parent_user_name, @parent_password)
  590. GO
  591. --2
  592. CREATE PROC Parents_Apply_Schools
  593. @ssn INT ,
  594. @name VARCHAR(50) ,
  595. @gender BIT,
  596. @birth_date DATE,
  597. @parent_email VARCHAR(50),
  598. @school_email_in VARCHAR(50)
  599. AS
  600.     IF
  601.     @ssn IS NULL OR
  602.     @name IS NULL OR
  603.     @gender IS NULL OR
  604.     @birth_date IS NULL OR
  605.     @parent_email IS NULL
  606.         PRINT 'One of the inputs is null'
  607.     ELSE
  608.         INSERT INTO Applicants (ssn,name,gender,birth_date,parent_email)
  609.         VALUES(@ssn,@name,@gender,@birth_date,@parent_email)
  610.         INSERT INTO Applicants_Applies_Schools
  611.         (school_email , child_ssn , parent_email)
  612.         VALUES (@school_email_in , @ssn , @parent_email)
  613. GO
  614.  
  615. --3
  616. CREATE PROC Schools_Accepted_My_Children
  617. @ssn_in INT
  618. AS
  619.     SELECT s.*
  620.     FROM Schools s
  621.     INNER JOIN Applicants_Applies_Schools a ON a.school_email = s.email
  622.     WHERE @ssn_in = a.child_ssn AND a.Accepted = 'True'
  623. GO
  624. --4
  625. CREATE PROC ChooseSchool --noexec
  626. @parent_email VARCHAR(50),
  627. @child_ssn INT,
  628. @school_email VARCHAR(50)
  629. AS
  630.     IF  @parent_email IS NULL
  631.     OR @child_ssn IS NULL
  632.     OR @school_email IS NULL
  633.         print 'Null Input'
  634.     ELSE
  635.     BEGIN
  636.         --Declare @table Table
  637.         DECLARE @name VARCHAR(50)
  638.         DECLARE @gender BIT
  639.         DECLARE @birth_date DATE
  640.         SELECT @name = e.name, @gender = e.gender, @birth_date = e.birth_date
  641.         FROM Applicants e INNER JOIN Applicants_Applies_Schools a ON a.child_ssn = e.ssn
  642.         WHERE e.parent_email = @parent_email AND a.accepted = 1
  643.         INSERT INTO Enrolled_Students
  644.         (ssn , name , gender , birth_date , school_email , parent_email)
  645.         VALUES(@child_ssn, @name, @gender, @birth_date, @school_email, @parent_email)
  646.         DELETE FROM Applicants
  647.         WHERE ssn = @child_ssn
  648.     END
  649. GO         
  650. --5
  651. CREATE PROC View_Reports
  652. @parent_email VARCHAR(50)
  653. AS
  654.     SELECT r.*
  655.     FROM Monthly_Reports r
  656.     INNER JOIN Enrolled_Students e ON r.enrolled_ssn = e.ssn
  657.     WHERE e.parent_email = @parent_email
  658. GO
  659. --6
  660. CREATE PROC Reply
  661. @parent_email VARCHAR(50),
  662. @reply VARCHAR(200),
  663. @issue_date DATE,
  664. @enrolled_ssn INT
  665. AS
  666.     INSERT INTO Monthly_Reports_Replies (enrolled_ssn ,issue_date,parent_email,reply)
  667.     VALUES(@enrolled_ssn,@issue_date,@parent_email,@reply)
  668. GO
  669. --7
  670. CREATE PROC List_of_Children_Schools
  671. @parent_email VARCHAR(50)
  672. AS
  673. SELECT e.name + ' in ' + s.name AS 'List of my children schools'
  674. FROM Enrolled_Students e
  675.         INNER JOIN Schools s ON e.school_email = s.email
  676. WHERE e.parent_email = @parent_email
  677. ORDER BY s.name
  678. GO
  679. --8
  680. CREATE PROC Posted_Announcments
  681. @parent_email VARCHAR(50),
  682. @Enrolled_ssn INT
  683. AS
  684. DECLARE @p10days TIMESTAMP = DAY(CURRENT_TIMESTAMP)
  685. SELECT a.announcement_description
  686. FROM Announcements_Visible_To_Parents ap
  687.         INNER JOIN Parents p ON p.email = ap.parent_email
  688.         INNER JOIN Announcements a ON a.administrator_email = ap.administrator_email
  689.         INNER JOIN Announcements_Visible_To_Enrolled_Students ae ON ae.administrator_email = ap.administrator_email
  690. WHERE ap.parent_email = @parent_email AND ae.enrolled_ssn = @Enrolled_ssn AND (DAY(ap.announcement_date) + 10) > @p10days
  691. GO
  692. --9
  693. CREATE PROC Rate_Teachers
  694. @parent_email VARCHAR(50),
  695. @teacher_email VARCHAR(50),
  696. @rating DECIMAL(2,1)
  697. AS
  698. IF  @parent_email IS NULL OR
  699.     @teacher_email IS NULL OR
  700.     @rating IS NULL
  701.     print 'NULL INPUT'
  702. ELSE
  703. IF @parent_email IN
  704.     (
  705.         SELECT parent_email
  706.         FROM Enrolled_Students e
  707.             INNER JOIN Attends a ON a.enrolled_ssn = e.ssn
  708.             INNER JOIN Teaches T ON T.course_code = a.course_code
  709.         WHERE e.parent_email = @parent_email    
  710.     )
  711.     INSERT INTO Parents_Ratings_To_Teachers(employee_email, parent_email, rating)
  712.     VALUES(@teacher_email, @parent_email, @rating)
  713. GO
  714. --10
  715. CREATE PROC Write_Reviews
  716. @parent_email VARCHAR(50),
  717. @school_email VARCHAR(50),
  718. @reviews VARCHAR(200)
  719. AS
  720.     IF @parent_email IS NULL OR @school_email IS NULL OR @reviews IS NULL
  721.         PRINT 'Incomplete input!'
  722.     ELSE IF NOT EXISTS(
  723.     SELECT e.parent_email
  724.     FROM Enrolled_Students e
  725.     WHERE e.parent_email = @parent_email AND e.school_email = @school_email)
  726.         PRINT 'You must have a student enrolled in this school'
  727.     ELSE
  728.         INSERT INTO Parents_Write_Review_Schools
  729.         (parent_email , reviews , school_email)
  730.         VALUES (@parent_email , @reviews ,@school_email)
  731. GO
  732.  
  733. --EXEC Write_Reviews "shady.azoz@MSA.edu.eg" , "Shwyfat@edu.eg" , "eww"
  734. --EXEC Write_Reviews "shady.azoz@MSA.edu.eg" , "ST.Fatima@edu.eg" , "fffff"
  735.  
  736. --11
  737. CREATE PROC Delete_review
  738. @parent_email VARCHAR(50),
  739. @school_email VARCHAR(50)
  740. AS
  741.     DELETE FROM Parents_Write_Review_Schools
  742.     WHERE parent_email = @parent_email
  743.     AND @school_email = school_email
  744. GO
  745.  
  746. --12
  747. CREATE PROC Sum_rating
  748. @teacher_fname VARCHAR(25),
  749. @teacher_lname VARCHAR(25),
  750. @teacher_rate FLOAT OUTPUT
  751. AS
  752. DECLARE @total INT
  753. DECLARE @COUNT INT
  754. SELECT @Total = SUM(pt.rating), @COUNT = COUNT(pt.rating)
  755. FROM Parents_Ratings_To_Teachers pt
  756.         INNER JOIN Employees e ON e.email = pt.employee_email
  757.         WHERE e.first_name = @teacher_fname AND e.last_name = @teacher_lname
  758. SET @teacher_rate = @total/@COUNT
  759. PRINT @teacher_rate
  760. GO
  761. --13
  762. CREATE PROC TOP_10_Schools
  763. @parent_email VARCHAR(50)
  764. AS
  765. SELECT s.name, COUNT(ps.reviews), COUNT(e.ssn)
  766. FROM Schools s
  767.         INNER JOIN Parents_Write_Review_Schools ps ON ps.school_email = s.email
  768.         INNER JOIN Enrolled_Students e ON e.school_email = s.email
  769.         WHERE ps.parent_email <> @parent_email
  770. GROUP BY s.name
  771. GO
  772. --14
  773. CREATE PROC Highest_International_School
  774. @schoolname VARCHAR(50) OUTPUT,
  775. @COUNT INT OUTPUT
  776. AS
  777. SELECT @schoolname = s.name, @COUNT = COUNT(ps.reviews)
  778. FROM Schools s
  779.         INNER JOIN Parents_Write_Review_Schools ps ON ps.school_email = s.email
  780. GROUP BY s.name
  781. HAVING COUNT(ps.reviews) = MAX(ps.reviews)
  782. GO
  783. ---------------------------------------------------------------------------------
  784. -- System User
  785. --1
  786. CREATE PROC List_School
  787. @name VARCHAR(50),
  788. @address VARCHAR(100),
  789. @NATIONAL BIT,
  790. @international BIT
  791. AS
  792. SELECT *
  793. FROM Schools
  794. WHERE name = @name OR school_address = @address OR is_national = @NATIONAL OR is_international = @international
  795. GO
  796. --2
  797. CREATE PROC Schools_By_Levels
  798. @elementary BIT,
  799. @middle BIT,
  800. @high BIT
  801. AS
  802. SELECT name,is_elementary,is_middle,is_high
  803. FROM Schools
  804. WHERE is_elementary = @elementary OR is_middle = @middle OR is_high = @high
  805. ORDER BY is_elementary, is_middle, is_high
  806. GO
  807. --3
  808. CREATE PROC School_Info
  809. @name VARCHAR(50)
  810. AS
  811. SELECT *
  812. FROM Schools s
  813.     INNER JOIN Parents_Write_Review_Schools ps ON ps.school_email = s.email
  814.     INNER JOIN Employees e ON e.school_email = s.email
  815.     WHERE s.name = @name
  816. GO
  817.  
  818. ----------------------------------------------------------------------------------------
  819. --adminstrator
  820.  
  821. CREATE PROC ViewTeachers
  822. @admin_email VARCHAR(50)
  823. AS
  824.     IF
  825.         @admin_email IS NULL
  826.         print 'Null Input'
  827.     ELSE
  828.         DECLARE @isAdmin BIT
  829.         DECLARE @school_email VARCHAR(50)
  830.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  831.         FROM Employees e
  832.         WHERE e.email = @admin_email
  833.         IF @isAdmin = 1
  834.             SELECT *
  835.             FROM Employees e
  836.             WHERE e.is_teacher = 1 AND e.school_email = @school_email
  837.         ELSE
  838.             PRINT 'Not Admin'
  839. GO
  840. CREATE PROC AssignTeacher
  841.     @admin_email VARCHAR(50),
  842.     @teacher_email VARCHAR(50),
  843.     @user_name VARCHAR(25),
  844.     @password VARCHAR(25)
  845. AS
  846.     IF
  847.         @admin_email IS NULL OR
  848.         @teacher_email IS NULL OR
  849.         @user_name IS NULL OR
  850.         @password IS NULL
  851.         print 'Null Input'
  852.     ELSE
  853.         DECLARE @isAdmin bit
  854.         DECLARE @school_email VARCHAR(50)
  855.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  856.         FROM Employees e
  857.         WHERE e.email = @admin_email
  858.         IF @isAdmin = 1
  859.             UPDATE Employees
  860.             SET employee_user_name = @user_name, employee_password = @password, salary = years_of_experience * 500
  861.             WHERE email = @teacher_email
  862. GO
  863. CREATE PROC ViewStudents
  864. @admin_email VARCHAR(50)
  865. AS
  866. BEGIN
  867.     IF
  868.         @admin_email IS NULL
  869.         print 'Null Input'
  870.     ELSE
  871.         DECLARE @isAdmin bit
  872.         DECLARE @school_email VARCHAR(50)
  873.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  874.         FROM Employees e
  875.         WHERE e.email = @admin_email
  876.         IF @isAdmin = 1
  877.             SELECT *
  878.             FROM Enrolled_Students e
  879.             WHERE e.school_email = @school_email
  880. END
  881. GO
  882. CREATE PROC AssignStudent
  883.     @admin_email VARCHAR(50),
  884.     @student_ssn VARCHAR(50),
  885.     @user_name VARCHAR(25),
  886.     @password VARCHAR(25)
  887. AS
  888.     IF
  889.         @admin_email IS NULL OR
  890.         @student_ssn IS NULL OR
  891.         @user_name IS NULL OR
  892.         @password IS NULL
  893.         print 'Null Input'
  894.     ELSE
  895.         DECLARE @isAdmin bit
  896.         DECLARE @school_email VARCHAR(50)
  897.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  898.         FROM Employees e
  899.         WHERE e.email = @admin_email
  900.         IF @isAdmin = 1
  901.             UPDATE Enrolled_Students
  902.             SET student_user_name = @user_name, student_password = @password
  903.             WHERE ssn = @student_ssn
  904. GO
  905. CREATE PROC AddAdmin
  906.     @s_admin_email VARCHAR(50),
  907.     @first_name VARCHAR(25),
  908.     @middle_name VARCHAR(25),
  909.     @last_name VARCHAR(25),
  910.     @birthdate DATE,
  911.     @address VARCHAR(100),
  912.     @email VARCHAR(50),
  913.     @username VARCHAR(25),
  914.     @password VARCHAR(25),
  915.     @gender BIT
  916. AS
  917.     IF
  918.         @s_admin_email IS NULL OR
  919.         @first_name IS NULL OR
  920.         @middle_name IS NULL OR
  921.         @last_name IS NULL OR
  922.         @birthdate IS NULL OR
  923.         @address IS NULL OR
  924.         @email IS NULL OR
  925.         @username IS NULL OR
  926.         @password IS NULL OR
  927.         @gender IS NULL
  928.         print 'Null Input'
  929.     ELSE
  930.         DECLARE @isAdmin bit
  931.         DECLARE @school_email VARCHAR(50)
  932.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  933.         FROM Employees e
  934.         WHERE e.email = @s_admin_email
  935.         IF @isAdmin = 1
  936.         DECLARE @sal FLOAT
  937.         DECLARE @is_international BIT
  938.         SELECT @is_international = is_international
  939.         FROM Schools s
  940.         WHERE s.email = @school_email
  941.         IF(@is_international = 1)
  942.             SET @sal = 5000
  943.         ELSE
  944.             SET @sal = 3000
  945.             INSERT INTO Employees(email,
  946.                                     employee_user_name,
  947.                                     employee_password,
  948.                                     first_name,
  949.                                     middle_name,
  950.                                     last_name,
  951.                                     gender,
  952.                                     employee_address,
  953.                                     enrollment_year,
  954.                                     school_email,
  955.                                     is_administrator,
  956.                                     is_teacher,
  957.                                     is_supervisor,
  958.                                     salary)
  959.             VALUES(@email, @username, @password, @first_name, @middle_name, @last_name, @gender, @address, CAST(GETDATE() AS DATE), @school_email, 1, 0, 0, @sal)
  960. GO
  961. CREATE PROC DeleteEmployee
  962.     @admin_email VARCHAR(50),
  963.     @emp_email VARCHAR(50)
  964. AS
  965.     IF
  966.         @admin_email IS NULL OR
  967.         @emp_email IS NULL
  968.         print 'Null Input'
  969.     ELSE
  970.         DECLARE @isAdmin bit
  971.         DECLARE @school_email VARCHAR(50)
  972.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  973.         FROM Employees e
  974.         WHERE e.email = @admin_email
  975.             IF @isAdmin = 1
  976.                 DELETE FROM Employees
  977.                 WHERE school_email = @school_email AND email = @emp_email
  978. GO
  979. CREATE PROC DeleteStudent
  980.     @admin_email VARCHAR(50),
  981.     @student_ssn VARCHAR(50)
  982. AS
  983.     IF
  984.         @admin_email IS NULL OR
  985.         @student_ssn IS NULL
  986.         print 'Null Input'
  987.     ELSE
  988.         DECLARE @isAdmin bit
  989.         DECLARE @school_email VARCHAR(50)
  990.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  991.         FROM Employees e
  992.         WHERE e.email = @admin_email
  993.             IF @isAdmin = 1
  994.                 DELETE FROM Enrolled_Students
  995.                 WHERE school_email = @school_email AND ssn = @student_ssn
  996. GO
  997.  
  998. /*EXEC EditSchool
  999. "ashraf.hassan@ST.Fatima.edu.eg"
  1000. , "Shwyfat@edu.eg"
  1001. , "asdfasedf"
  1002. , "asdfasdf"
  1003. , "sadfasdfasdf"
  1004. , 1 , 1
  1005. , "654"
  1006. , "sdfgsdfg"
  1007. , "54"
  1008. , "fdgfgdfg"
  1009. , "fgfg"
  1010. , "sadfafasd"
  1011. , 1 , 1 , 1*/
  1012. GO
  1013.  
  1014. CREATE PROC EditSchool
  1015.     @admin_email VARCHAR(50),
  1016.     @email VARCHAR(50),
  1017.     @vision VARCHAR(300),
  1018.     @main_language VARCHAR (30),
  1019.     @mission VARCHAR(300),
  1020.     @is_national BIT,
  1021.     @is_international BIT,
  1022.     @phone_number VARCHAR(20),
  1023.     @home_page VARCHAR(100),
  1024.     @fees FLOAT,
  1025.     @school_address VARCHAR(100),
  1026.     @general_information VARCHAR(300),
  1027.     @name VARCHAR(50),
  1028.     @is_elementary BIT,
  1029.     @is_middle BIT,
  1030.     @is_high BIT
  1031. AS
  1032.     IF
  1033.         @admin_email IS NULL
  1034.         print 'Null Input'
  1035.     ELSE
  1036.         DECLARE @isAdmin bit
  1037.         DECLARE @school_email VARCHAR(50)
  1038.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1039.         FROM Employees e
  1040.         WHERE e.email = @admin_email
  1041.             IF @isAdmin = 1
  1042.                 UPDATE Schools
  1043.                 SET
  1044.                     email = @email,
  1045.                     vision = @vision,
  1046.                     main_language = @main_language,
  1047.                     mission = @mission,
  1048.                     is_national = @is_national,
  1049.                     is_international = @is_international,
  1050.                     phone_number = @phone_number,
  1051.                     home_page = @home_page,
  1052.                     fees = @fees,
  1053.                     school_address = @school_address,
  1054.                     general_information = @general_information,
  1055.                     name = @name,
  1056.                     is_elementary = @is_elementary,
  1057.                     is_middle = @is_middle,
  1058.                     is_high = @is_high
  1059.                 WHERE email = @school_email
  1060. GO
  1061.  
  1062. --EXEC PostAnnoucement "bb" , "a" , "aa" , "aaa"
  1063.  
  1064.  
  1065. CREATE PROC PostAnnoucement
  1066.     @admin_email VARCHAR(50),
  1067.     @title VARCHAR(25),
  1068.     @description VARCHAR(300),
  1069.     @TYPE VARCHAR(20)
  1070. AS
  1071.     IF
  1072.         @admin_email IS NULL OR
  1073.         @title IS NULL OR
  1074.         @description IS NULL OR
  1075.         @TYPE IS NULL
  1076.         print 'Null Input'
  1077.     ELSE
  1078.         DECLARE @isAdmin bit
  1079.         DECLARE @school_email VARCHAR(50)
  1080.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1081.         FROM Employees e
  1082.         WHERE e.email = @admin_email
  1083.             IF @isAdmin = 1
  1084.                 INSERT INTO Announcements(administrator_email,
  1085.                                             announcement_date,
  1086.                                             announcement_time,
  1087.                                             announcement_type,
  1088.                                             title,
  1089.                                             announcement_description,
  1090.                                             school_email)
  1091.                 VALUES(@admin_email,  CAST(GETDATE() AS DATE),  CAST(GETDATE() AS TIME), @TYPE, @title, @description, @school_email)
  1092. GO
  1093. CREATE PROC CreateActivity
  1094.     @admin_email VARCHAR(50),
  1095.     @activity_date DATE,
  1096.     @activity_location VARCHAR(30),
  1097.     @teacher_email VARCHAR(50),
  1098.     @activity_type VARCHAR(20),
  1099.     @activity_description VARCHAR(300),
  1100.     @equipment VARCHAR(50)
  1101. AS
  1102.     IF
  1103.         @admin_email IS NULL OR
  1104.         @activity_date IS NULL OR
  1105.         @activity_location IS NULL OR
  1106.         @teacher_email IS NULL OR
  1107.         @activity_type IS NULL OR
  1108.         @activity_description IS NULL
  1109.         print 'Null Input'
  1110.     ELSE
  1111.         DECLARE @isAdmin bit
  1112.         DECLARE @school_email VARCHAR(50)
  1113.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1114.         FROM Employees e
  1115.         WHERE e.email = @admin_email
  1116.             IF @isAdmin = 1
  1117.                 INSERT INTO Activities(activity_date,
  1118.                                         activity_location,
  1119.                                         administrator_email,
  1120.                                         teacher_email,
  1121.                                         activity_type,
  1122.                                         activity_description,
  1123.                                         school_email)
  1124.                 VALUES(@activity_date, @activity_location, @admin_email, @teacher_email, @activity_type, @activity_description, @school_email)
  1125.                 IF @equipment IS NOT NULL
  1126.                     INSERT INTO Equipment(activity_date, activity_location, equipment)
  1127.                     VALUES(@activity_date, @activity_location, @equipment)
  1128. GO
  1129. CREATE PROC AssignTeacherToActivity
  1130.     @admin_email VARCHAR(50),
  1131.     @activity_date DATE,
  1132.     @activity_location VARCHAR(30),
  1133.     @teacher_email VARCHAR(50)
  1134. AS
  1135.     IF
  1136.         @admin_email IS NULL OR
  1137.         @activity_date IS NULL OR
  1138.         @activity_location IS NULL OR
  1139.         @teacher_email IS NULL
  1140.         print 'Null Input'
  1141.     ELSE
  1142.         DECLARE @isAdmin bit
  1143.         DECLARE @school_email VARCHAR(50)
  1144.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1145.         FROM Employees e
  1146.         WHERE e.email = @admin_email
  1147.             IF @isAdmin = 1
  1148.                 UPDATE Activities
  1149.                 SET teacher_email = @teacher_email
  1150.                 WHERE school_email = @school_email AND activity_date = @activity_date AND activity_location = @activity_location
  1151. GO
  1152. CREATE PROC AssignTeacherToCourse
  1153.     @admin_email VARCHAR(50),
  1154.     @teacher_email VARCHAR(50),
  1155.     @course_code VARCHAR(10)
  1156. AS
  1157.     IF
  1158.         @admin_email IS NULL OR
  1159.         @teacher_email IS NULL OR
  1160.         @course_code IS NULL
  1161.         print 'Null Input'
  1162.     ELSE
  1163.         DECLARE @isAdmin bit
  1164.         DECLARE @school_email VARCHAR(50)
  1165.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1166.         FROM Employees e
  1167.         WHERE e.email = @admin_email
  1168.         IF @teacher_email IN (SELECT e2.email
  1169.                               FROM Employees e1 INNER JOIN Employees e2 ON e1.school_email = e2.school_email
  1170.                               WHERE e1.email = @admin_email)
  1171.                 DECLARE @level INT
  1172.                 DECLARE @high BIT
  1173.                 DECLARE @mid BIT
  1174.                 DECLARE @elem BIT
  1175.                 SELECT @level = level_of_school  
  1176.                 FROM Courses
  1177.                 WHERE code = @course_code
  1178.                 SELECT @high = is_high, @mid = is_middle, @elem = is_elementary
  1179.                 FROM Schools
  1180.                 WHERE email = @school_email
  1181.                 IF (@level > 9 AND @high = 1) OR (@level > 6 AND @mid = 1) OR (@level < 7 AND @elem = 1)
  1182.                     INSERT INTO Teaches(teacher_email, course_code)
  1183.                     VALUES(@teacher_email, @course_code)
  1184. GO
  1185. CREATE PROC AssignSupervisor
  1186.     @admin_email VARCHAR(50),
  1187.     @teacher_email VARCHAR(50),
  1188.     @supervisor_email VARCHAR(50)
  1189. AS
  1190.     IF
  1191.         @admin_email IS NULL OR
  1192.         @supervisor_email IS NULL OR
  1193.         @teacher_email IS NULL
  1194.         print 'Null Input'
  1195.     ELSE
  1196.         DECLARE @isAdmin bit
  1197.         DECLARE @school_email VARCHAR(50)
  1198.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1199.         FROM Employees e
  1200.         WHERE e.email = @admin_email
  1201.         IF @isAdmin = 1
  1202.             UPDATE Employees
  1203.             SET supervisor_email = @supervisor_email
  1204.             WHERE email = @teacher_email AND school_email = @school_email
  1205. GO
  1206. CREATE PROC HandleSchoolApplication
  1207.     @admin_email VARCHAR(50),
  1208.     @child_ssn INT,
  1209.     @answer BIT
  1210. AS
  1211.     IF
  1212.         @admin_email IS NULL OR
  1213.         @child_ssn IS NULL
  1214.         print 'Null Input'
  1215.     ELSE
  1216.         DECLARE @isAdmin bit
  1217.         DECLARE @school_email VARCHAR(50)
  1218.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  1219.         FROM Employees e
  1220.         WHERE e.email = @admin_email
  1221.         IF @isAdmin = 1
  1222.             IF @answer = 1
  1223.             BEGIN
  1224.                 DECLARE @parent_email VARCHAR(50)
  1225.                 DECLARE @ssn INT
  1226.                 DECLARE @name VARCHAR(50)
  1227.                 DECLARE @gender BIT
  1228.                 DECLARE @birth_date DATE
  1229.                 SELECT @parent_email = a.parent_email, @ssn = a.ssn, @name = a.name, @gender = a.gender, @birth_date = a.birth_date
  1230.                 FROM Applicants_Applies_Schools s INNER JOIN Applicants a ON  a.ssn = s.child_ssn
  1231.                 WHERE school_email = @school_email AND child_ssn = @child_ssn
  1232.                 INSERT INTO Enrolled_Students
  1233.                 (ssn , name , gender , birth_date , school_email , parent_email)
  1234.                 VALUES(@ssn, @name, @gender, @birth_date, @school_email, @parent_email)
  1235.             END
  1236.                 DELETE FROM Applicants_Applies_Schools
  1237.                 WHERE school_email = @school_email AND child_ssn = @ssn
  1238.                 DELETE FROM Applicants
  1239.                 WHERE ssn = @ssn
  1240. GO
  1241. ---------------------------------------------------------------------------------------------------------------------------
  1242.  
  1243.  
  1244. --Student procedures
  1245. --1
  1246. CREATE PROC Enrolled_Student_Info_Update
  1247. @ssn_in INT,
  1248. @name_in VARCHAR(50),
  1249. @gender_in BIT,
  1250. @birth_date_in DATE,
  1251. @password_in VARCHAR(20),
  1252. @school_email_in VARCHAR(50),
  1253. @parent_email_in VARCHAR(50)
  1254. AS
  1255.     IF @ssn_in IS NULL
  1256.         PRINT 'Please enter SSN.'
  1257.     ELSE
  1258.         UPDATE Enrolled_Students
  1259.         SET
  1260.             name = ISNULL(@name_in , name),
  1261.             gender = ISNULL(@gender_in , gender),
  1262.             birth_date = ISNULL(@birth_date_in , birth_date),
  1263.             student_password = ISNULL(@password_in , student_password),
  1264.             school_email = ISNULL(@school_email_in , school_email),
  1265.             parent_email = ISNULL(@parent_email_in , parent_email)
  1266.         WHERE
  1267.             @ssn_in = Enrolled_Students.ssn
  1268. GO
  1269.  
  1270. --2
  1271. CREATE PROC Enrolled_Student_View_Courses
  1272. @ssn_in INT
  1273. AS
  1274.     IF @ssn_in = NULL
  1275.         PRINT 'Please enter SSN.'
  1276.     ELSE
  1277.         SELECT t.grade, c.name , c.code
  1278.         FROM Courses c INNER JOIN Attends t ON t.course_code = c.code
  1279.         WHERE t.enrolled_ssn = @ssn_in
  1280.         GROUP BY t.grade , c.name , c.code
  1281.         ORDER BY c.name
  1282. GO
  1283.  
  1284.  
  1285.  
  1286. --3
  1287. CREATE PROC Enrolled_Student_Post_Question
  1288. @course_code_in VARCHAR(10),
  1289. @question_itself_in VARCHAR(500),
  1290. @askers_ssn_in INT
  1291. AS
  1292.     IF @askers_ssn_in = NULL
  1293.         PRINT 'Please enter SSN.'
  1294.     ELSE
  1295.         INSERT INTO Questions (course_code,question_itself,askers_ssn)
  1296.         VALUES (@course_code_in,@question_itself_in,@askers_ssn_in)
  1297. GO
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308. --4
  1309. CREATE PROC Enrolled_Student_View_Questions
  1310. @course_code_in VARCHAR(10),
  1311. @askers_ssn_in INT
  1312. AS
  1313.     IF @askers_ssn_in = NULL OR @course_code_in = NULL
  1314.         PRINT 'Input Incomplete.'
  1315.     ELSE IF NOT EXISTS
  1316.     (SELECT *
  1317.     FROM Enrolled_Students_View_Questions p --can use "Teaches" instead of this table. Redundant
  1318.     WHERE @course_code_in = p.course_code
  1319.     AND @askers_ssn_in = p.ssn)
  1320.         PRINT 'You do not have the permission to view questions on this course.'
  1321.     ELSE
  1322.         SELECT q.question_itself, q.question_answer
  1323.         FROM Questions q
  1324.         WHERE @course_code_in = q.course_code
  1325. GO
  1326.  
  1327.  
  1328.  
  1329. --EXEC Enrolled_Student_View_Questions "MATH501" , 2113524
  1330.  
  1331.  
  1332. --5
  1333. /*CREATE PROC Enrolled_Student_View_All_Assignments
  1334. @ssn_in INT
  1335. AS
  1336.     IF @ssn_in = NULL
  1337.         PRINT 'Please enter ssn.'
  1338.     ELSE
  1339.         SELECT asst.assignment_number , asst.course_code , asst.posting_date , asst.due_date , asst.content
  1340.         FROM Attends at
  1341.         INNER JOIN Assignments asst ON asst.course_code = at.course_code
  1342.         WHERE @ssn_in = at.enrolled_ssn
  1343.         SELECT t.assignment_number, t.course_code, t.posting_date, t.due_date, t.content
  1344.         FROM Teaches t
  1345.         --INNER JOIN Courses c ON t.course_code = c.code
  1346.         INNER JOIN Assignments a ON a.course_code = t.course_code
  1347.         WHERE t.enrolled_ssn = @ssn_in
  1348.  
  1349.  
  1350. ALTER PROC Enrolled_Student_View_All_Assignments
  1351. @ssn_in INT
  1352. AS
  1353.     IF @ssn_in = NULL
  1354.         PRINT 'Please enter ssn.'
  1355.     ELSE
  1356.         SELECT *
  1357.         FROM Assignments
  1358.         WHERE assignment_number IN (SELECT enrolled_ssn FROM Attends WHERE enrolled_ssn = @ssn_in)
  1359. GO
  1360. CREATE PROC Enrolled_Student_View_All_Assignments
  1361. @ssn_in INT
  1362. AS
  1363.     IF @ssn_in = NULL
  1364.         RAISERROR('Enter SSN', 16, 1)
  1365.     ELSE
  1366.         SELECT *
  1367.         FROM Assignments
  1368.         WHERE assignment_number IN (SELECT enrolled_ssn FROM Attends WHERE enrolled_ssn = @ssn_in)
  1369. GO*/
  1370. CREATE PROC Enrolled_Student_View_All_Assignments
  1371. @ssn_in INT
  1372. AS
  1373.     IF @ssn_in = NULL
  1374.     RAISERROR('Enter SSN', 16, 1)
  1375.     ELSE
  1376.     SELECT *
  1377.     FROM Assignments
  1378.     WHERE course_code IN (SELECT course_code FROM Attends WHERE enrolled_ssn = @ssn_in)
  1379. GO
  1380.  
  1381. CREATE PROC Enrolled_Student_View_Course_Assignments
  1382. @ssn_in INT,
  1383. @course_code_in VARCHAR(10)
  1384. AS
  1385.     IF @ssn_in = NULL
  1386.     RAISERROR('Enter SSN', 16, 1)
  1387.     ELSE
  1388.     SELECT *
  1389.     FROM Assignments
  1390.     WHERE course_code = @course_code_in
  1391. GO
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397. --6
  1398. CREATE PROC Enrolled_Student_Solves_Assignment
  1399. @ssn_in INT,
  1400. @assignment_number_in INT,
  1401. @teacher_email_in VARCHAR(50),
  1402. @course_code_in VARCHAR(10),
  1403. @solution_in VARCHAR(3000)
  1404. AS
  1405.     IF @ssn_in = NULL
  1406.     OR @assignment_number_in = NULL
  1407.     OR @course_code_in = NULL
  1408.     OR @teacher_email_in = NULL
  1409.     OR @solution_in = NULL
  1410.         PRINT 'Incomplete Input.'
  1411.     ELSE IF NOT EXISTS(
  1412.     SELECT * FROM Attends t
  1413.     INNER JOIN Teaches tt ON t.course_code = tt.course_code
  1414.     WHERE t.enrolled_ssn = @ssn_in
  1415.     AND t.course_code = @course_code_in
  1416.     AND tt.teacher_email = @teacher_email_in)
  1417.         PRINT 'This course is not assigned to you.'
  1418.     ELSE
  1419.         INSERT INTO Assignments_Solved_By_Students
  1420.         (ssn,assignment_number,teacher_email,course_code,solution)
  1421.         VALUES (@ssn_in,@assignment_number_in,@teacher_email_in,@course_code_in,@solution_in)
  1422. GO
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429. --7
  1430.  
  1431. CREATE PROC Enrolled_Students_Views_Assignments_Grades
  1432. @ssn_in INT
  1433. AS
  1434.     IF @ssn_in = NULL
  1435.         PRINT 'Please enter SSN.'
  1436.     ELSE
  1437.         SELECT s.course_code, s.assignment_number, s.grade
  1438.         FROM Assignments_Solved_By_Students s
  1439.         WHERE s.ssn = @ssn_in
  1440. GO
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448. --8
  1449. --student's school
  1450. CREATE PROC Enrolled_Student_Views_Announcements
  1451. @ssn_in INT
  1452. AS
  1453.     IF @ssn_in = NULL
  1454.         PRINT 'Please enter SSN.'
  1455.     ELSE
  1456.         SELECT a.title, a.announcement_description
  1457.         FROM Announcements_Visible_To_Enrolled_Students av
  1458.         INNER JOIN Announcements a ON
  1459.         a.administrator_email = av.administrator_email
  1460.         AND a.announcement_date = av.announcement_date
  1461.         AND a.announcement_time = av.announcement_time
  1462.         WHERE @ssn_in = av.enrolled_ssn
  1463.         --AND DAY(a.announcement_date) > (DAY(CURRENT_TIMESTAMP) - 10)
  1464.         AND DATEDIFF(DAY,a.announcement_date,CONVERT(DATE, GETDATE())) < 10
  1465.         AND EXISTS
  1466.         (SELECT *
  1467.         FROM Enrolled_Students es
  1468.         WHERE es.ssn = @ssn_in
  1469.         AND a.school_email = es.school_email)
  1470. GO
  1471.  
  1472.  
  1473. --9
  1474. CREATE PROC Enrolled_Student_Views_Activities
  1475. @ssn_in INT
  1476. AS
  1477.     IF @ssn_in = NULL
  1478.         PRINT 'Please enter SSN.'
  1479.     ELSE
  1480.         SELECT a.activity_date, a.activity_location, a.activity_type, a.activity_description, e.first_name, e.middle_name, e.last_name, e.gender, e.email
  1481.         FROM Activities a INNER JOIN Employees e ON a.teacher_email = e.email
  1482.         WHERE e.is_teacher = 1
  1483.         AND EXISTS (
  1484.         SELECT *
  1485.         FROM Enrolled_Students es
  1486.         WHERE es.ssn = @ssn_in
  1487.         AND a.school_email = es.school_email)
  1488. GO
  1489.  
  1490.  
  1491.  
  1492.  
  1493. --10
  1494. --PLEASE CORRECT THIS PROCEDURE
  1495. --"date is not recognised as a built-in function name"
  1496. CREATE PROC Enrolled_Student_Applies_To_Activity
  1497. @ssn_in INT,
  1498. @activity_date_in DATE,
  1499. @activity_location_in VARCHAR(30)
  1500. AS
  1501.     IF @ssn_in = NULL
  1502.         PRINT 'Please enter SSN.'
  1503.     ELSE IF EXISTS(
  1504.     SELECT * FROM Activities_Applied_By_Enrolled_Students ae
  1505.     INNER JOIN Activities a ON ae.activity_date = ae.activity_date AND ae.activity_location = a.activity_location
  1506.     WHERE @ssn_in = ae.ssn AND EXISTS(
  1507.         SELECT * FROM Activities sa
  1508.         WHERE sa.activity_date = @activity_date_in
  1509.         AND sa.activity_location = @activity_location_in
  1510.         AND sa.activity_type = a.activity_type
  1511.         AND sa.activity_date = a.activity_date
  1512.     ))
  1513.         PRINT 'Can not join two activities on the same date of the same type!'
  1514.     ELSE
  1515.         INSERT INTO Activities_Applied_By_Enrolled_Students
  1516.         (ssn, activity_date, activity_location)
  1517.         VALUES (@ssn_in,@activity_date_in,@activity_location_in)
  1518. GO
  1519.  
  1520. --11
  1521. CREATE PROC Enrolled_Student_Join_Club
  1522. @ssn_in INT,
  1523. @club_name_in VARCHAR(50)
  1524. AS
  1525.     IF @ssn_in = NULL OR @club_name_in = NULL
  1526.         RAISERROR ('Incomplete input!' , 15 , 15)
  1527.     ELSE IF NOT EXISTS(
  1528.     SELECT * FROM Enrolled_Students es
  1529.     WHERE @ssn_in = es.ssn AND es.student_level > 9)
  1530.         RAISERROR ('You are not a high school student' , 15 , 15)
  1531.     ELSE IF NOT EXISTS(
  1532.     SELECT * FROM Enrolled_Students es
  1533.     INNER JOIN Clubs_Offered_By_Schools c ON c.school_email = es.school_email
  1534.     WHERE es.ssn = @ssn_in AND c.name = @club_name_in)
  1535.         RAISERROR ('Your school does not offer this club.' , 15 , 15)
  1536.     ELSE
  1537.         INSERT INTO Clubs_Joined_By_Enrolled_Student
  1538.         (club_name,enrolled_ssn)
  1539.         VALUES (@club_name_in,@ssn_in)
  1540. GO
  1541.  
  1542. --yaaFaragEllaaaah
  1543. CREATE PROC Enrolled_Student_Course_Search
  1544. @ssn_in INT,
  1545. @course_code_in VARCHAR(10),
  1546. @course_name_in VARCHAR(50)
  1547. AS
  1548.     IF @ssn_in IS NULL OR (@course_code_in IS NULL AND @course_name_in IS NULL)
  1549.         PRINT 'Incomplete input!'
  1550.     ELSE
  1551.         SELECT *
  1552.         FROM Attends a INNER JOIN Courses c ON a.course_code = c.code
  1553.         WHERE @course_name_in IS NOT NULL AND a.enrolled_ssn = @ssn_in AND c.name = @course_name_in
  1554.             UNION
  1555.         SELECT *
  1556.         FROM Attends a INNER JOIN Courses c ON a.course_code = c.code
  1557.         WHERE @course_code_in IS NOT NULL AND a.enrolled_ssn = @ssn_in AND a.course_code = @course_code_in
  1558. GO
  1559.  
  1560. --heyya name = ISNULL(@name_in , name) tenfa3? 2aw fee 7aga zayyaha
  1561. ------------------------------------------------------------------------
  1562.  
  1563.  
  1564. --TEACHERRRRRRRRRRRRRR
  1565. CREATE PROC Teacher_Sign_Up
  1566. @fname_in VARCHAR(25),
  1567. @mname_in VARCHAR(25),
  1568. @lname_in VARCHAR(25),
  1569. @birthdate_in DATE,
  1570. @address_in VARCHAR(100),
  1571. @email_in VARCHAR(50),
  1572. @gender_in BIT
  1573. AS
  1574.     IF @fname_in = NULL
  1575.     OR @mname_in = NULL
  1576.     OR @lname_in = NULL
  1577.     OR @birthdate_in = NULL
  1578.     OR @address_in = NULL
  1579.     OR @email_in = NULL
  1580.     OR @gender_in = NULL
  1581.         PRINT 'Missing Info'
  1582.     ELSE
  1583.         INSERT INTO Employees
  1584.         (first_name , middle_name , last_name , birth_date , employee_address , email , gender , is_teacher)
  1585.         VALUES (@fname_in , @mname_in , @lname_in , @birthdate_in , @address_in , @email_in , @gender_in , '1')
  1586. GO
  1587. --2
  1588. CREATE PROC Teacher_View_His_Courses
  1589. @email_in VARCHAR(50)
  1590. AS
  1591.     IF @email_in IS NULL
  1592.         PRINT 'Please enter email!'
  1593.     ELSE
  1594.         SELECT c.code , c.name , c.level_of_school , c.course_description
  1595.         FROM Teaches t
  1596.         INNER JOIN Courses c ON c.code = t.course_code
  1597.         WHERE t.teacher_email = @email_in
  1598.  
  1599. GO
  1600. --3
  1601. CREATE PROC Post_Assignments
  1602.     @assignment_number INT,
  1603.     @course_code VARCHAR(10),
  1604.     @teacher_email VARCHAR(50),
  1605.     @posting_date DATE,
  1606.     @due_date DATE,
  1607.     @content VARCHAR(500)
  1608. AS
  1609.     IF
  1610.         @assignment_number IS NULL OR
  1611.         @course_code IS NULL OR
  1612.         @teacher_email IS NULL OR
  1613.         @posting_date IS NULL OR
  1614.         @due_date IS NULL OR
  1615.         @content IS NULL
  1616.         PRINT 'some data is null'
  1617.     ELSE
  1618.         INSERT INTO Assignments
  1619.         VALUES(@assignment_number,
  1620.         @course_code,
  1621.         @teacher_email,
  1622.         @posting_date,
  1623.         @due_date,
  1624.         @content )
  1625. GO
  1626. --4
  1627. CREATE PROC Students_Solutions
  1628.     @email_in VARCHAR(50),
  1629.     @course_code INT
  1630. AS
  1631.     SELECT a.ssn, a.solution
  1632.     FROM Assignments_Solved_By_Students a
  1633.     WHERE a.teacher_email = @email_in AND a.course_code = @course_code
  1634.     ORDER BY a.ssn
  1635. GO
  1636. --5
  1637. CREATE PROC Grade_Assignments
  1638.     @teacher_email VARCHAR(50),
  1639.     @enrolled_ssn INT,
  1640.     @course_code VARCHAR(10),
  1641.     @grade FLOAT
  1642. AS
  1643.     UPDATE Assignments_Solved_By_Students
  1644.     SET grade = @grade
  1645.     WHERE teacher_email = @teacher_email AND course_code = @course_code AND ssn = @enrolled_ssn
  1646. GO
  1647. --6
  1648. CREATE PROC Delete_Assignments
  1649.     @teacher_email VARCHAR(50),
  1650.     @course_code VARCHAR(10),
  1651.     @assignment_number INT
  1652. AS
  1653. DELETE FROM Assignments
  1654. WHERE teacher_email = @teacher_email AND course_code = @course_code AND assignment_number = @assignment_number
  1655. GO
  1656.  
  1657. --7
  1658. CREATE PROC Write_Report
  1659.     @teacher_email VARCHAR(50),
  1660.     @enrolled_ssn INT,
  1661.     @comment VARCHAR(200)
  1662. AS
  1663.     UPDATE Monthly_Reports
  1664.     SET comment = @comment , issue_date = CAST(GETDATE() AS DATE)
  1665.     WHERE writer = @teacher_email AND enrolled_ssn = @enrolled_ssn
  1666. GO
  1667. --8
  1668. CREATE PROC View_Questions
  1669. @teacher_email VARCHAR(50),
  1670. @course_code VARCHAR(10)
  1671. AS
  1672. SELECT q.question_number, e.name, q.question_itself
  1673. FROM Questions q
  1674.     INNER JOIN Enrolled_Students e ON q.askers_ssn = e.ssn
  1675.     INNER JOIN teaches t ON t.course_code = q.course_code
  1676.     WHERE q.course_code = @course_code AND t.teacher_email = @teacher_email
  1677. GO
  1678. --9
  1679. CREATE PROC Answer_Questions
  1680. @teacher_email VARCHAR(50),
  1681. @course_code VARCHAR(10),
  1682. @answer VARCHAR(500),
  1683. @NUMBER INT
  1684. AS
  1685.     UPDATE Questions
  1686.     SET question_answer = @answer
  1687.     WHERE question_number = @NUMBER
  1688. GO
  1689. --10
  1690. CREATE PROC ListStudents
  1691.     @teacher_email VARCHAR(50)
  1692. AS
  1693.     IF @teacher_email IS NULL
  1694.         PRINT 'Null Input'
  1695.     ELSE
  1696.         SELECT e.*
  1697.         FROM Enrolled_Students e
  1698.                 INNER JOIN Attends a ON e.ssn = a.enrolled_ssn
  1699.                 INNER JOIN Teaches t ON t.course_code = a.course_code
  1700.                 WHERE t.teacher_email = @teacher_email
  1701. GO
  1702. --11
  1703. CREATE PROC StudentsWithoutActivities
  1704. AS
  1705.     SELECT ssn
  1706.     FROM Enrolled_Students
  1707.     WHERE ssn NOT IN(
  1708.         SELECT e.ssn
  1709.         FROM Enrolled_Students e
  1710.         INNER JOIN Activities_Applied_By_Enrolled_Students a ON e.ssn = a.ssn)
  1711. GO
  1712. --12
  1713. CREATE PROC StudentWithMostClubs
  1714. AS
  1715.     DECLARE @maxC INT
  1716.     SELECT @maxC = COUNT(*)
  1717.     FROM Enrolled_Students e INNER JOIN Clubs_Joined_By_Enrolled_Student c ON e.ssn = c.enrolled_ssn
  1718.     GROUP BY e.ssn, e.name 
  1719.     SELECT e.name
  1720.     FROM Enrolled_Students e INNER JOIN Clubs_Joined_By_Enrolled_Student c ON e.ssn = c.enrolled_ssn
  1721.  
  1722. GO
  1723.  
  1724.  
  1725. --working insertions!!
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1735. VALUES('ST.Fatima@edu.eg',0,1,'02479106910','Heliopolice','ST.Fatima',1,1,0);
  1736. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1737. VALUES('ST.George@edu.eg',1,0,'02967910610','Shubra','ST.George',1,0,0);
  1738. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1739. VALUES('ELNozha@edu.eg',1,0,'021448323','Hegaz','EL Nozha',0,0,1);
  1740. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1741. VALUES('NewRamces@edu.eg',1,0,'0248825101','Heliopolice','New Ramces',0,0,1);
  1742. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1743. VALUES('Future@edu.eg',1,0,'029855952','Ramsees','Future',0,1,0);
  1744. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1745. VALUES('Karma@edu.eg',1,1,'029943119','5th settlement','Karma',1,1,1);
  1746. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1747. VALUES('Modern@edu.eg',0,1,'0223418103','Shubra','Modern',1,1,1);
  1748. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1749. VALUES('MSA@edu.eg',1,0,'027786922','Heliopolice','MSA',0,1,1);
  1750. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1751. VALUES('Rajak@edu.eg',0,1,'0210576831','Heliopolice','Rajak',0,0,1);
  1752. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1753. VALUES('ST.John@edu.eg',0,1,'0251610184','Shubra','St.John',1,0,1);
  1754. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1755. VALUES('Elite@edu.eg',1,0,'029923627','Heliopolice','Elite',0,0,1);
  1756. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1757. VALUES('Tabre@edu.eg',1,0,'022238343','5th settlement','Tabre',1,1,0);
  1758. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1759. VALUES('Sacrecoeur@edu.eg',1,1,'0210237531','Heliopolice','Sacre coeur',1,0,0);
  1760. INSERT INTO Schools (email,is_national,is_international,phone_number,school_address,name,is_elementary,is_middle,is_high)
  1761. VALUES('Shwyfat@edu.eg',1,0,'0251313104','Shubra','Shwyfat',0,1,0);
  1762. GO
  1763.  
  1764.  
  1765.  
  1766. --SELECT * FROM Schools
  1767. ---------------------------------
  1768. INSERT INTO Elementary_Supplies(supply, email)
  1769. VALUES('supplies', 'Sacrecoeur@edu.eg');
  1770. INSERT INTO Elementary_Supplies(supply, email)
  1771. VALUES('some_fries', 'Sacrecoeur@edu.eg');
  1772. INSERT INTO Elementary_Supplies(supply, email)
  1773. VALUES('some_fries', 'Tabre@edu.eg');
  1774. INSERT INTO Elementary_Supplies(supply, email)
  1775. VALUES('sunrise', 'Karma@edu.eg');
  1776. INSERT INTO Elementary_Supplies(supply, email)
  1777. VALUES('all_rise', 'ST.Fatima@edu.eg');
  1778. GO
  1779. ---------------------------------
  1780. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1781. VALUES('maged.awad@MSA.edu.eg','maged','awad','maged.awad','mego')
  1782. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1783. VALUES('sherif.hanna@ST.Fatima.edu.eg','sherif','hanna','sherif.hanna','shico')
  1784. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1785. VALUES('slim.abdel@ST.John.edu.eg','slim','abdel','slim.abdel','ballabizo')
  1786. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1787. VALUES('aury.abdo@Shwyfat.edu.eg','aury','abdo','aury.abdo','ooory')
  1788. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1789. VALUES('mira.ibrahim@Tabre.edu.eg','mira','ibrahim','mira.ibrahim','miiiraaa')
  1790. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1791. VALUES('william.kaizar@ST.Fatima.edu.eg','william','kaizar','william.kaizar','wilo')
  1792. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1793. VALUES('guirguis.samir@ST.George.edu.eg','guirguis','samir','guirguis.samir','gogo')
  1794. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1795. VALUES('caren.miky@ST.Fatima.edu.eg','caren','miky','caren.miky','koko')
  1796. INSERT INTO Parents (email,first_name,last_name,parent_user_name ,parent_password)
  1797. VALUES('shady.azoz@MSA.edu.eg','shady','azoz','shady.azoz','shodz')
  1798. GO
  1799.  
  1800.  
  1801.  
  1802.  
  1803. --EXEC teachersOfChildren 'shady.azoz@MSA.edu.eg'
  1804.  
  1805.  
  1806.  
  1807. --SELECT * FROM Applicants_Applies_Schools a WHERE a.parent_email = 'william.kaizar@ST.Fatima.edu.eg' AND a.accepted = '1'
  1808. --GO
  1809. -----------------------------------------
  1810. INSERT INTO Parents_Mobiles(mobile , email)
  1811. VALUES(012,'maged.awad@MSA.edu.eg');
  1812. INSERT INTO Parents_Mobiles(mobile , email)
  1813. VALUES(011,'aury.abdo@Shwyfat.edu.eg');
  1814. INSERT INTO Parents_Mobiles(mobile , email)
  1815. VALUES(010,'william.kaizar@ST.Fatima.edu.eg');
  1816. INSERT INTO Parents_Mobiles(mobile , email)
  1817. VALUES(0122,'shady.azoz@MSA.edu.eg');
  1818. GO
  1819. -----------------------------------------
  1820. INSERT INTO Applicants(ssn,name,parent_email)
  1821. VALUES(1234,'david','maged.awad@MSA.edu.eg')
  1822. INSERT INTO Applicants(ssn,name,parent_email)
  1823. VALUES(12345,'peter','sherif.hanna@ST.Fatima.edu.eg')
  1824. INSERT INTO Applicants(ssn,name,parent_email)
  1825. VALUES(12346,'david','slim.abdel@ST.John.edu.eg')
  1826. INSERT INTO Applicants(ssn,name,parent_email)
  1827. VALUES(12347,'mina','william.kaizar@ST.Fatima.edu.eg')
  1828. INSERT INTO Applicants(ssn,name,parent_email)
  1829. VALUES(12348,'fadya','shady.azoz@MSA.edu.eg')
  1830. INSERT INTO Applicants(ssn,name,parent_email)
  1831. VALUES(12349,'sandra','guirguis.samir@ST.George.edu.eg')
  1832. INSERT INTO Applicants(ssn,name,parent_email)
  1833. VALUES(12342,'michael','aury.abdo@Shwyfat.edu.eg')
  1834. GO
  1835. ----------------------------------------------
  1836. INSERT INTO Courses(code,name)
  1837. VALUES('CSEN501','databases')
  1838. INSERT INTO Courses(code,name)
  1839. VALUES('CSEN502','networks')
  1840. INSERT INTO Courses(code,name)
  1841. VALUES('CSEN503','theory')
  1842. INSERT INTO Courses(code,name)
  1843. VALUES('MATH501','math')
  1844. INSERT INTO Courses(code,name)
  1845. VALUES('CSEN601','dsd')
  1846. GO
  1847. -----------------------------------------------
  1848. INSERT INTO Employees (email , employee_user_name , employee_password)
  1849. VALUES ('aa' , 'aa' , 'aa')
  1850. INSERT INTO Employees (email , employee_user_name , employee_password , is_teacher , is_administrator)
  1851. VALUES ('bb' , 'bb' , 'bb' , 1 , 1)
  1852. INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,salary,enrollment_year ,school_email, is_administrator,is_teacher,is_supervisor ,supervisor_email )
  1853. VALUES('ramy.mahfouz@ST.Fatima.edu.eg','ramy.mahfouz','rooooroooo','ramy','mahfouz','hanna',10000,'1996-1-1','ST.Fatima@edu.eg',0,0,1,NULL)
  1854. INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,salary,enrollment_year ,school_email, is_administrator,is_teacher,is_supervisor ,supervisor_email )
  1855. VALUES('ashraf.hassan@ST.Fatima.edu.eg','ashraf.hassan','hoooosoooo','ashraf','hassan','ismail',5000,'2006-2-2','ST.John@edu.eg',1,0,0,'ramy.mahfouz@ST.Fatima.edu.eg')
  1856. INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,salary,enrollment_year ,school_email, is_administrator,is_teacher,is_supervisor ,supervisor_email )
  1857. VALUES('kero.adel@ST.Fatima.edu.eg','kero.adel','kooookoooo','kero','adel','fahmy',5000,'2006-3-4','ST.Fatima@edu.eg',1,1,0,'ramy.mahfouz@ST.Fatima.edu.eg')
  1858. INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,salary,enrollment_year ,school_email, is_administrator,is_teacher,is_supervisor ,supervisor_email )
  1859. VALUES('george.krahy@ST.Fatima.edu.eg','george.krahy','goooogoooo','george','krahy','kareem','5000','2006-5-6','ST.Fatima@edu.eg',1,0,0,'ramy.mahfouz@ST.Fatima.edu.eg')
  1860. INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,salary,enrollment_year ,school_email, is_administrator,is_teacher,is_supervisor ,supervisor_email )
  1861. VALUES('michael.sherif@ST.Fatima.edu.eg','michael.sherif','moooomoooo','michael','sherif','hanna',10000,'1999-7-8','ST.Fatima@edu.eg',0,1,0,NULL)
  1862. INSERT INTO Employees(email,employee_user_name,employee_password,first_name,middle_name,last_name,salary,enrollment_year ,school_email, is_administrator,is_teacher,is_supervisor ,supervisor_email )
  1863. VALUES('teshtar@testar.com','teshtar.teshtar','teshhhhhh','teshtar','teshtaren','talata',10000,'1999-7-9','Tabre@edu.eg',0,1,0,NULL)
  1864. GO
  1865.  
  1866. --EXEC Teacher_View_His_Courses 'michael.sherif@ST.Fatima.edu.eg'
  1867.  
  1868. ----------------------------------------------------------------------
  1869. --EXEC ViewUnverifiedTeachers 'kero.adel@ST.Fatima.edu.eg'
  1870.  
  1871. --EXEC Enrolled_Student_View_Courses 2355124;
  1872.  
  1873. --EXEC ViewUnverifiedTeachers 'ashraf.hassan@ST.Fatima.edu.eg'
  1874.  
  1875. --EXEC Enrolled_Students_Views_Assignments_Grades 2345124
  1876.  
  1877. INSERT INTO Enrolled_Students --school_email , parent_email
  1878. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1879. VALUES (2345124,5,'7amada',0,'1995-1-2','3ayezArawwa7','Hamada','ST.Fatima@edu.eg','maged.awad@MSA.edu.eg')
  1880. INSERT INTO Enrolled_Students
  1881. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1882. VALUES (2355124,5,'7amaden',0,'1995-2-2','3ayezArawwa7en','Hamaden','ST.Fatima@edu.eg','maged.awad@MSA.edu.eg') --e5wat
  1883. INSERT INTO Enrolled_Students --school_email , parent_email
  1884. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1885. VALUES (2115124,5,'Samy',0,'1995-3-2','Mesh3ayezArawwa7','Samy','Rajak@edu.eg','slim.abdel@ST.John.edu.eg')
  1886. INSERT INTO Enrolled_Students --school_email , parent_email
  1887. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1888. VALUES (2113524,5,'7ommos',0,'1996-3-2','Rawwa7t','Hommos','Shwyfat@edu.eg','shady.azoz@MSA.edu.eg')
  1889. INSERT INTO Enrolled_Students --school_email , parent_email
  1890. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1891. VALUES (2115554,5,'7ommoseyya',0,'1996-4-2','Merwa7','Hommoseyya','Modern@edu.eg','shady.azoz@MSA.edu.eg')
  1892. GO
  1893. INSERT INTO Enrolled_Students
  1894. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1895. VALUES (2115,5,'brens',0,'1996-4-2','bn','bns','ST.Fatima@edu.eg','shady.azoz@MSA.edu.eg')
  1896. INSERT INTO Enrolled_Students --school_email , parent_email
  1897. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  1898. VALUES (21,5,'brens2',0,'1995-3-2','b2','b2','ST.Fatima@edu.eg','slim.abdel@ST.John.edu.eg')
  1899. ------------------------------------------------
  1900. INSERT INTO Courses_Prequisites
  1901. (course_code_1,course_code_2)
  1902. VALUES ('CSEN501','CSEN502')
  1903. GO
  1904. -------------------------------------------------
  1905. INSERT INTO Courses_Offered_By_Schools
  1906. (course_code , school_email)
  1907. VALUES ('CSEN601','ELNozha@edu.eg')
  1908. INSERT INTO Courses_Offered_By_Schools
  1909. (course_code , school_email)
  1910. VALUES ('CSEN601','ST.Fatima@edu.eg')
  1911. INSERT INTO Courses_Offered_By_Schools
  1912. (course_code , school_email)
  1913. VALUES ('MATH501','ST.Fatima@edu.eg')
  1914. GO
  1915. ------------------------------------------------------------
  1916. INSERT INTO Activities --administrator_email , teacher_email , school_email
  1917. (activity_date,activity_location,activity_type,activity_description,administrator_email,teacher_email,school_email)
  1918. VALUES('2012-12-12','fel gam3a','trip','howwa keda','michael.sherif@ST.Fatima.edu.eg','kero.adel@ST.Fatima.edu.eg','ST.Fatima@edu.eg')
  1919. INSERT INTO Activities
  1920. (activity_date,activity_location,activity_type,activity_description,administrator_email,teacher_email,school_email)
  1921. VALUES('2012-11-11','barra el gam3a','trip','enter deskripshan heer','michael.sherif@ST.Fatima.edu.eg','george.krahy@ST.Fatima.edu.eg','ST.Fatima@edu.eg')
  1922. INSERT INTO Activities
  1923. (activity_date,activity_location,activity_type,activity_description,administrator_email,teacher_email,school_email)
  1924. VALUES('2012-10-10','ganb el gam3a','trip','kaman re7la wmalo','michael.sherif@ST.Fatima.edu.eg','kero.adel@ST.Fatima.edu.eg','ST.Fatima@edu.eg')
  1925. GO
  1926. -----------------------------------------------------------------------------
  1927. INSERT INTO Equipment --activity_date activity_location men Activities
  1928. (activity_date,activity_location,equipment)
  1929. VALUES ('2012-12-12','fel gam3a','3asaya')
  1930. INSERT INTO Equipment
  1931. (activity_date,activity_location,equipment)
  1932. VALUES ('2012-11-11','barra el gam3a','kora')
  1933. INSERT INTO Equipment --activity_date activity_location men Activities
  1934. (activity_date,activity_location,equipment)
  1935. VALUES ('2012-12-12','fel gam3a','gardal')
  1936. INSERT INTO Equipment --activity_date activity_location men Activities
  1937. (activity_date,activity_location,equipment)
  1938. VALUES ('2012-11-11','barra el gam3a','7anafeyya')
  1939. INSERT INTO Equipment --activity_date activity_location men Activities
  1940. (activity_date,activity_location,equipment)
  1941. VALUES ('2012-10-10','ganb el gam3a','mayya ma3daneyya')
  1942. INSERT INTO Equipment --activity_date activity_location men Activities
  1943. (activity_date,activity_location,equipment)
  1944. VALUES ('2012-10-10','ganb el gam3a','far5a zengeyya')
  1945. GO
  1946. ----------------------------------------------------------
  1947. INSERT INTO Clubs
  1948. (name , purpose) VALUES ('MUNday','unknown')
  1949. INSERT INTO Clubs
  1950. (name , purpose) VALUES ('TImon','play mohaa')
  1951. INSERT INTO Clubs
  1952. (name , purpose) VALUES ('IEEEEEEEEE ya rasy','eat circuits for breakfast!')
  1953. INSERT INTO Clubs
  1954. (name , purpose) VALUES ('3ashan 5atrik ya gam3ety','ne3mel 7aga')
  1955. GO
  1956. ------------------------------------------------------------
  1957. INSERT INTO Clubs_Offered_By_Schools
  1958. (name , school_email)
  1959. VALUES ('MUNday','ST.John@edu.eg')
  1960. INSERT INTO Clubs_Offered_By_Schools
  1961. (name , school_email)
  1962. VALUES ('TImon','Tabre@edu.eg')
  1963. INSERT INTO Clubs_Offered_By_Schools
  1964. (name , school_email)
  1965. VALUES ('TImon','Shwyfat@edu.eg')
  1966. INSERT INTO Clubs_Offered_By_Schools
  1967. (name , school_email)
  1968. VALUES ('3ashan 5atrik ya gam3ety','Tabre@edu.eg')
  1969. INSERT INTO Clubs_Offered_By_Schools
  1970. (name , school_email)
  1971. VALUES ('IEEEEEEEEE ya rasy','Shwyfat@edu.eg')
  1972.  
  1973. INSERT INTO Clubs_Offered_By_Schools
  1974. (name , school_email)
  1975. VALUES ('IEEEEEEEEE ya rasy','Modern@edu.eg')
  1976. INSERT INTO Clubs_Offered_By_Schools
  1977. (name , school_email)
  1978. VALUES ('IEEEEEEEEE ya rasy','Rajak@edu.eg')
  1979. GO
  1980. ----------------------------------------------------------------
  1981. INSERT INTO Questions --course_code , askers_ssn
  1982. (course_code,question_itself,askers_ssn)
  1983. VALUES ('CSEN601','E7na leh bna5od el course dah?',2345124 )
  1984. INSERT INTO Questions
  1985. (course_code,question_itself,askers_ssn)
  1986. VALUES ('CSEN601','Ya3ny eh insert?',2355124 )
  1987. INSERT INTO Questions
  1988. (course_code,question_itself,askers_ssn)
  1989. VALUES ('CSEN601','Ya3ny eh delete?',2115124 )
  1990. INSERT INTO Questions
  1991. (course_code,question_itself,askers_ssn)
  1992. VALUES ('MATH501','Ya3ny eh logical sequence?',2345124 )
  1993. GO
  1994. --------------------------------------------------------
  1995. INSERT INTO Assignments --course_code , teacher_email
  1996. (assignment_number,course_code,teacher_email,posting_date,due_date,content)
  1997. VALUES (4,'CSEN601','kero.adel@ST.Fatima.edu.eg','2012-3-18','2012-3-19','e3mel database')
  1998. INSERT INTO Assignments
  1999. (assignment_number,course_code,teacher_email,posting_date,due_date,content)
  2000. VALUES (9,'CSEN601','kero.adel@ST.Fatima.edu.eg','2012-4-18','2012-4-19','e3mel social network')
  2001. INSERT INTO Assignments
  2002. (assignment_number,course_code,teacher_email,posting_date,due_date,content)
  2003. VALUES (900,'MATH501','michael.sherif@ST.Fatima.edu.eg','2012-5-18','2012-5-19','proove that the implication aslaha erd')
  2004. GO
  2005. ------------------------------------------------------------------------
  2006. INSERT INTO Announcements --administrator_email men Employees , school_email
  2007. (administrator_email , announcement_date , announcement_time , announcement_type , title , announcement_description , school_email)
  2008. VALUES ('ashraf.hassan@ST.Fatima.edu.eg','2010-3-3','10:10','trip','el trip','hanroo7 henak','MSA@edu.eg')
  2009. INSERT INTO Announcements
  2010. (administrator_email , announcement_date , announcement_time , announcement_type , title , announcement_description , school_email)
  2011. VALUES ('george.krahy@ST.Fatima.edu.eg','2010-3-4','10:10','trip','trip tanya','hanroo7 henak bardo','Future@edu.eg')
  2012. INSERT INTO Announcements
  2013. (administrator_email , announcement_date , announcement_time , announcement_type , title , announcement_description , school_email)
  2014. VALUES ('kero.adel@ST.Fatima.edu.eg','2010-3-5','10:10','trip talta','fee akl','hanroo7 henak tany','Karma@edu.eg')
  2015. INSERT INTO Announcements
  2016. (administrator_email , announcement_date , announcement_time , announcement_type , title , announcement_description , school_email)
  2017. VALUES ('george.krahy@ST.Fatima.edu.eg','2016-11-28','11:10','trip taltaNEW','fee akl','hanroo7 henak tany','ST.Fatima@edu.eg') --change date to be visible
  2018. GO
  2019. ---
  2020. INSERT INTO Announcements_Visible_To_Enrolled_Students
  2021. (administrator_email , announcement_date , announcement_time , enrolled_ssn)
  2022. VALUES ('ashraf.hassan@ST.Fatima.edu.eg','03-Mar-10','10:10:00',2355124)
  2023. INSERT INTO Announcements_Visible_To_Enrolled_Students
  2024. (administrator_email , announcement_date , announcement_time , enrolled_ssn)
  2025. VALUES ('george.krahy@ST.Fatima.edu.eg','04-Mar-10','10:10:00',2345124)
  2026. INSERT INTO Announcements_Visible_To_Enrolled_Students
  2027. (administrator_email , announcement_date , announcement_time , enrolled_ssn)
  2028. VALUES ('george.krahy@ST.Fatima.edu.eg','2016-11-28','11:10:00',2345124) --change date to be visible
  2029. GO
  2030. --SELECT * FROM Announcements
  2031. ---------------------------------------------------------------------------
  2032. INSERT INTO Monthly_Reports --enrolled_ssn men Enrolled_student , writer men Employees
  2033. (enrolled_ssn , issue_date , comment , writer)
  2034. VALUES (2113524 , '2011-12-28' , 'good student' , 'michael.sherif@ST.Fatima.edu.eg')
  2035. INSERT INTO Monthly_Reports
  2036. (enrolled_ssn , issue_date , comment , writer)
  2037. VALUES (2115124 , '2011-12-18' , 'good student' , 'michael.sherif@ST.Fatima.edu.eg')
  2038. INSERT INTO Monthly_Reports
  2039. (enrolled_ssn , issue_date , comment , writer)
  2040. VALUES (2355124 , '2012-4-28' , 'bad student' , 'michael.sherif@ST.Fatima.edu.eg')
  2041. GO
  2042. --------------------------------------------------------------
  2043. INSERT INTO Teaches
  2044. (teacher_email , course_code)
  2045. VALUES ('kero.adel@ST.Fatima.edu.eg','CSEN503')
  2046. INSERT INTO Teaches
  2047. (teacher_email , course_code)
  2048. VALUES ('kero.adel@ST.Fatima.edu.eg','CSEN601')
  2049. INSERT INTO Teaches
  2050. (teacher_email , course_code)
  2051. VALUES ('michael.sherif@ST.Fatima.edu.eg','MATH501')
  2052. GO
  2053.  
  2054. ------------------------------------------------
  2055. INSERT INTO Attends
  2056. (enrolled_ssn , course_code)
  2057. VALUES (2355124,'MATH501')
  2058. INSERT INTO Attends
  2059. (enrolled_ssn , course_code)
  2060. VALUES (2355124,'CSEN601')
  2061. INSERT INTO Attends
  2062. (enrolled_ssn , course_code)
  2063. VALUES (2115124,'MATH501')
  2064. INSERT INTO Attends
  2065. (enrolled_ssn , course_code)
  2066. VALUES (2115554,'MATH501')
  2067. INSERT INTO Attends
  2068. (enrolled_ssn , course_code)
  2069. VALUES (2115554,'CSEN601')
  2070. INSERT INTO Attends
  2071. (enrolled_ssn , course_code)
  2072. VALUES (2113524,'MATH501')
  2073. GO
  2074. ------------------------------------------------------
  2075. INSERT INTO Clubs_Joined_By_Enrolled_Student
  2076. (club_name , enrolled_ssn)
  2077. VALUES ('IEEEEEEEEE ya rasy' , 2115124)
  2078. INSERT INTO Clubs_Joined_By_Enrolled_Student
  2079. (club_name , enrolled_ssn)
  2080. VALUES ('3ashan 5atrik ya gam3ety' , 2115124)
  2081. INSERT INTO Clubs_Joined_By_Enrolled_Student
  2082. (club_name , enrolled_ssn)
  2083. VALUES ('3ashan 5atrik ya gam3ety' , 2345124)
  2084. INSERT INTO Clubs_Joined_By_Enrolled_Student
  2085. (club_name , enrolled_ssn)
  2086. VALUES ('MUNday' , 2345124)
  2087. INSERT INTO Clubs_Joined_By_Enrolled_Student
  2088. (club_name , enrolled_ssn)
  2089. VALUES ('TImon' , 2345124)
  2090. GO
  2091.  
  2092.  
  2093. INSERT INTO Monthly_Reports_Replies
  2094. (enrolled_ssn , issue_date , parent_email , reply)
  2095. VALUES (2113524 , '28-Dec-11' , 'mira.ibrahim@Tabre.edu.eg' , 'thank you veery mutsh')
  2096. GO
  2097.  
  2098.  
  2099. INSERT INTO Enrolled_Students_View_Questions
  2100. (ssn , question_number , course_code)
  2101. VALUES (2355124 , 2 , 'CSEN601')
  2102. GO
  2103.  
  2104. INSERT INTO Teachers_Response_To_Questions
  2105. (question_number , course_code , teacher_email)
  2106. VALUES (1 , 'CSEN601' , 'teshtar@testar.com')
  2107. GO
  2108.  
  2109. INSERT INTO Parents_Ratings_To_Teachers
  2110. (employee_email , parent_email , rating)
  2111. VALUES ('michael.sherif@ST.Fatima.edu.eg', 'shady.azoz@MSA.edu.eg', 2)
  2112. INSERT INTO Parents_Ratings_To_Teachers
  2113. (employee_email , parent_email , rating)
  2114. VALUES ('michael.sherif@ST.Fatima.edu.eg', 'maged.awad@MSA.edu.eg', 2)
  2115. INSERT INTO Parents_Ratings_To_Teachers
  2116. (employee_email , parent_email , rating)
  2117. VALUES ('michael.sherif@ST.Fatima.edu.eg', 'slim.abdel@ST.John.edu.eg', 1)
  2118.  
  2119. INSERT INTO Announcements_Visible_To_Parents
  2120. (administrator_email , announcement_date , announcement_time , parent_email)
  2121. VALUES ('ashraf.hassan@ST.Fatima.edu.eg','2010-3-3','10:10', 'shady.azoz@MSA.edu.eg')
  2122. GO
  2123.  
  2124. INSERT INTO View_And_Grade_Assignments
  2125. (viewer_email , assignment_number , course_code , creator_email)
  2126. VALUES ('teshtar@testar.com' , 9 , 'CSEN601' , 'kero.adel@ST.Fatima.edu.eg')
  2127. GO
  2128.  
  2129. INSERT INTO Assignments_Solved_By_Students
  2130. (ssn , assignment_number , teacher_email , course_code , solution)
  2131. VALUES (2345124 , 9 , 'kero.adel@ST.Fatima.edu.eg' , 'CSEN601' , 'bottom implies top')
  2132. GO
  2133.  
  2134. INSERT INTO Activities_Applied_By_Enrolled_Students
  2135. (activity_date , activity_location , ssn)
  2136. VALUES ('2012-12-12' , 'fel gam3a' , 2115124)
  2137. GO
  2138.  
  2139. INSERT INTO Courses_Offered_By_Schools
  2140. (course_code , school_email)
  2141. VALUES ('MATH501','Shwyfat@edu.eg')
  2142. GO
  2143.  
  2144. INSERT INTO Applicants_Applies_Schools
  2145. (school_email , child_ssn , accepted , parent_email)
  2146. VALUES ('Shwyfat@edu.eg' , 12345 , 0 , 'sherif.hanna@ST.Fatima.edu.eg')
  2147. GO
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154. --proc executions
  2155. /*
  2156.  
  2157.  
  2158. --@ssn_in INT,
  2159. --@name_in VARCHAR(50),
  2160. --@gender_in BIT,
  2161. --@birth_date_in DATE,
  2162. --@password_in VARCHAR(20),
  2163. --@school_email_in VARCHAR(50),
  2164. --@parent_email_in VARCHAR(50)
  2165.  
  2166.  
  2167. SELECT * FROM Enrolled_Students
  2168. EXEC Enrolled_Student_Info_Update  2113524 , 'Defet' , '0' , '1995-2-2' , 'mafeeshpasswerd' , 'Rajak@edu.eg' , 'shady.azoz@MSA.edu.eg'
  2169.  
  2170. EXEC Enrolled_Student_View_Courses 2345124
  2171. EXEC Enrolled_Student_View_Courses 2355124
  2172.  
  2173. EXEC Enrolled_Student_Post_Question 'MATH501' , '3ashan se2et?' , 2355124
  2174. SELECT * FROM Questions
  2175.  
  2176. EXEC Enrolled_Student_View_Questions 'MATH501' , 2355124
  2177.  
  2178. EXEC Enrolled_Student_View_Questions 'CSEN601' , 2355124
  2179.  
  2180. --proc 4 far2 el "e"
  2181.  
  2182. EXEC Enrolled_Student_View_All_Assignments 2355124
  2183. SELECT * FROM Assignments
  2184.  
  2185. EXEC Enrolled_Student_Solves_Assignment 2355124 , 4 , 'kero.adel@ST.Fatima.edu.eg' , 'CSEN601' , 'boss enta 5od el quiz 7otto fel 5allast yetla3lak social network agmad men facebook'
  2186. SELECT * FROM Assignments_Solved_By_Students
  2187.  
  2188. EXEC Enrolled_Students_Views_Assignments_Grades 2355124
  2189.  
  2190.  
  2191. PRINT DATEDIFF(DAY,'11-27-16','11-28-16')
  2192.  
  2193. EXEC Enrolled_Student_Views_Announcements5 2345124
  2194.  
  2195. SELECT * FROM Announcements
  2196. */
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202. --USE dec3h
  2203. --GO
  2204.  
  2205.  
  2206.  
  2207.  
  2208. --PHP PROCEDURES
  2209.  
  2210. CREATE PROC AdminLogIn
  2211. @unamein VARCHAR(25),
  2212. @passin VARCHAR(25)
  2213. AS
  2214.     SELECT *
  2215.     FROM Employees e
  2216.     WHERE e.employee_user_name = @unamein AND e.employee_password = @passin AND e.is_administrator = '1'
  2217. GO
  2218.  
  2219. CREATE PROC StudentLogIn
  2220. @unamein VARCHAR(25),
  2221. @passin VARCHAR(25)
  2222. AS
  2223.     SELECT *
  2224.     FROM Enrolled_Students e
  2225.     WHERE e.student_user_name = @unamein AND e.student_password = @passin
  2226. GO
  2227.  
  2228. CREATE PROC ParentLogIn
  2229. @unamein VARCHAR(25),
  2230. @passin VARCHAR(25)
  2231. AS
  2232.     SELECT *
  2233.     FROM Parents e
  2234.     WHERE e.parent_user_name = @unamein AND e.parent_password = @passin
  2235. GO
  2236.  
  2237.  
  2238. CREATE PROC TeacherLogIn
  2239. @unamein VARCHAR(25),
  2240. @passin VARCHAR(25)
  2241. AS
  2242.     SELECT *
  2243.     FROM Employees e
  2244.     WHERE e.employee_user_name = @unamein AND e.employee_password = @passin AND e.is_teacher = '1'
  2245. GO
  2246.  
  2247. --USE dec3h
  2248. --GO
  2249.  
  2250. --EXEC TeacherLogIn "bb" , "bb"
  2251.  
  2252. CREATE PROC TeacherSignUp
  2253. @unamein VARCHAR(25),
  2254. @passin VARCHAR(25)
  2255. AS
  2256.     SELECT first_name , email
  2257.     FROM Employees e
  2258.     WHERE e.employee_user_name = @unamein AND e.employee_password = @passin AND e.is_administrator = '1'
  2259. GO
  2260.  
  2261. --EXEC ParentLogIn "aa" , "aa"
  2262.  
  2263. --USE dec3h
  2264. --GO
  2265.  
  2266. --SELECT * FROM Enrolled_Students
  2267.  
  2268. INSERT INTO Enrolled_Students
  2269. (ssn , student_user_name , student_password)
  2270. VALUES(12341234 , 'aa' , 'aa')
  2271. INSERT INTO Enrolled_Students --school_email , parent_email
  2272. (ssn,student_level,name,gender,birth_date,student_password,student_user_name,school_email,parent_email)
  2273. VALUES (211555,5,'7ommoseyya',0,'1996-4-2','bb','bb','Modern@edu.eg','shady.azoz@MSA.edu.eg')
  2274. GO
  2275.  
  2276. --SELECT * FROM Employees
  2277.  
  2278. --SELECT * FROM Parents
  2279.  
  2280. --SELECT * FROM
  2281.  
  2282. --Teacher_Sign_Up
  2283.  
  2284. --EXEC InsertParents "ASDF","asdf","asfd","ads","adsf","asdf","asdf"
  2285.  
  2286. --EXEC InsertParents "aa","aa","aa","aa","aa","aa","aa"
  2287.  
  2288. --EXEC Enrolled_Student_Info_Update 12341234 ,
  2289.  
  2290. --InsertParents
  2291.  
  2292.  
  2293. /*CREATE PROC ParentSignUp
  2294. @unamein VARCHAR(25),
  2295. @passin VARCHAR(25),
  2296. @email_in VARCHAR(50),
  2297. @address_in VARCHAR(100),
  2298. @fname_in VARCHAR(25),
  2299. @lname_in VARCHAR(25),
  2300. @phone_in VARCHAR(20)
  2301. AS
  2302.     SELECT first_name , email
  2303.     FROM Employees e
  2304.     WHERE e.employee_user_name = @unamein AND e.employee_password = @passin AND e.is_administrator = '1'
  2305. GO*/
  2306.  
  2307. --SELECT * FROM Employees
  2308.  
  2309. --EXEC AdminLogIn "ashraf.hassan" , "hoooosoooo"
  2310.  
  2311.  
  2312.  
  2313. --SELECT *
  2314. --FROM Employees e
  2315. --WHERE e.is_verified = '0' AND e.is_teacher = '1'
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325. CREATE PROC ES_View_Info
  2326. @ssn_in INT
  2327. AS
  2328.     SELECT *
  2329.     FROM Enrolled_Students es
  2330.     WHERE es.ssn = @ssn_in
  2331. GO
  2332. --THEN USE
  2333. --EXEC Enrolled_Student_Info_Update
  2334. /*
  2335. @ssn_in INT,
  2336. @name_in VARCHAR(50),
  2337. @gender_in BIT,
  2338. @birth_date_in DATE,
  2339. @password_in VARCHAR(20),
  2340. @school_email_in VARCHAR(50),
  2341. @parent_email_in VARCHAR(50)
  2342. */
  2343.  
  2344.  
  2345.  
  2346.  
  2347. -- Enrolled_Student_View_Courses
  2348. --@ssn_in INT
  2349.  
  2350.  
  2351. --ok
  2352.  
  2353. --ok
  2354.  
  2355. --ok
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369. --EXEC sp_who2
  2370. /*
  2371. USE master
  2372. GO
  2373. ALTER DATABASE dec3e
  2374. SET OFFLINE WITH ROLLBACK IMMEDIATE
  2375. GO
  2376.  
  2377. DROP DATABASE dec3e*/
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.  
  2388. --mikel dec5
  2389.  
  2390. CREATE PROC ViewSchools
  2391. @school_name VARCHAR(50),
  2392. @school_address VARCHAR(100),
  2393. @school_type bit
  2394. AS
  2395.     IF  @school_name IS NULL AND
  2396.         @school_address IS NULL AND
  2397.         @school_type IS NULL
  2398.         Print 'Null Input'
  2399.     ELSE
  2400.         IF @school_name IS NOT NULL
  2401.         BEGIN
  2402.             SELECT *
  2403.             FROM Schools
  2404.             WHERE @school_name IS NOT NULL AND name = @school_name
  2405.             RETURN
  2406.         END
  2407.         IF @school_address IS NOT NULL
  2408.         BEGIN
  2409.             SELECT *
  2410.             FROM Schools
  2411.             WHERE @school_address IS NOT NULL AND school_address = @school_address
  2412.             RETURN
  2413.         END
  2414.         IF @school_type IS NOT NULL
  2415.         BEGIN
  2416.             SELECT *
  2417.             FROM Schools
  2418.             WHERE @school_type IS NOT NULL AND is_international = @school_type
  2419.             RETURN
  2420.         END
  2421. GO
  2422.  
  2423.  
  2424. --exec ViewSchools 'Elite', Null, 1
  2425.  
  2426. CREATE PROC SchoolReviews
  2427.     @email VARCHAR(50)
  2428. AS
  2429.     SELECT *
  2430.     FROM Parents_Write_Review_Schools
  2431.     WHERE school_email = @email
  2432. GO
  2433.  
  2434. CREATE PROC SchoolAnonucements
  2435.     @email VARCHAR(50)
  2436. AS
  2437.     SELECT *
  2438.     FROM dbo.Announcements
  2439.     WHERE school_email = @email
  2440. GO
  2441. CREATE FUNCTION GetStudentSSN(@username VARCHAR(20), @pass VARCHAR(20))
  2442.     RETURNS INT
  2443. BEGIN
  2444.     DECLARE @returnedValue INT
  2445.     SET @returnedValue = -1
  2446.         SELECT @returnedValue = ssn
  2447.         FROM Enrolled_Students
  2448.         WHERE student_user_name = @username AND student_password = @pass
  2449.     RETURN @returnedValue
  2450. END
  2451. GO
  2452.  
  2453. CREATE FUNCTION GetParentEmail(@username VARCHAR(20), @pass VARCHAR(20))
  2454.     RETURNS VARCHAR(50)
  2455. BEGIN
  2456.     DECLARE @returnedValue VARCHAR(50)
  2457.     SET @returnedValue = ''
  2458.         SELECT @returnedValue = email
  2459.         FROM Parents
  2460.         WHERE parent_user_name = @username AND parent_password = @pass
  2461.     RETURN @returnedValue
  2462. END
  2463. GO
  2464.  
  2465. CREATE FUNCTION GetEmployeeEmail(@username VARCHAR(20), @pass VARCHAR(20), @isAdmin BIT)
  2466.     RETURNS VARCHAR(50)
  2467. BEGIN
  2468.     DECLARE @returnedValue VARCHAR(50)
  2469.     SET @returnedValue = ''
  2470.         IF @isAdmin = 1
  2471.             SELECT @returnedValue = email
  2472.             FROM Employees
  2473.             WHERE employee_user_name = @username AND employee_password = @pass AND is_administrator = 1
  2474.         ELSE
  2475.             SELECT @returnedValue = email
  2476.             FROM Employees
  2477.             WHERE employee_user_name = @username AND employee_password = @pass AND is_administrator = 0
  2478.     RETURN @returnedValue
  2479. END
  2480. GO
  2481.  
  2482. CREATE PROC ViewUnverifiedTeachers
  2483. @admin_email VARCHAR(50)
  2484. AS
  2485.     IF
  2486.         @admin_email IS NULL
  2487.         print 'Null Input'
  2488.     ELSE
  2489.         DECLARE @isAdmin BIT
  2490.         DECLARE @school_email VARCHAR(50)
  2491.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  2492.         FROM Employees e
  2493.         WHERE e.email = @admin_email
  2494.         IF @isAdmin = 1
  2495.             SELECT *
  2496.             FROM Employees e
  2497.             WHERE e.is_teacher = 1 AND e.school_email = @school_email AND employee_password IS NULL AND employee_user_name IS NULL
  2498.         ELSE
  2499.             PRINT 'Not Admin'
  2500. GO
  2501.  
  2502. CREATE FUNCTION CheckAdminExists(@username VARCHAR(20), @pass VARCHAR(20), @email VARCHAR(50))
  2503.     RETURNS BIT
  2504. BEGIN
  2505.     DECLARE @returnedValue BIT
  2506.     SET @returnedValue = 0
  2507.         IF EXISTS
  2508.         (
  2509.             SELECT *
  2510.             FROM Employees
  2511.             WHERE employee_user_name = @username AND employee_password = @pass AND email = @email AND is_administrator = 1
  2512.         )
  2513.         SET @returnedValue = 1
  2514.     RETURN @returnedValue
  2515. END
  2516. GO
  2517. CREATE FUNCTION CheckTeacherExists(@username VARCHAR(20), @pass VARCHAR(20), @email VARCHAR(50))
  2518.     RETURNS BIT
  2519. BEGIN
  2520.     DECLARE @returnedValue BIT
  2521.     SET @returnedValue = 0
  2522.         IF EXISTS
  2523.         (
  2524.             SELECT *
  2525.             FROM Employees
  2526.             WHERE employee_user_name = @username AND employee_password = @pass AND email = @email AND is_teacher = 1
  2527.         )
  2528.         SET @returnedValue = 1
  2529.     RETURN @returnedValue
  2530. END
  2531. GO
  2532. CREATE FUNCTION CheckParentExists(@username VARCHAR(20), @pass VARCHAR(20), @email VARCHAR(50))
  2533.     RETURNS BIT
  2534. BEGIN
  2535.     DECLARE @returnedValue BIT
  2536.     SET @returnedValue = 0
  2537.         IF EXISTS
  2538.         (
  2539.             SELECT *
  2540.             FROM Parents
  2541.             WHERE parent_user_name = @username AND parent_password = @pass AND email = @email
  2542.         )
  2543.         SET @returnedValue = 1
  2544.     RETURN @returnedValue
  2545. END
  2546. GO
  2547. CREATE FUNCTION CheckStudentExists(@username VARCHAR(20), @pass VARCHAR(20), @ssn INT)
  2548.     RETURNS BIT
  2549. BEGIN
  2550.     DECLARE @returnedValue BIT
  2551.     SET @returnedValue = 0
  2552.         IF EXISTS
  2553.         (
  2554.             SELECT *
  2555.             FROM Enrolled_Students
  2556.             WHERE student_user_name = @username AND student_password = @pass AND ssn = @ssn
  2557.         )
  2558.         SET @returnedValue = 1
  2559.     RETURN @returnedValue
  2560. END
  2561. GO
  2562.  
  2563. CREATE PROC ViewStudentApplications
  2564. @admin_email VARCHAR(50)
  2565. AS
  2566.     IF
  2567.         @admin_email IS NULL
  2568.         print 'Null Input'
  2569.     ELSE
  2570.         DECLARE @isAdmin BIT
  2571.         DECLARE @school_email VARCHAR(50)
  2572.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  2573.         FROM Employees e
  2574.         WHERE e.email = @admin_email
  2575.         IF @isAdmin = 1
  2576.             SELECT *
  2577.             FROM Applicants_Applies_Schools
  2578.             WHERE school_email = @school_email AND accepted = 0
  2579.         ELSE
  2580.             PRINT 'Not Admin'
  2581. GO
  2582.  
  2583.  
  2584. CREATE PROC ViewUnverifiedStudents
  2585. @admin_email VARCHAR(50)
  2586. AS
  2587.     IF
  2588.         @admin_email IS NULL
  2589.         print 'Null Input'
  2590.     ELSE
  2591.         DECLARE @isAdmin BIT
  2592.         DECLARE @school_email VARCHAR(50)
  2593.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  2594.         FROM Employees e
  2595.         WHERE e.email = @admin_email
  2596.         IF @isAdmin = 1
  2597.             SELECT *
  2598.             FROM Enrolled_Students
  2599.             WHERE school_email = @school_email AND student_password IS NULL AND student_user_name IS NULL
  2600.         ELSE
  2601.             PRINT 'Not Admin'
  2602. GO
  2603.  
  2604. CREATE PROC ViewActivities
  2605. @admin_email VARCHAR(50)
  2606. AS
  2607.     IF
  2608.         @admin_email IS NULL
  2609.         print 'Null Input'
  2610.     ELSE
  2611.         DECLARE @isAdmin BIT
  2612.         DECLARE @school_email VARCHAR(50)
  2613.         SELECT @isAdmin = is_administrator, @school_email = e.school_email
  2614.         FROM Employees e
  2615.         WHERE e.email = @admin_email
  2616.         IF @isAdmin = 1
  2617.             SELECT *
  2618.             FROM Activities
  2619.             WHERE administrator_email = @admin_email
  2620.         ELSE
  2621.             PRINT 'Not Admin'
  2622. GO
  2623.  
  2624.  
  2625. CREATE PROC tstasdfa
  2626. @teacher_email VARCHAR(50)
  2627. AS
  2628.     SELECT *
  2629.     FROM Enrolled_Students e
  2630.     INNER JOIN Attends a ON (e.ssn = a.enrolled_ssn)
  2631.     WHERE a.course_code IN
  2632.         (SELECT course_code
  2633.         FROM Teaches
  2634.         WHERE teacher_email = @teacher_email)
  2635. GO
  2636. /*
  2637. CREATE TABLE Employees
  2638. (
  2639.     email VARCHAR(50) PRIMARY KEY,
  2640.     birth_date DATE,
  2641.     employee_user_name VARCHAR(25) UNIQUE,
  2642.     employee_password VARCHAR(25),
  2643.     first_name VARCHAR(25),
  2644.     middle_name VARCHAR(25),
  2645.     last_name VARCHAR(25),
  2646.     gender BIT,
  2647.     employee_address VARCHAR(100),
  2648.     salary FLOAT,
  2649.     enrollment_year DATE,
  2650.     years_of_experience as (year(current_timestamp) - year(enrollment_year)),
  2651.     is_administrator BIT NOT NULL DEFAULT '0',
  2652.     is_teacher BIT NOT NULL DEFAULT '0',
  2653.     is_supervisor BIT NOT NULL DEFAULT '0',
  2654.     is_verified BIT NOT NULL DEFAULT '0',
  2655.     school_email VARCHAR(50),
  2656.     supervisor_email VARCHAR(50),
  2657. */
  2658.  
  2659. --EXEC TeacherAvgRating 'michael.sherif@ST.Fatima.edu.eg'
  2660.  
  2661. --heyya dih!
  2662. CREATE FUNCTION TAvgR(@t VARCHAR(50)) RETURNS FLOAT
  2663. AS BEGIN
  2664.     DECLARE @total FLOAT
  2665.     DECLARE @c FLOAT
  2666.     DECLARE @AvgRate FLOAT
  2667.     SELECT @total = SUM(pt.rating) , @c = COUNT(pt.rating)
  2668.     FROM Parents_Ratings_To_Teachers pt
  2669.     WHERE @t = pt.employee_email
  2670.     SET @AvgRate = @total/@c
  2671.     RETURN @AvgRate
  2672. END
  2673. GO
  2674.  
  2675. --SELECT * FROM Parents_Ratings_To_Teachers
  2676.  
  2677. --SELECT dbo.TAvgR('michael.sherif@ST.Fatima.edu.eg')
  2678.  
  2679.  
  2680. --EXEC teachersOfChildren 'maged.awad@MSA.edu.eg'
  2681.  
  2682. CREATE PROC teachersOfChildren
  2683. @parent_email VARCHAR(50)
  2684. AS
  2685.     SELECT es.first_name , es.middle_name , es.last_name , es.email , es.gender , es.years_of_experience , dbo.TAvgR(es.email)
  2686.     FROM Attends a
  2687.     INNER JOIN Teaches b ON b.course_code = a.course_code
  2688.     INNER JOIN Employees es ON b.teacher_email = es.email
  2689.     WHERE es.is_teacher = '1'
  2690.     AND EXISTS
  2691.     (
  2692.         SELECT *
  2693.         FROM Enrolled_Students ess
  2694.         WHERE ess.parent_email = @parent_email
  2695.         AND ess.ssn = a.enrolled_ssn
  2696.     )
  2697. GO
  2698.  
  2699. CREATE PROC SchoolsOfChildren
  2700. @parent_email VARCHAR(50)
  2701. AS
  2702.     SELECT s.name , s.email
  2703.     FROM Schools s
  2704.     INNER JOIN Enrolled_Students es ON es.school_email = s.email
  2705.     AND EXISTS(
  2706.         SELECT *
  2707.         FROM Enrolled_Students ess
  2708.         WHERE ess.parent_email = @parent_email
  2709.         AND ess.ssn = es.ssn
  2710.     )
  2711. GO
  2712.  
  2713. --EXEC SchoolsOfChildren 'shady.azoz@MSA.edu.eg'
  2714.  
  2715. CREATE PROC aa
  2716. @parent_email_in VARCHAR(50)
  2717. AS
  2718.     SELECT *
  2719.     FROM Applicants_Applies_Schools a
  2720.     WHERE a.parent_email = @parent_email_in AND a.accepted = '1'
  2721. GO
  2722.  
  2723. --EXEC aa 'maged.awad@MSA.edu.eg'
  2724.  
  2725.  
  2726. CREATE PROC ab
  2727. @ssn_in INT
  2728. AS
  2729.     SELECT name
  2730.     FROM Enrolled_Students
  2731.     WHERE ssn = @ssn_in
  2732.  
  2733.     UNION
  2734.  
  2735.     SELECT name
  2736.     FROM Applicants
  2737.     WHERE ssn = @ssn_in
  2738. GO
  2739.  
  2740.  
  2741. CREATE PROC ViewParentReviews
  2742. @parent_email_in VARCHAR(50)
  2743. AS
  2744.     SELECT school_email , reviews
  2745.     FROM Parents_Write_Review_Schools
  2746.     WHERE parent_email = @parent_email_in
  2747. GO
  2748.  
  2749. --EXEC ViewParentReviews 'shady.azoz@MSA.edu.eg'
  2750.  
  2751.  
  2752. /*  parent_email VARCHAR(50),
  2753.     school_email VARCHAR(50),
  2754.     reviews VARCHAR(200),*/
  2755.  
  2756. CREATE PROC deleteReview
  2757. @parent_email_in VARCHAR(50),
  2758. @school_email_in VARCHAR(50)
  2759. AS
  2760.     DELETE FROM Parents_Write_Review_Schools
  2761.     WHERE parent_email = @parent_email_in AND school_email = @school_email_in
  2762. GO
  2763.  
  2764. --select * from Enrolled_Students where 2345124 = ssn
  2765.  
  2766.  
  2767.  
  2768. --select * from Assignments where course_code = 'CSEN601'
  2769.  
  2770.  
  2771. --SELECT * FROM Schools WHERE email IN (SELECT school_email FROM Employees WHERE email = 'bb')
  2772.  
  2773.  
  2774.  
  2775. CREATE PROC CheckHighSchool
  2776. @ssn_in INT
  2777. AS
  2778.     SELECT y.is_high
  2779.     FROM Enrolled_Students x
  2780.     INNER JOIN Schools y ON x.school_email = y.email AND x.ssn = 2345124
  2781. GO
  2782.  
  2783. /*
  2784. SELECT *
  2785. FROM Enrolled_Students z
  2786. WHERE EXISTS
  2787. (
  2788.     SELECT y.is_high
  2789.     FROM Enrolled_Students x
  2790.     INNER JOIN Schools y ON x.school_email = y.email AND x.ssn = z.ssn
  2791.     WHERE y.is_high = '1'
  2792. )*/
  2793.  
  2794.  
  2795.  
  2796.  
  2797. --SELECT * FROM Clubs_Offered_By_Schools
  2798. --SELECT * FROM Enrolled_Students
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823. --mo2akkatan
  2824. --USE dec3h
  2825. --GO
  2826.  
  2827.  
  2828.  
  2829. --EXEC Enrolled_Student_Info_Update 12341234 , "lkjlk" , 0 , "2016-2-5" , "aa" , "Modern@edu.eg" , 'maged.awad@MSA.edu.eg'
  2830.  
  2831.  
  2832. --EXEC Enrolled_Student_Info_Update 12341234 , "aaq" , 1 , "2011-2-2" , "aa" , "Modern@edu.eg" , "maged.awad@MSA.edu.eg"
  2833.  
  2834.  
  2835.  
  2836. --EXEC Enrolled_Student_View_Courses
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842. CREATE PROC ES_View_School_Clubs
  2843. @ssn_in INT
  2844. AS
  2845.     SELECT c.*
  2846.     FROM Clubs c
  2847.     INNER JOIN Clubs_Offered_By_Schools co ON c.name = co.name
  2848.     WHERE EXISTS
  2849.     (
  2850.         SELECT *
  2851.         FROM Enrolled_Students ess
  2852.         WHERE ess.ssn = @ssn_in AND ess.school_email = co.school_email
  2853.     )
  2854. GO
  2855.  
  2856. --EXEC ES_View_School_Clubs 2113524
  2857.  
  2858. --EXEC Enrolled_Student_Join_Club 211555 , "TImon"
  2859.  
  2860. --SELECT * FROM Clubs_Joined_By_Enrolled_Student
  2861.  
  2862. --SELECT * FROM Enrolled_Students
  2863.  
  2864. /*UPDATE Enrolled_Students
  2865. SET student_level = 10
  2866. WHERE student_level = 5*/
  2867.  
  2868.  
  2869.  
  2870. --EXEC AdminLogIn "bb" , "bb"
  2871.  
  2872. --EXEC AdminLogIn "teshtar.teshtar" , "teshhhhhh"
  2873.  
  2874. --EXEC ViewUnverifiedTeachers "george.krahy@ST.Fatima.edu.eg"
  2875.  
  2876. --SELECT * FROM Employees
  2877. --GO
  2878.  
  2879. CREATE PROC AdminVerifiesTeacher
  2880. @teacher_mail_in VARCHAR(50)
  2881. AS
  2882.     UPDATE Employees
  2883.     SET is_verified = '1'
  2884.     WHERE email = @teacher_mail_in
  2885. GO
  2886.  
  2887. --EXEC AdminVerifiesTeacher 'bb'
  2888.  
  2889.  
  2890. --EXEC Enrolled_Student_View_Questions 'CSEN601', 2355124
  2891.  
  2892. --EXEC CreateActivity "ashraf.hassan@ST.Fatima.edu.eg" , "2016-3-3" , "ssasf" , "ashraf.hassan@ST.Fatima.edu.eg" , "add" , "sdsd" , "df"
  2893.  
  2894. --SELECT * FROM Activities
  2895.  
  2896. --SELECT * FROM Parents
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903. --USE dec3h
  2904. --GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement