From 06ea52ead66c1038b248ca644ce0e0a29ee0065f Mon Sep 17 00:00:00 2001 From: QkoSad Date: Mon, 25 Nov 2024 07:49:45 +0200 Subject: [PATCH] minor adjustments to backend --- backend/sql/current.sql | 34 ++-- backendCs/CreateProcedure.cs | 133 +++++++++++++++ backendCs/Getall.cs | 48 +++--- backendCs/Gettopten.cs | 33 ++-- backendCs/Getuser.cs | 46 ++--- backendCs/Program.cs | 104 ++++++------ backendCs/Reset.cs | 13 +- backendCs/bin/Debug/net8.0/TimelogBackend.dll | Bin 14848 -> 20992 bytes backendCs/bin/Debug/net8.0/TimelogBackend.pdb | Bin 14752 -> 14928 bytes .../net8.0/TimelogBackend.AssemblyInfo.cs | 2 +- .../TimelogBackend.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 2 +- .../Debug/net8.0/TimelogBackend.assets.cache | Bin 15604 -> 15604 bytes ...elogBackend.csproj.CoreCompileInputs.cache | 2 +- ...TimelogBackend.csproj.FileListAbsolute.txt | 38 +++++ backendCs/obj/Debug/net8.0/TimelogBackend.dll | Bin 14848 -> 20992 bytes .../TimelogBackend.genruntimeconfig.cache | 2 +- backendCs/obj/Debug/net8.0/TimelogBackend.pdb | Bin 14752 -> 14928 bytes .../obj/Debug/net8.0/ref/TimelogBackend.dll | Bin 7680 -> 7680 bytes .../Debug/net8.0/refint/TimelogBackend.dll | Bin 7680 -> 7680 bytes .../TimelogBackend.csproj.nuget.dgspec.json | 10 +- backendCs/obj/project.assets.json | 6 +- backendCs/obj/project.nuget.cache | 4 +- frontend/src/App.tsx | 2 +- frontend/src/components/LeftSide.tsx | 158 +++++++++++++----- frontend/src/components/RightSide.tsx | 49 +++--- 26 files changed, 459 insertions(+), 229 deletions(-) create mode 100644 backendCs/CreateProcedure.cs diff --git a/backend/sql/current.sql b/backend/sql/current.sql index b0df285..b02cd47 100644 --- a/backend/sql/current.sql +++ b/backend/sql/current.sql @@ -7,11 +7,6 @@ DELIMITER $$; CREATE PROCEDURE CleanTables() BEGIN - TRUNCATE TABLE Timelog; - TRUNCATE TABLE Project; - SET foreign_key_checks = 0; - TRUNCATE TABLE User; - SET foreign_key_checks = 1; END $$ DELIMITER ; @@ -20,7 +15,13 @@ DELIMITER ; DELIMITER $$ CREATE PROCEDURE InitDB() BEGIN -CALL CleanTables(); +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)); @@ -55,14 +56,15 @@ INSERT INTO temp_mail (mail) VALUES ( "hotmail.com" ), ( "gmail.com" ), ( "live.com" ); - -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) -FROM - (SELECT 1 FROM information_schema.tables LIMIT 100) AS temp; + +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); @@ -83,7 +85,7 @@ BEGIN DECLARE logs INT; DECLARE hours FLOAT; DECLARE project INT; - DECLARE curDate DATE DEFAULT "2024-11-18"; + DECLARE curDate DATE DEFAULT '2024-11-18'; DECLARE h2 INT; WHILE users <= 100 DO @@ -118,7 +120,7 @@ DELIMITER ; ## -- get data SELECT t.time,t.date,p.name,u.f_name,u.l_name,u.mail FROM Timelog t INNER JOIN Project p ON p.id=t.project INNER JOIN User u ON u.id=t.user; - +-- old timelog with adding each on a new day CREATE PROCEDURE fill_timelog () BEGIN DECLARE j INT DEFAULT 1; diff --git a/backendCs/CreateProcedure.cs b/backendCs/CreateProcedure.cs new file mode 100644 index 0000000..1374120 --- /dev/null +++ b/backendCs/CreateProcedure.cs @@ -0,0 +1,133 @@ +using System.Net; +using System.Text; +using MySql.Data.MySqlClient; +namespace Server +{ + public class CreateProcedure + { + public static void run(MySqlConnection conn, HttpListenerRequest request, HttpListenerResponse response) + { + try + { + // Open the connection + conn.Open(); + // Prepare the SQL query + MySqlCommand cmd = new MySqlCommand(); + 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 + response.StatusCode = (int)HttpStatusCode.OK; + response.StatusDescription = "Status OK"; + } + catch (Exception ex) + { + // Handle any connection errors + string errorMessage = $"Error: {ex.Message}"; + byte[] buffer = Encoding.UTF8.GetBytes(errorMessage); + response.ContentType = "text/plain"; + response.ContentLength64 = buffer.Length; + response.OutputStream.Write(buffer, 0, buffer.Length); + } + conn.Close(); + } + } +} diff --git a/backendCs/Getall.cs b/backendCs/Getall.cs index 0b628d4..160f781 100644 --- a/backendCs/Getall.cs +++ b/backendCs/Getall.cs @@ -1,4 +1,3 @@ -using System; using System.Net; using System.Text; using MySql.Data.MySqlClient; @@ -6,15 +5,16 @@ using Newtonsoft.Json; namespace Server { + // there should be a better way to deal with data comming from sql public class All { - public object f_name { get; set; } - public object l_name { get; set; } - public object mail { get; set; } - public object name { get; set; } - public object time { get; set; } - public object date { get; set; } - public object user { get; set; } + public object? f_name { get; set; } + public object? l_name { get; set; } + public object? mail { get; set; } + public object? name { get; set; } + public object? time { get; set; } + public object? date { get; set; } + public object? user { get; set; } } public class Getall @@ -26,14 +26,16 @@ namespace Server // Open the connection conn.Open(); // Prepare the SQL query - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = conn; + MySqlCommand cmd = new MySqlCommand(); + cmd.Connection = conn; + // get url params var queryString = request.QueryString; - string from = queryString["from"]; - string to = queryString["to"]; - string sortby = queryString["sortby"]; - string offset = queryString["offset"]; - + string? from = queryString["from"]; + string? to = queryString["to"]; + string? sortby = queryString["sortby"]; + string? offset = queryString["offset"]; + string? order = queryString["order"]; + order = order == "true" ? "ASC" : "DESC"; // this shenanigan is needed to remove the "" around // group by string sqlQ = @"SELECT u.f_name,u.l_name,u.mail,p.name,t.time,t.date,t.user @@ -41,6 +43,7 @@ namespace Server INNER JOIN Project p ON p.id=t.project INNER JOIN User u ON u.id=t.user "; string offsetQ = " LIMIT 10 OFFSET " + offset + ";"; + // depending on the incoming parameters construct a Query if (!string.IsNullOrEmpty(to) && !string.IsNullOrEmpty(from)) { string whereQ = " WHERE t.date BETWEEN @from AND @to "; @@ -48,15 +51,18 @@ namespace Server } if (!string.IsNullOrEmpty(sortby)) { - string orderQ = " ORDER BY " + sortby; + string orderQ = " ORDER BY " + sortby + " " + order; sqlQ = sqlQ + orderQ; } - myCommand.CommandText = sqlQ + offsetQ; - myCommand.Parameters.AddWithValue("@from", from); - myCommand.Parameters.AddWithValue("@to", to); + // add the final line to the query + cmd.CommandText = sqlQ + offsetQ; + // those don't produce error if they don't find their variables + cmd.Parameters.AddWithValue("@from", from); + cmd.Parameters.AddWithValue("@to", to); // Execute the query and read the results - MySqlDataReader reader = myCommand.ExecuteReader(); + MySqlDataReader reader = cmd.ExecuteReader(); + List entries = new List(); while (reader.Read()) { @@ -71,7 +77,7 @@ namespace Server mail = reader["mail"], }); } - // Serialize the data to JSON + // serialize the data to JSON string jsonResponse = JsonConvert.SerializeObject(entries); // prepare response byte[] buffer = Encoding.UTF8.GetBytes(jsonResponse); diff --git a/backendCs/Gettopten.cs b/backendCs/Gettopten.cs index 315ba3b..b1d818f 100644 --- a/backendCs/Gettopten.cs +++ b/backendCs/Gettopten.cs @@ -1,4 +1,3 @@ -using System; using System.Net; using System.Text; using MySql.Data.MySqlClient; @@ -8,13 +7,13 @@ namespace Server { public class TopTen { - public object user { get; set; } - public object date { get; set; } - public object project { get; set; } - public object f_name { get; set; } - public object l_name { get; set; } - public object name { get; set; } - public object total_time { get; set; } + public object? user { get; set; } + public object? date { get; set; } + public object? project { get; set; } + public object? f_name { get; set; } + public object? l_name { get; set; } + public object? name { get; set; } + public object? total_time { get; set; } } public class Gettopten { @@ -25,12 +24,12 @@ namespace Server // Open the connection conn.Open(); // Prepare the SQL query - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = conn; + MySqlCommand cmd = new MySqlCommand(); + cmd.Connection = conn; var queryString = request.QueryString; - string from = queryString["from"]; - string to = queryString["to"]; - string filterBy = queryString["filterBy"]; + string? from = queryString["from"]; + string? to = queryString["to"]; + string? filterBy = queryString["filterBy"]; // this shenanigan is needed to remove the "" around // group by string req = @"SELECT t.user,t.date,t.project,u.f_name,u.l_name,p.name,SUM(t.time) as total_time @@ -40,12 +39,12 @@ namespace Server WHERE t.date BETWEEN @from AND @to GROUP BY " + filterBy + @" ORDER BY total_time DESC LIMIT 10;"; - myCommand.CommandText = req; - myCommand.Parameters.AddWithValue("@from", from); - myCommand.Parameters.AddWithValue("@to", to); + cmd.CommandText = req; + cmd.Parameters.AddWithValue("@from", from); + cmd.Parameters.AddWithValue("@to", to); // Execute the query and read the results - MySqlDataReader reader = myCommand.ExecuteReader(); + MySqlDataReader reader = cmd.ExecuteReader(); List entries = new List(); while (reader.Read()) { diff --git a/backendCs/Getuser.cs b/backendCs/Getuser.cs index b97583d..96e5722 100644 --- a/backendCs/Getuser.cs +++ b/backendCs/Getuser.cs @@ -1,37 +1,11 @@ -using System; using System.Net; using System.Text; using MySql.Data.MySqlClient; +using System.Dynamic; using Newtonsoft.Json; namespace Server { - class DynamicObject - { - // A dictionary to store dynamic properties/fields - public Dictionary Fields { get; set; } - - public DynamicObject() - { - Fields = new Dictionary(); - } - - // Adding a dynamic field - public void AddField(object key, object value) - { - Fields[key] = value; - } - - // Retrieving a dynamic field - public object GetField(object key) - { - if (Fields.ContainsKey(key)) - { - return Fields[key]; - } - return null; - } - } public class Getuser { public static void run(MySqlConnection conn, HttpListenerRequest request, HttpListenerResponse response) @@ -41,27 +15,27 @@ namespace Server // Open the connection conn.Open(); // Prepare the SQL query - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = conn; - myCommand.CommandText = @"SELECT p.name, SUM(t.time) + MySqlCommand cmd = new MySqlCommand(); + cmd.Connection = conn; + cmd.CommandText = @"SELECT p.name, SUM(t.time) FROM Timelog t INNER JOIN Project p ON p.id=t.project INNER JOIN User u ON u.id=t.user WHERE User = @userid GROUP BY name;"; var queryString = request.QueryString; - string userid = queryString["userid"]; - myCommand.Parameters.AddWithValue("@userid", userid); + string? userid = queryString["userid"]; + cmd.Parameters.AddWithValue("@userid", userid); // Execute the query and read the results - MySqlDataReader reader = myCommand.ExecuteReader(); - DynamicObject dO = new DynamicObject(); + MySqlDataReader reader = cmd.ExecuteReader(); + dynamic expando = new ExpandoObject(); while (reader.Read()) { - dO.AddField(reader["name"], reader["SUM(t.time)"]); + ((IDictionary)expando)[reader["name"].ToString()] = reader["SUM(t.time)"]; } // Serialize the data to JSON - string jsonResponse = JsonConvert.SerializeObject(dO); + string jsonResponse = JsonConvert.SerializeObject(expando); // prepare response byte[] buffer = Encoding.UTF8.GetBytes(jsonResponse); response.ContentType = "application/json"; diff --git a/backendCs/Program.cs b/backendCs/Program.cs index b1914e8..48b5195 100644 --- a/backendCs/Program.cs +++ b/backendCs/Program.cs @@ -1,10 +1,7 @@ -using System; -using System.Net; +using System.Net; using System.Text; -using System.Threading; using MySql.Data.MySqlClient; -using Newtonsoft.Json; -using System.Collections.Generic; +/* using System.Threading; */ namespace Server @@ -20,56 +17,69 @@ namespace Server listener.Prefixes.Add("http://localhost:5000/api/gettopten/"); listener.Prefixes.Add("http://localhost:5000/api/getuser/"); listener.Prefixes.Add("http://localhost:5000/api/reset/"); + listener.Prefixes.Add("http://localhost:5000/api/createp/"); // Start listening for incoming requests listener.Start(); Console.WriteLine("Server is listening on http://localhost:5000/"); // god knows what that is - Thread listenerThread = new Thread(() => + /* Thread listenerThread = new Thread(() => */ + /* { */ + while (true) { - while (true) + // wait for request + HttpListenerContext context = listener.GetContext(); + // get response and request + HttpListenerRequest request = context.Request; + HttpListenerResponse response = context.Response; + // mysql connection + string connectionString = "server=127.0.0.1;uid=monty;pwd=some_pass;database=timelog"; + MySqlConnection conn = new MySqlConnection(connectionString); + + // url after localhost:5000/ + // i think the validation is unnecessry but the compiler has + // more experience + string uri; + if (request != null && request.Url != null) { - // wait for request - HttpListenerContext context = listener.GetContext(); - // get response and request - HttpListenerRequest request = context.Request; - HttpListenerResponse response = context.Response; - // mysql connection - string connectionString = "server=127.0.0.1;uid=monty;pwd=some_pass;database=timelog"; - MySqlConnection conn = new MySqlConnection(connectionString); - - // url after localhost:5000/ - var uri = request.Url.AbsolutePath; - - switch (uri) - { - case "/api/reset": - Reset.run(conn, request, response); - break; - case "/api/getall": - Getall.run(conn, request, response); - break; - case "/api/gettopten": - Gettopten.run(conn, request, response); - break; - case "/api/getuser": - Getuser.run(conn, request, response); - break; - default: - response.StatusCode = 404; - string errorMessage = "Not Found"; - byte[] buffer = Encoding.UTF8.GetBytes(errorMessage); - response.ContentType = "text/plain"; - response.ContentLength64 = buffer.Length; - response.OutputStream.Write(buffer, 0, buffer.Length); - break; - } - // Close the response - response.OutputStream.Close(); + uri = request.Url.AbsolutePath; } - }); - // Start the listener thread - listenerThread.Start(); + else + { + return; + } + switch (uri) + { + case "/api/reset": + Reset.run(conn, request, response); + break; + case "/api/getall": + Getall.run(conn, request, response); + break; + case "/api/gettopten": + Gettopten.run(conn, request, response); + break; + case "/api/getuser": + Getuser.run(conn, request, response); + break; + case "/api/createp": + CreateProcedure.run(conn, request, response); + break; + default: + response.StatusCode = 404; + string errorMessage = "Not Found"; + byte[] buffer = Encoding.UTF8.GetBytes(errorMessage); + response.ContentType = "text/plain"; + response.ContentLength64 = buffer.Length; + response.OutputStream.Write(buffer, 0, buffer.Length); + break; + } + // Close the response + response.OutputStream.Close(); + } + /* }); */ + /* // Start the listener thread */ + /* listenerThread.Start(); */ } } } diff --git a/backendCs/Reset.cs b/backendCs/Reset.cs index c3f55bc..27c7dd4 100644 --- a/backendCs/Reset.cs +++ b/backendCs/Reset.cs @@ -1,11 +1,9 @@ -using System; using System.Net; using System.Text; using MySql.Data.MySqlClient; namespace Server { - public class Reset { public static void run(MySqlConnection conn, HttpListenerRequest request, HttpListenerResponse response) @@ -15,11 +13,12 @@ namespace Server // Open the connection conn.Open(); // Prepare the SQL query - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = conn; - myCommand.CommandText = "CALL InitDB"; - MySqlDataReader reader = myCommand.ExecuteReader(); - + MySqlCommand cmd = new MySqlCommand(); + cmd.Connection = conn; + cmd.CommandText = "CALL InitDB"; + // execute query + cmd.ExecuteNonQuery(); + // set up and send response response.StatusCode = (int)HttpStatusCode.OK; response.StatusDescription = "Status OK"; } diff --git a/backendCs/bin/Debug/net8.0/TimelogBackend.dll b/backendCs/bin/Debug/net8.0/TimelogBackend.dll index 8a7362edc826585acc1bb902e56528c1e15e4001..fc574a6ec1b4d5f11c22ec33f1ff354f0bf7d59e 100644 GIT binary patch literal 20992 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 delta 6458 zcmZoz!q`wUp~Gvc=BIrOQ1F03iGiEZfPuk)fq{VoBB_%sk{;hxKL!Sn29W9o)`^P3JPiyCJRqfh3=AQY6`6D48&8R$a|HJIGR zD96{p3N@dNfq}tj@-{|!&ISes1||ju28+q}7?l(_!Dccrcz{J&8A7xe7}h8=FfcMO zFlaF_uuV?%G?=W&T*WWIz`(_zC2hdU;K#(kz&QCKn@qh30|OT~dl4f8LqWbM0|OTi zdl5H`&C6aS2xAMguoub0Ijlvx3=9RrY(+jy3FAfJvjL(x8vkt`4e z{DN$P{17G^1Dhb5AUl|oFA4GqTfP(n16R=%CWZozd}#&-E;Xpg115$7PMC-c$Rdtn zSrEl(F$EObf}F+t3=C|lf*eKlFPIn#^5qy9xbm487}yvm2@63?6atwT%_S_%Qj~#Yq%gXX!eWBLeVH&L8JO}lL56EFFgVJ90uz$X zJ~J{fd|_l@2x4GhkYZq9RASN)m>j@XF9b<*3=9mQWOs{^fq{vbWLF1r5GXkcvlLAL zxu2z|nhlo3SlI+wNlpQ5#af{7V~3=GdO`ML1#l8zD?-GrFeHlDiV$%t3KL>shot~< zm=GfANWz2=Nk3=JvO!V+mmn7;1+YU>00$(#I6(2m zCCrJM0yxp5i&IRH6A@iO!raglz>Smwce+}aH6S`5+#EX)kbjFaDS$k%Iu zq6S z11BU_*ag{juL!b0qJ$L^eypJItLGACLyZ$Q^Z;ZN6J$dKV305eG)_2>;)D}oBqzv7 zE@3XzDB(gkkxNXF3u-F85vHTWC%iuAZS3(W?*1oWnd62)?;8` z<6>YdHeg`jsuf^hU}38Uk@<$8GPM{K21Xzgkwv#-6-{R3W+=$VQ0$H_Y78>2sFRza zK*I#YWc$aa&%nS|Y|6mERcr=|UG{u)kc1Yf@BlNU4Oke~Fo3GCj~p`fPeCSv#+?85tPZ zL22EB8B|3xLBib%oZ$1VK>@**Zv(1|iv)QX3V1n-Z9yd$OFetO9jKnN2k}@1S%o)|(>4%fVdv1$VPIfm&@KYA z1;FeyFk2DKjsmkaz-+%{4uvU*5Pi)9s{g^^D98p$v+Nv56$ytRJ3JscAaxVF7)T6K zk!UkO1oIuip(-xSW%2dj|NoQE@~Yc$a5FF{*D)}Za5FG8a4;|^2bUCO=A{>d!t{$U z0|Nsu1A}sCFvAxG1_n@SS9TBebOANC6d4#+Fike%Q>)iz02>RI2DPT-7#J8F86edY zJEW*#;Adc90Esg*K&miKD9ym2&I*bbkgr8q_}JMP8o;C$^HVl{20eC=coXw!7B+@- zmMN@k4ELBphRh82G{LPfSnQ*cbwspR#c= z@UR_b=VSQCzKNZWVGq+Lb}oiXjEC8U7?!cFVc=pYU^~n%#-PYhz`({J!y zFk)n2WDsDGVZFg-%K&17cnV-12ZI1ut^~rXXAlB&8^BzC21N!?Ox3W1H1abjgXIpg zfp`K88eq9#uu1_2EwJ2Puu1_29R_AbkiiTLwhRIcdJK#VuNb-+85x)uL1Yq`yaE=H z0<(Rdfe0-FvynAJv>AZK`xyHe*%+3wO=AoIwdEPwI3$>6F)}hlKzYhc z^B5T!5}`ajrdf{FGE_r(%h=~J@-nn2Gl1-e1R@_p4^$Eqhp)JEO2gIvqn8?t@dYVy&!5Ngi;gUXJ9z>%I zgMud53b2Lp44NoB6ELrtL5zWoK^|N%t!4pbL1M^$)_PF)P>2K6q`C;|=`j$a4Wg!> z6}#R<4v;uR4T#OifTwTXX9efWVp{Jz+ea_Ey1KC znDhjbfnYKcOeTW$W-{Do6J;m_lZ{|=CNkV-lVYd@vwt#Fv$8R41hY3Xd|-8ASjg~{ z#e-odLwz)>F9RcEDSHqDBV!>)B$yq?z{#k_A;7SaA&otSL6C7COBTaMh6c7G1|F~x zij2{$bqqWVD;Sy?6dAi2IvF$>yV!df3>iHcCNUT?+Op4JSjjM-Nq}J`gDJy2hLsFX ztcw{e89A9(GF)W%%eax@C&Mi!HU<%f`}J%f3S^KB*k~Ds6xRC;G7O;{Zy014qFFyN zyabECWN>2_Wprd*!63l!lHmb68-pj~R3>T0K*sxQ3XBgK?z5>eJ_L)eWO&EO$gq+@ zjSZyIi^GTUBf}^5K*o;@>zTqBXM)3QA%hibG-D*=SC;yX42+Da9EpsUj35^&FcdR1 zF)2dHYKC4Wb%tn$IZS#C+zfXZ^%#U1o-*n&NHef7=`koX@G|K!Xft>-=`k2H#53tJ zSTkfX=`lDnlr!luc!R}*8N8Vsz@|AuNsyV&49N`bOwJ714AbhF62KCPP!c5F0A@Er zNsvf0SVJ>N1JeSq_(CWNl05)sAB2)1k;7p1hr#L}fW;p|Nsuf9Bgm7CV6vW(5hSDl z<|sl*kcb1A?Fc17BFvMk|6O0FuM^-f_|K59`6! zGcbVy#DNLqt^_dI045iJ$pc{W0hnZ92B}d1lMY}q0ZcZ4$pv8Y0GNCLCKXsfCMU3f zbTxoU23C+r1DI4`sNc%)oZ%+}AEPd#B_pUw%EG|Gzy@yds56~sWMHrblj5u(b|9EN z0ZhIHlSkM<;t&!dvWguff~*&!D-*1qo&7S{7G?%U1||k(1}0GcXJueyU}0coU}9ip zU}s=tU}IosU}9ir;ACKA;9%fnU}E58;AUWC;9}rrU}E5A;ALQB;9=lpU}E59;AdcD z;A7xtU}6wr5M*Fv5C(M&8AKR_85kKv8H5>_7{nMv85kMF8AKVF7$g|P85kKP8N?Zw z7^D~^85kMrr5Pj{m>6Ujq!}0)WErFxm>A?3WEmJ48593jndV_#s|TI z>5QO047!2Apmr#lx(Q(Q$Ofh}+JFoMHF?2uAfk!UA1sEdjuY%aF0hH73=9l5cFFPa zE}6vzIf<3dIf=!^2Jr?AHol3Od3H(h@dgY&nZ+duh72y5$t9Wjd5J}p2}TUXsU`8w z`FSO&c_lundFdq?W|N;w8cbG`k`xK9EG|jS)eFfeN=;13%u5HcCRp}GR~71%7|}1D6@i50NtR;8FDI{r^?ka zPIghyo;+7Uf-z_ET7^K7^wg4gh1_@+U(Pi7pJmJBn`Ua8 zo2`0CCA&7KRd-}i90hmGWam~Feos1GUPF2GL$g5FgP(V2nREi zFeEaRFqASBGbk|lGk8z-b-pv%*+oQW(15%mD1~G_5fl-DJWPmUOvjPJX3j-sc3@ZbJP{T}C z1x8s`zIqk~Mn*2M{<-W5%#5so>WY`s$ z7=;;x8Clqwm}FQL7@33_*c2Fr8HE`{*tx-G2qg+hAT+Zx326uwf^A&L!r;Zo$j7R{ z#3&=d2J&UYN^W*mp-7=buth@b+(MN?fkL5tLcV-_vaEc3Od!8if`~v65ehbDEh_^P z6CdB?X>RJi>`+%Rvk8?lD=^4_yeGrSz|1J*3o?j9fdS%bP6b9r2n%dGNS%xfGXn!7 zvj&3DAAS<_Qz#Cn(+7$zhzF#G|z5~7~r57XpH zUh^1ZCL4MyGg@p8^*+zYY{0-aS>0EA@-km5ra8%*ANk5NO)l^Z;dFpZVCdLy77TdL IIMIL|0F`?(zyJUM diff --git a/backendCs/bin/Debug/net8.0/TimelogBackend.pdb b/backendCs/bin/Debug/net8.0/TimelogBackend.pdb index 800fdf6aa7def2bf947f8d8a6f496143722d105d..382595621d510ff4ccc92071aec13db5a4376e10 100644 GIT binary patch delta 3500 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 HoUs7_8K@U- delta 49 zcmexT`K3}Lz}wxChk=1%iOnY|6VtW9?vwAB#Oya^PI8)?_3iny3gzV4>qIz93^r<< Gu>k<-{uCPk diff --git a/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.CoreCompileInputs.cache b/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.CoreCompileInputs.cache index c384fa3..d00c3e0 100644 --- a/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.CoreCompileInputs.cache +++ b/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -a26e25722337c85065d06325a739b066cff412c2c9a8e669c741ff1bfb48e5f6 +8cb7b4e3896ea6e4199194b8ade89330b75c191994f715b16fe2d035c7102d40 diff --git a/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.FileListAbsolute.txt b/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.FileListAbsolute.txt index 144c228..07bf854 100644 --- a/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.FileListAbsolute.txt +++ b/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.FileListAbsolute.txt @@ -36,3 +36,41 @@ /home/arch/temp/HelloWorldApp/obj/Debug/net8.0/TimelogBackend.pdb /home/arch/temp/HelloWorldApp/obj/Debug/net8.0/TimelogBackend.genruntimeconfig.cache /home/arch/temp/HelloWorldApp/obj/Debug/net8.0/ref/TimelogBackend.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/TimelogBackend +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/TimelogBackend.deps.json +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/TimelogBackend.runtimeconfig.json +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/TimelogBackend.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/TimelogBackend.pdb +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/BouncyCastle.Cryptography.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/Google.Protobuf.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/K4os.Compression.LZ4.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/K4os.Compression.LZ4.Streams.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/K4os.Hash.xxHash.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/MySql.Data.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/Newtonsoft.Json.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/System.Configuration.ConfigurationManager.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/System.Diagnostics.EventLog.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/System.IO.Pipelines.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/System.Security.Cryptography.ProtectedData.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/System.Security.Permissions.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/System.Windows.Extensions.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/ZstdSharp.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win-x64/native/comerr64.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win-x64/native/gssapi64.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win-x64/native/k5sprt64.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win-x64/native/krb5_64.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win-x64/native/krbcc64.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll +/home/arch/projects/wip/timelog-interview/backendCs/bin/Debug/net8.0/runtimes/win/lib/net8.0/System.Windows.Extensions.dll +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.AssemblyReference.cache +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.GeneratedMSBuildEditorConfig.editorconfig +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.AssemblyInfoInputs.cache +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.AssemblyInfo.cs +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.CoreCompileInputs.cache +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.csproj.CopyComplete +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.dll +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/refint/TimelogBackend.dll +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.pdb +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/TimelogBackend.genruntimeconfig.cache +/home/arch/projects/wip/timelog-interview/backendCs/obj/Debug/net8.0/ref/TimelogBackend.dll diff --git a/backendCs/obj/Debug/net8.0/TimelogBackend.dll b/backendCs/obj/Debug/net8.0/TimelogBackend.dll index 8a7362edc826585acc1bb902e56528c1e15e4001..fc574a6ec1b4d5f11c22ec33f1ff354f0bf7d59e 100644 GIT binary patch literal 20992 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 delta 6458 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 IIMIL|0F`?(zyJUM diff --git a/backendCs/obj/Debug/net8.0/TimelogBackend.genruntimeconfig.cache b/backendCs/obj/Debug/net8.0/TimelogBackend.genruntimeconfig.cache index 859adea..3af0758 100644 --- a/backendCs/obj/Debug/net8.0/TimelogBackend.genruntimeconfig.cache +++ b/backendCs/obj/Debug/net8.0/TimelogBackend.genruntimeconfig.cache @@ -1 +1 @@ -349d85780636e3e61d35aee10e34ef55954b239c07ad0a356798a097ceae0148 +b9db7be95623da1c56ce81f0a2fe43bd17220a8c9689f0c3bac4131258accda2 diff --git a/backendCs/obj/Debug/net8.0/TimelogBackend.pdb b/backendCs/obj/Debug/net8.0/TimelogBackend.pdb index 800fdf6aa7def2bf947f8d8a6f496143722d105d..382595621d510ff4ccc92071aec13db5a4376e10 100644 GIT binary patch delta 3500 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 PAkD)AcHmauL<4pJJ_Myq delta 2514 zcmZp$X|S2l!E##d)YgeTGK}*kt_FenF?6lLb67lUk^z{9}6!oa|w z92(3pg@=Jb0K|3=^>kriU|7P#z+f?XE1P<~7y|!);~;1~!IRut){tRwg!v z3MLh1Hij#VAaWv@Tn8q#nN;eT*%%VRoX?CPgIvJc{K0G%7ItPf1_j35%v=m+%qA>+ z4BjltEPMH$AcGkgKo;sUurVYt zn=%AAfZWr@QOsb;zzFBnG1wyUIvFe(nCjt@Qy6R+nBctgOqLAHaNZ3jTO{6m21^DO zxZDZ`TO{6j21^E3xZDi}TO=MIqa_0yTuz+PmVu3-9_G?)W=jTkxMT^lErKV}!_3CO z0hOD^;Ku9(=e2?5xS?`w93WE=Jdh~}9>{tgxJr=qJPZN#(17A*v1H&yNV3=>@j!vd z2bTi{B7z4BM1Hs&C=3xiP&f&|+1keLuQAT}cdrb?(t zJ=9`Oh8|`{20;c;Qj=upVdi4c1hWkpdYA_|Krn;LO0qsK?;VAkL`A5DXTNW_Zou05;B?EYbib zo5AAEVDSZDkpp1zFj)LBSo{H4gn<#{EQNY7xCwUECvRK8DR1b6NtSA%zh0fr5QmY4a^7pVp1}TPzU>?ZXU^#6 z0h7XHKCwKp9%crH2?-1gf0#hZAovf{V?4cGx+@_!5f diff --git a/backendCs/obj/Debug/net8.0/refint/TimelogBackend.dll b/backendCs/obj/Debug/net8.0/refint/TimelogBackend.dll index 45183af4a6aef0dc63ce7f4cb664037f23e9d104..90a1f1fe6aa338d423910c059bde890891415b33 100644 GIT binary patch delta 2646 zcmZp$X|S2l!E%2W-_eOZGK~8st_Ox-NV@}7~2VZmfZ zHeuF3ybKJClNFiFCkL=;*tW1UFeukCFnnNVU?^c>U{DS&Day=CF9z9|!o$G8!oa|w z92(4!!Nb5H0Ajm`db%($FjVj`FtkkG%BEf~#lXP8#lXP8%)r2)$-uxM%K%Yn%)r3F z#K6G7$H2fK!@$76$N(`7L^Ci*GDB!K1`DQ>%xnz%z+?vFHfDZ?m&^W_DoVV+d!_ zXW?TIVbo_~W2j*SS?0@ll39pBi~+2JU-@?%=I8HGgwlH86qhJ=2=5|B4C~ql&1{lErjw^!C|EX z<*9?^tXLqXXfQN03V=fmWP=ui7y}1`HG>!fKZ75G7=t2197BKu0|P@n!!(9s<{Sn_ z2$!KvVgoZ90}G7D(Zo=O#Or0KLgLL}C}UuSt6a=bg~a>ARK~ytmt$qFLgKAsC}UuU z%GI}VY-gx~bK5xXF_bZIKqcEao-EIuz{J2L9-srF=W`lEWlt1CLO_~CzuQblaXLD5lm)+ji_YUz%0rz6HG1yn*d@< zF(@!(GlVlLGBh*9GO9BqGgLC_F>o_9Gw3l0GxRX%F-SA4X3%3$X4t}@$DqxylR=N6 z-k9M#gC2u512>}{gENB|qaK4dgEFHYLoir8n&CS`0z);!7KUVoY=&IMWQJmfV#Wrr z$O16A7%aXREPeni@&HUSFoJX`fJp~1=?o?lz+?lMT)S42%qH46F=H4D1Z-42%pM^$hF`Obnb1oD7T%TnwBHObpx% z+zgBiJPh0nObomXybO#Cdyjp++!BC9iECHdb~8U>ZajGB_vZ2w^O-|!CW(6Czc`Cmv z)8xm3R+Ei|%mjTh^9uD`D+-EIi;FY!^NJZJ*9aw>fSrWi>R@0|U}WTAR$yRcRbXTk z6a;bkKm;p@FFRRKSjJt5O;jk9QB)|BStwRUR49>&Plg{Vl*%F$E0ifC!wcnumGE&g zFf$4{3b_h-GAl61fJ~EN)?k>NC%n+ln2|xxP|rZmK-s34;lPC4(7*8G|{45km@tA%i7DGJ`RLAwvp7B7-S|8AB37 zDuW4wF@q(8346__|3 PAkD)AcHmauL<4pJJ_Myq delta 2514 zcmZp$X|S2l!E##d)YgeTGK}*kt_FenF?6lLb67lUk^z{9}6!oa|w z92(3pg@=Jb0K|3=^>kriU|7P#z+f?XE1P<~7y|!);~;1~!IRut){tRwg!v z3MLh1Hij#VAaWv@Tn8q#nN;eT*%%VRoX?CPgIvJc{K0G%7ItPf1_j35%v=m+%qA>+ z4BjltEPMH$AcGkgKo;sUurVYt zn=%AAfZWr@QOsb;zzFBnG1wyUIvFe(nCjt@Qy6R+nBctgOqLAHaNZ3jTO{6m21^DO zxZDZ`TO{6j21^E3xZDi}TO=MIqa_0yTuz+PmVu3-9_G?)W=jTkxMT^lErKV}!_3CO z0hOD^;Ku9(=e2?5xS?`w93WE=Jdh~}9>{tgxJr=qJPZN#(17A*v1H&yNV3=>@j!vd z2bTi{B7z4BM1Hs&C=3xiP&f&|+1keLuQAT}cdrb?(t zJ=9`Oh8|`{20;c;Qj=upVdi4c1hWkpdYA_|Krn;LO0qsK?;VAkL`A5DXTNW_Zou05;B?EYbib zo5AAEVDSZDkpp1zFj)LBSo{H4gn<#{EQNY7xCwUECvRK8DR1b6NtSA%zh0fr5QmY4a^7pVp1}TPzU>?ZXU^#6 z0h7XHKCwKp9%crH2?-1gf0#hZAovf{V?4cGx+@_!5f diff --git a/backendCs/obj/TimelogBackend.csproj.nuget.dgspec.json b/backendCs/obj/TimelogBackend.csproj.nuget.dgspec.json index a8065a7..5b2e011 100644 --- a/backendCs/obj/TimelogBackend.csproj.nuget.dgspec.json +++ b/backendCs/obj/TimelogBackend.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj": {} + "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj": {} }, "projects": { - "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj": { + "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj", + "projectUniqueName": "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj", "projectName": "TimelogBackend", - "projectPath": "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj", + "projectPath": "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj", "packagesPath": "/home/arch/.nuget/packages/", - "outputPath": "/home/arch/temp/HelloWorldApp/obj/", + "outputPath": "/home/arch/projects/wip/timelog-interview/backendCs/obj/", "projectStyle": "PackageReference", "configFilePaths": [ "/home/arch/.nuget/NuGet/NuGet.Config" diff --git a/backendCs/obj/project.assets.json b/backendCs/obj/project.assets.json index fceb6e6..efb95ba 100644 --- a/backendCs/obj/project.assets.json +++ b/backendCs/obj/project.assets.json @@ -1658,11 +1658,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj", + "projectUniqueName": "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj", "projectName": "TimelogBackend", - "projectPath": "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj", + "projectPath": "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj", "packagesPath": "/home/arch/.nuget/packages/", - "outputPath": "/home/arch/temp/HelloWorldApp/obj/", + "outputPath": "/home/arch/projects/wip/timelog-interview/backendCs/obj/", "projectStyle": "PackageReference", "configFilePaths": [ "/home/arch/.nuget/NuGet/NuGet.Config" diff --git a/backendCs/obj/project.nuget.cache b/backendCs/obj/project.nuget.cache index 6dd0eab..e5d9d5a 100644 --- a/backendCs/obj/project.nuget.cache +++ b/backendCs/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "p6MNaUN/SYJSFf9M574e8kcv9EqEwjPgKKmmL1309Lwqd26TTBeTctoKZziGbcJiysFehsYg0kxDJKBlru2uCA==", + "dgSpecHash": "05fTwHDwROQn3aS1fZFUfkni+eNLFijwdR49kiMZyADYQWkBGYKVh4QK8CMaBFfif3DNASYK7goRXVy8COyb4A==", "success": true, - "projectFilePath": "/home/arch/temp/HelloWorldApp/TimelogBackend.csproj", + "projectFilePath": "/home/arch/projects/wip/timelog-interview/backendCs/TimelogBackend.csproj", "expectedPackageFiles": [ "/home/arch/.nuget/packages/bouncycastle.cryptography/2.3.1/bouncycastle.cryptography.2.3.1.nupkg.sha512", "/home/arch/.nuget/packages/google.protobuf/3.26.1/google.protobuf.3.26.1.nupkg.sha512", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 8950053..6d74c1b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -8,7 +8,7 @@ function App() { const [reset, setReset] = useState(true); return ( - + diff --git a/frontend/src/components/LeftSide.tsx b/frontend/src/components/LeftSide.tsx index 5b9864b..f82b274 100644 --- a/frontend/src/components/LeftSide.tsx +++ b/frontend/src/components/LeftSide.tsx @@ -7,18 +7,37 @@ import { TableCell, TableHead, Table, + Button, } from "@mui/material"; -const LeftSide = ({ reset, setReset }) => { - // next prev and sort - const [users, setUsers] = useState(); - const [params, setParams] = useState({ offset: 0, sortby: "f_name" }); - // reset button - // const [reset, setReset] = useState(true); +interface User { + date: string; + f_name: string; + l_name: string; + mail: string; + name: string; + time: number; + user: number; +} - // date - const [date, setDate] = useState({ from: "2021-01-01", to: "2028-01-01" }); - const [dateToSubmit, setDateToSubmit] = useState({ +const LeftSide = ({ + reset, + setReset, +}: { + reset: boolean; + setReset: Function; +}) => { + // next prev and sort buttons + const [users, setUsers] = useState(); + const [params, setParams] = useState({ + offset: 0, + sortby: "f_name", + from: "2000-01-01", + to: "2028-01-01", + order: true, + }); + // date buttons + const [date, setDate] = useState({ from: "2021-01-01", to: "2028-01-01", }); @@ -28,7 +47,7 @@ const LeftSide = ({ reset, setReset }) => { const resp = await api.get("/getall", { params, }); - setUsers(resp.data); + if (resp.data.length) setUsers(resp.data); } async function resetData() { await api.get("/reset"); @@ -39,15 +58,14 @@ const LeftSide = ({ reset, setReset }) => { } fetchData(); - }, [reset, params, dateToSubmit]); + }, [reset, params]); - const viewProjectHours = (user) => { + const viewProjectHours = (userid: number) => { async function fetchHours() { const resp = await api.get("/getuser", { - params: { userid: user }, + params: { userid }, }); - // const entriesArray = Object.entries(resp.data); - const entriesArray = Object.entries(resp.data.Fields); + const entriesArray = Object.entries(resp.data); alert(entriesArray); } fetchHours(); @@ -56,7 +74,7 @@ const LeftSide = ({ reset, setReset }) => { if (!users) return <>; return ( - + { type="date" id="to" name="to" - value={date.to} + value={params.to} onChange={(event) => setDate({ ...date, to: event.target.value })} /> - - - - Select a sort: - + Submit Date + - - + + +