131 lines
3.4 KiB
C#
131 lines
3.4 KiB
C#
using System.Net;
|
|
using MySql.Data.MySqlClient;
|
|
|
|
namespace Server
|
|
{
|
|
public class CreateProcedure : Route
|
|
{
|
|
public static void HandleRequest(HttpListenerRequest request, HttpListenerResponse response)
|
|
{
|
|
try
|
|
{
|
|
MySqlCommand cmd = new MySqlCommand();
|
|
|
|
using (MySqlConnection conn = new MySqlConnection(connectionString))
|
|
{
|
|
conn.Open();
|
|
cmd.Connection = conn;
|
|
cmd.CommandText =
|
|
@"
|
|
CREATE PROCEDURE fill_timelog ()
|
|
BEGIN
|
|
DECLARE j INT DEFAULT 1;
|
|
DECLARE users INT DEFAULT 1;
|
|
DECLARE logs INT;
|
|
DECLARE hours FLOAT;
|
|
DECLARE project INT;
|
|
DECLARE curDate DATE DEFAULT '2024-11-18';
|
|
DECLARE h2 INT;
|
|
|
|
WHILE users <= 100 DO
|
|
SET logs = FLOOR(1 + (RAND() * 20));
|
|
SET j = 1;
|
|
WHILE j <= logs DO
|
|
SET project = FLOOR(1 + (RAND() * 3));
|
|
SET curDate = DATE_ADD('2020-01-01', INTERVAL FLOOR(RAND() * DATEDIFF('2020-02-01', '2020-01-01')) DAY);
|
|
SET hours = (RAND() * (8 - 0.25)) + 0.25;
|
|
|
|
SELECT SUM(time) INTO h2
|
|
FROM Timelog
|
|
WHERE date = curdate && user = users;
|
|
|
|
WHILE(h2 + hours) > 8 DO
|
|
SET curDate = DATE_ADD('2020-01-01', INTERVAL FLOOR(RAND() * DATEDIFF('2020-02-01', '2020-01-01')) DAY);
|
|
|
|
SELECT SUM(time)INTO h2
|
|
FROM Timelog
|
|
WHERE date = curdate && user = users;
|
|
|
|
END WHILE;
|
|
INSERT INTO Timelog(user, project, date, time) VALUES(users, project, curDate, hours);
|
|
SET j = j + 1;
|
|
END WHILE;
|
|
SET users = users + 1;
|
|
END WHILE;
|
|
END;";
|
|
cmd.ExecuteNonQuery();
|
|
cmd.CommandText =
|
|
@"CREATE PROCEDURE InitDB()
|
|
BEGIN
|
|
DECLARE i INT DEFAULT 1;
|
|
TRUNCATE TABLE Timelog;
|
|
TRUNCATE TABLE Project;
|
|
SET foreign_key_checks = 0;
|
|
TRUNCATE TABLE User;
|
|
SET foreign_key_checks = 1;
|
|
|
|
INSERT INTO Project(name) VALUES('My own'),('Outcons'),('Free Time');
|
|
|
|
CREATE TEMPORARY TABLE temp_fname (fname VARCHAR(255));
|
|
INSERT INTO temp_fname (fname) VALUES
|
|
( 'John' ),
|
|
( 'Gringo' ),
|
|
( 'Mark' ),
|
|
( 'Lisa' ),
|
|
( 'Maria' ),
|
|
( 'Sonya' ),
|
|
( 'Philip' ),
|
|
( 'Jose' ),
|
|
( 'Lorenzo' ),
|
|
( 'George' ),
|
|
( 'Justin' );
|
|
|
|
CREATE TEMPORARY TABLE temp_lname (lname VARCHAR(255));
|
|
INSERT INTO temp_lname (lname) VALUES
|
|
( 'Johnson' ),
|
|
( 'Lamas' ),
|
|
( 'Jackson' ),
|
|
( 'Brown' ),
|
|
( 'Mason' ),
|
|
( 'Rodriguez' ),
|
|
( 'Roberts' ),
|
|
( 'Thomas' ),
|
|
( 'Rose' ),
|
|
( 'McDonalds' );
|
|
|
|
CREATE TEMPORARY TABLE temp_mail (mail VARCHAR(255));
|
|
INSERT INTO temp_mail (mail) VALUES
|
|
( 'hotmail.com' ),
|
|
( 'gmail.com' ),
|
|
( 'live.com' );
|
|
|
|
WHILE i <= 100 DO
|
|
INSERT INTO User (f_name, l_name, mail)
|
|
SELECT
|
|
(SELECT fname FROM temp_fname ORDER BY RAND() LIMIT 1),
|
|
(SELECT lname FROM temp_lname ORDER BY RAND() LIMIT 1),
|
|
(SELECT mail FROM temp_mail ORDER BY RAND() LIMIT 1);
|
|
SET i = i + 1;
|
|
END WHILE;
|
|
|
|
UPDATE User
|
|
SET User.mail = CONCAT(User.f_name,'.', User.l_name,'@', User.mail);
|
|
|
|
CALL fill_timelog();
|
|
DROP TABLE temp_mail;
|
|
DROP TABLE temp_fname;
|
|
DROP TABLE temp_lname;
|
|
END;";
|
|
cmd.ExecuteNonQuery();
|
|
// prepare response
|
|
SendSuccess(response);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SendError(response, ex);
|
|
}
|
|
}
|
|
}
|
|
}
|