commit 734533a827b7bb8054f9f74643fa8f7e3f8e6332
Author: A-Konig <alex-nebulae@seznam.cz>
Date:   Tue Apr 13 10:56:53 2021 +0200

    re #8597 Code maintenance - comments, namespace changes

diff --git a/Server/.vs/Parser 1.0/v16/.suo b/Server/.vs/Parser 1.0/v16/.suo
deleted file mode 100644
index 657960e..0000000
Binary files a/Server/.vs/Parser 1.0/v16/.suo and /dev/null differ
diff --git a/Server/.vs/ServerApp/v16/.suo b/Server/.vs/ServerApp/v16/.suo
index 7233910..d964e63 100644
Binary files a/Server/.vs/ServerApp/v16/.suo and b/Server/.vs/ServerApp/v16/.suo differ
diff --git a/Server/ServerApp.sln b/Server/ServerApp.sln
index 2f04ff9..7b80087 100644
--- a/Server/ServerApp.sln
+++ b/Server/ServerApp.sln
@@ -1,9 +1,9 @@
-
+﻿
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.31105.61
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerApp", "ServerApp\ServerApp.csproj", "{916C1E8A-0D6D-43FB-8BDE-DBEDF441842D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerApp", "ServerApp\ServerApp.csproj", "{B49B2821-751C-4032-8637-B4E9282DCF06}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,15 +11,15 @@ Global
 		Release|Any CPU = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{916C1E8A-0D6D-43FB-8BDE-DBEDF441842D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{916C1E8A-0D6D-43FB-8BDE-DBEDF441842D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{916C1E8A-0D6D-43FB-8BDE-DBEDF441842D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{916C1E8A-0D6D-43FB-8BDE-DBEDF441842D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B49B2821-751C-4032-8637-B4E9282DCF06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B49B2821-751C-4032-8637-B4E9282DCF06}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B49B2821-751C-4032-8637-B4E9282DCF06}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B49B2821-751C-4032-8637-B4E9282DCF06}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {4E18E2F7-ED86-43DF-9B8D-47294B10BA49}
+		SolutionGuid = {CF3D6A57-E659-4E12-884C-6346F59A3735}
 	EndGlobalSection
 EndGlobal
diff --git a/Server/ServerApp/Parser/InputData/CsvDataLoader.cs b/Server/ServerApp/Parser/InputData/CsvDataLoader.cs
index 473706a..74e6406 100644
--- a/Server/ServerApp/Parser/InputData/CsvDataLoader.cs
+++ b/Server/ServerApp/Parser/InputData/CsvDataLoader.cs
@@ -3,18 +3,32 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 
-namespace Parser.InputData
+namespace ServerApp.Parser.InputData
 {
+    /// <summary>
+    /// Class responsible for loading data from file
+    /// </summary>
     static class CsvDataLoader
     {
+        /// <summary> Culture info for parsing numbers </summary>
         static CultureInfo cultureInfo = new CultureInfo("de-DE");
 
+        /// <summary>
+        /// Load csv file into array
+        /// </summary>
+        /// <param name="name">Path to file</param>
+        /// <returns>Array with loaded data</returns>
         static string[] LoadCsv(string name)
         {
             string[] lines = File.ReadAllLines(name);
             return lines;
         }
 
+        /// <summary>
+        /// Load jis data from file
+        /// </summary>
+        /// <param name="pathToFile">Path to file</param>
+        /// <returns></returns>
         public static List<JisInstance> LoadJisFile(string pathToFile)
         {
             var lines = LoadCsv(pathToFile);
@@ -38,6 +52,11 @@ namespace Parser.InputData
             return list;
         }
 
+        /// <summary>
+        /// Load login data from file
+        /// </summary>
+        /// <param name="pathToFile">Path to file</param>
+        /// <returns></returns>
         public static List<LogInInstance> LoadLoginFile(string pathToFile)
         {
             var lines = LoadCsv(pathToFile);
@@ -71,6 +90,11 @@ namespace Parser.InputData
             return list;
         }
 
+        /// <summary>
+        /// Load weather data from file
+        /// </summary>
+        /// <param name="pathToFile">Path to file</param>
+        /// <returns></returns>
         public static List<WeatherInstance> LoadWeatherFile(string pathToFile)
         {
             var lines = LoadCsv(pathToFile);
diff --git a/Server/ServerApp/Parser/InputData/JisInstance.cs b/Server/ServerApp/Parser/InputData/JisInstance.cs
index 0af03dc..3b57279 100644
--- a/Server/ServerApp/Parser/InputData/JisInstance.cs
+++ b/Server/ServerApp/Parser/InputData/JisInstance.cs
@@ -1,9 +1,10 @@
 ﻿using System;
 
-namespace Parser.InputData
+namespace ServerApp.Parser.InputData
 {
     /// <summary>
-    ///
+    /// Data from jis data file 
+    /// 
     /// Data contains:
     ///     datum_a_cas - timestamp of JIS authentication(accuracy in milliseconds)
     ///     pocet_logu - number of authentized users in given time
@@ -14,13 +15,22 @@ namespace Parser.InputData
     /// </summary>
     class JisInstance
     {
-        //0
+        /// <summary> Place tag  </summary>
+        // index 0
         public string placeTag;
-        //1
+        /// <summary> Date time </summary>
+        // index 1
         public DateTime dateTime;
-        //2
+        /// <summary> Number of events </summary>
+        // index 2
         public int amount;
 
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        /// <param name="placeTag"></param>
+        /// <param name="dateTime"></param>
+        /// <param name="amount"></param>
         public JisInstance(string placeTag, DateTime dateTime, int amount)
         {
             this.placeTag = placeTag;
diff --git a/Server/ServerApp/Parser/InputData/LogInInstance.cs b/Server/ServerApp/Parser/InputData/LogInInstance.cs
index d33ee1a..f4e9da3 100644
--- a/Server/ServerApp/Parser/InputData/LogInInstance.cs
+++ b/Server/ServerApp/Parser/InputData/LogInInstance.cs
@@ -1,10 +1,10 @@
 ﻿using System;
 
-namespace Parser.InputData
+namespace ServerApp.Parser.InputData
 {
 
     /// <summary>
-    /// 
+    /// Data from login data file
     /// 
     /// Data contains:
     ///     datum - date of access
@@ -22,26 +22,45 @@ namespace Parser.InputData
     /// </summary>
     class LogInInstance
     {
+        /// <summary> Date time </summary>
         // index 0
         public DateTime date;
+        /// <summary> Number of events </summary>
         // index 1
         public int amount;
         // index 2
         public int lesson;
+        /// <summary> Time of the start of the lesson </summary>
         // index 3
         public DateTime lessonStart;
+        /// <summary> Time of the endof the lesson </summary>
         // index 4
         public DateTime lessonEnd;
+        /// <summary> Building tag </summary>
         // index 5
         public string building;
+        /// <summary> Room type </summary>
         // index 6
         public string roomType;
+        /// <summary> Room number </summary>
         // index 7
         public string room;
+        /// <summary> PC hostname </summary>
         // index 8
         public string hostname;
-        
 
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        /// <param name="date"></param>
+        /// <param name="amount"></param>
+        /// <param name="lesson"></param>
+        /// <param name="lessonStart"></param>
+        /// <param name="lessonEnd"></param>
+        /// <param name="building"></param>
+        /// <param name="roomtType"></param>
+        /// <param name="room"></param>
+        /// <param name="hostname"></param>
         public LogInInstance(DateTime date, int amount, int lesson, DateTime lessonStart, DateTime lessonEnd, string building, string roomtType, string room, string hostname)
         {
             this.date = date;
@@ -55,6 +74,10 @@ namespace Parser.InputData
             this.hostname = hostname;
         }
 
+        /// <summary>
+        /// To string
+        /// </summary>
+        /// <returns></returns>
         public override string ToString()
         {
             return date + " " + room + " " + lessonStart + "-" + lessonEnd + " " + amount;
diff --git a/Server/ServerApp/Parser/InputData/WeatherInstance.cs b/Server/ServerApp/Parser/InputData/WeatherInstance.cs
index c17a797..018d696 100644
--- a/Server/ServerApp/Parser/InputData/WeatherInstance.cs
+++ b/Server/ServerApp/Parser/InputData/WeatherInstance.cs
@@ -1,8 +1,9 @@
 ﻿using System;
 
-namespace Parser.InputData
+namespace ServerApp.Parser.InputData
 {
     /// <summary>
+    /// Data from weather data file
     /// 
     /// Csv format:
     ///     "30.04.2019 16:19:01";20.3;5.3;0;19
@@ -10,17 +11,30 @@ namespace Parser.InputData
     /// </summary>
     class WeatherInstance
     {
-        // 0
+        /// <summary> Date and time </summary>
+        // index 0
         public DateTime dateTime;
-        // 1
+        /// <summary> Temperature in °C </summary>
+        // index 1
         public double temp;
-        // 2
+        /// <summary> Wind in m/s </summary>
+        // index 2
         public double wind;
-        // 3
+        /// <summary> Rain (0 if none, 1 if rain) </summary>
+        // index 3
         public int rain;
-        // 4
+        /// <summary>  Luminance in klux </summary>
+        // index 4
         public double lum;
 
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        /// <param name="date"></param>
+        /// <param name="temp"></param>
+        /// <param name="wind"></param>
+        /// <param name="rain"></param>
+        /// <param name="lum"></param>
         public WeatherInstance(DateTime date, double temp, double wind, int rain, double lum)
         {
             this.dateTime = date;
diff --git a/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs b/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs
new file mode 100644
index 0000000..aea7dfd
--- /dev/null
+++ b/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs
@@ -0,0 +1,44 @@
+﻿using System;
+
+namespace ServerApp.Parser.OutputInfo
+{
+    /// <summary>
+    /// Class representing the number of events in a given time interval a given faculty
+    /// - shortest possible interval is 1h
+    /// </summary>
+    class ActivityInfo
+    {
+        /// <summary> Faculty </summary>
+        public string faculty;
+        /// <summary> Number of events </summary>
+        public int amount;
+        /// <summary> Start of interval </summary>
+        public DateTime startTime;
+        /// <summary> Length of interval in hours </summary>
+        public int intervalLength;
+
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        /// <param name="faculty">Faculty</param>
+        /// <param name="amount">Number of events</param>
+        /// <param name="startTime">Start of recorded interval</param>
+        /// <param name="intervalLength">Length of recorded interval</param>
+        public ActivityInfo(string faculty, int amount, DateTime startTime, int intervalLength)
+        {
+            this.faculty = faculty;
+            this.amount = amount;
+            this.startTime = startTime;
+            this.intervalLength = intervalLength;
+        }
+
+        /// <summary>
+        /// To string
+        /// </summary>
+        /// <returns>"start time    faculty     number of events"</returns>
+        public override string ToString()
+        {
+            return $"{startTime.ToString()} \t {faculty} \t {amount}";
+        }
+    }
+}
diff --git a/Server/ServerApp/Parser/OutputInfo/JisInfo.cs b/Server/ServerApp/Parser/OutputInfo/JisInfo.cs
deleted file mode 100644
index 849e0d2..0000000
--- a/Server/ServerApp/Parser/OutputInfo/JisInfo.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Parser.OutputInfo
-{
-    class JisInfo
-    {
-        string faculty;
-        int amount;
-        DateTime startTime;
-        int intervalLength;
-
-        public JisInfo(string faculty, int amount, DateTime startTime, int intervalLength)
-        {
-            this.faculty = faculty;
-            this.amount = amount;
-            this.startTime = startTime;
-            this.intervalLength = intervalLength;
-        }
-
-        public override string ToString()
-        {
-            return $"{startTime.ToString()} \t {faculty} \t {amount}";
-        }
-    }
-}
diff --git a/Server/ServerApp/Parser/OutputInfo/LogInInfo.cs b/Server/ServerApp/Parser/OutputInfo/LogInInfo.cs
deleted file mode 100644
index bb0a3e0..0000000
--- a/Server/ServerApp/Parser/OutputInfo/LogInInfo.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Parser.OutputInfo
-{
-    class LogInInfo
-    {
-        string faculty;
-        int amount;
-        DateTime startTime;
-        int intervalLength;
-
-        public LogInInfo(string faculty, int amount, DateTime startTime, int intervalLength)
-        {
-            this.faculty = faculty;
-            this.amount = amount;
-            this.startTime = startTime;
-            this.intervalLength = intervalLength;
-        }
-
-        public override string ToString()
-        {
-            return $"{startTime.ToString()} \t {faculty} \t {amount}";
-        }
-    }
-}
diff --git a/Server/ServerApp/Parser/OutputInfo/LumInfo.cs b/Server/ServerApp/Parser/OutputInfo/LumInfo.cs
deleted file mode 100644
index 0730c99..0000000
--- a/Server/ServerApp/Parser/OutputInfo/LumInfo.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Parser.OutputInfo
-{
-    class LumInfo
-    {
-        // in lux
-        double value;
-        DateTime startTime;
-        int intervalLength;
-
-        public LumInfo(double value, DateTime startTime, int intervalLength)
-        {
-            this.value = value;
-            this.startTime = startTime;
-            this.intervalLength = intervalLength;
-        }
-
-        public override string ToString()
-        {
-            return $"{startTime.ToString()} \t {value}";
-        }
-    }
-}
diff --git a/Server/ServerApp/Parser/OutputInfo/RainInfo.cs b/Server/ServerApp/Parser/OutputInfo/RainInfo.cs
deleted file mode 100644
index 48d5552..0000000
--- a/Server/ServerApp/Parser/OutputInfo/RainInfo.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-﻿using System;
-
-namespace Parser.OutputInfo
-{
-    class RainInfo
-    {
-        // probability in %
-        double value;
-        DateTime startTime;
-        int intervalLength;
-
-        public RainInfo(double value, DateTime startTime, int intervalLength)
-        {
-            this.value = value;
-            this.startTime = startTime;
-            this.intervalLength = intervalLength;
-        }
-
-        public override string ToString()
-        {
-            return $"{startTime.ToString()} \t {value}";
-        }
-    }
-}
diff --git a/Server/ServerApp/Parser/OutputInfo/TempInfo.cs b/Server/ServerApp/Parser/OutputInfo/TempInfo.cs
deleted file mode 100644
index a5e998a..0000000
--- a/Server/ServerApp/Parser/OutputInfo/TempInfo.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-﻿using System;
-
-namespace Parser.OutputInfo
-{
-    class TempInfo
-    {
-        // in °C
-        double value;
-        DateTime startTime;
-        int intervalLength;
-
-        public TempInfo(double value, DateTime startTime, int intervalLength)
-        {
-            this.value = value;
-            this.startTime = startTime;
-            this.intervalLength = intervalLength;
-        }
-
-        public override string ToString()
-        {
-            return $"{startTime.ToString()} \t {value}";
-        }
-    }
-}
diff --git a/Server/ServerApp/Parser/OutputInfo/WeatherConditions.cs b/Server/ServerApp/Parser/OutputInfo/WeatherConditions.cs
new file mode 100644
index 0000000..4ecc675
--- /dev/null
+++ b/Server/ServerApp/Parser/OutputInfo/WeatherConditions.cs
@@ -0,0 +1,57 @@
+﻿namespace ServerApp.Parser.OutputInfo
+{
+    /// <summary>
+    /// Weather conditions in regards to sun level
+    /// </summary>
+    public enum WeatherConditions
+    {
+        Sunny, Cloudy, Overcast, Dark
+    }
+
+    /// <summary>
+    /// Transfers lux values to weather conditions and vice versa
+    /// </summary>
+    public static class LuxToConditions
+    {
+        /// <summary>
+        /// Lux to weather conditions
+        /// </summary>
+        /// <param name="lux">Lux value</param>
+        /// <returns>Weather conditions</returns>
+        public static WeatherConditions TransferLuxToConditions(double lux)
+        {
+            if (lux > 40_000)
+                return WeatherConditions.Sunny;
+
+            if (lux > 20_000)
+                return WeatherConditions.Cloudy;
+
+            if (lux > 10_000)
+                return WeatherConditions.Overcast;
+
+            return WeatherConditions.Dark;
+        }
+
+        /// <summary>
+        /// Weather conditions to average lux
+        /// </summary>
+        /// <param name="condition">Weather conditions</param>
+        /// <returns>Lux value</returns>
+        internal static double TransferConditionsToLux(WeatherConditions condition)
+        {
+            if (condition == WeatherConditions.Sunny)
+                return 50_000;
+
+            if (condition == WeatherConditions.Cloudy)
+                return 30_000;
+
+            if (condition == WeatherConditions.Overcast)
+                return 15_000;
+
+            if (condition == WeatherConditions.Dark)
+                return 5_000;
+
+            return -1;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs b/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs
index 0d8998c..601b530 100644
--- a/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs
+++ b/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs
@@ -1,30 +1,78 @@
 ﻿using System;
 
-namespace Parser.OutputInfo
+namespace ServerApp.Parser.OutputInfo
 {
+    /// <summary>
+    /// Class representing the weather in a given interval at ZCU
+    /// - shortest possible interval is 1h
+    /// </summary>
     class WeatherInfo
     {
-        double temp;
-        int rain;
-        double wind;
-        double lum;
+        /// <summary> Temperature in °C </summary>
+        public double temp;
+        /// <summary> Probability of rain in % </summary>
+        public int rain;
+        /// <summary> Wind in m/s </summary>
+        public double wind;
+        /// <summary> Luminance </summary>
+        public double lum;
+        /// <summary> General weather conditions </summary>
+        public WeatherConditions condition;
 
+        /// <summary> Start of interval </summary>
         DateTime startTime;
-        int range;
+        /// <summary> Length of interval in hours </summary>
+        int intervalLength;
 
-        public WeatherInfo(DateTime startTime, double temp, int rain, double wind, double lum, int range)
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        /// <param name="startTime">Start of the interval</param>
+        /// <param name="temp">Temperature in °C</param>
+        /// <param name="rain">Probability of rain in %</param>
+        /// <param name="wind">Wind in m/w</param>
+        /// <param name="lum">Luminance in lux</param>
+        /// <param name="intervalLength">Interval length</param>
+        public WeatherInfo(DateTime startTime, double temp, int rain, double wind, double lum, int intervalLength)
         {
             this.startTime = startTime;
             this.temp = temp;
             this.rain = rain;
             this.wind = wind;
             this.lum = lum;
-            this.range = range;
+            this.intervalLength = intervalLength;
+
+            condition = LuxToConditions.TransferLuxToConditions(lum);
+        }
+
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        /// <param name="startTime">Start of the interval</param>
+        /// <param name="temp">Temperature in °C</param>
+        /// <param name="rain">Probability of rain in %</param>
+        /// <param name="wind">Wind in m/s</param>
+        /// <param name="condition">Weather conditions</param>
+        /// <param name="intervalLength">Interval length</param>
+        public WeatherInfo(DateTime startTime, double temp, int rain, double wind, WeatherConditions condition, int intervalLength)
+        {
+            this.startTime = startTime;
+            this.temp = temp;
+            this.rain = rain;
+            this.wind = wind;
+            this.condition = condition;
+            this.intervalLength = intervalLength;
+
+            lum = LuxToConditions.TransferConditionsToLux(condition);
         }
 
+        /// <summary>
+        /// To string
+        /// </summary>
+        /// <returns>interval start temperature probability of rain wind    weather condition</returns>
         public override string ToString()
         {
-            return $"{startTime.ToString()} \t {temp}°C \t {rain}% \t {wind}m/s \t {lum}lux";
+            return $"{startTime.ToString()} \t {temp}°C \t {rain}% \t {wind}m/s \t {condition.ToString()}";
         }
 
     }
diff --git a/Server/ServerApp/Parser/OutputInfo/WindInfo.cs b/Server/ServerApp/Parser/OutputInfo/WindInfo.cs
deleted file mode 100644
index 0a39423..0000000
--- a/Server/ServerApp/Parser/OutputInfo/WindInfo.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-﻿using System;
-
-namespace Parser.OutputInfo
-{
-    class WindInfo
-    {
-        // in m/s
-        double value;
-        DateTime startTime;
-        int intervalLength;
-
-        public WindInfo(double value, DateTime startTime, int intervalLength)
-        {
-            this.value = value;
-            this.startTime = startTime;
-            this.intervalLength = intervalLength;
-        }
-
-        public override string ToString()
-        {
-            return $"{startTime.ToString()} \t {value}";
-        }
-    }
-}
diff --git a/Server/ServerApp/Parser/Parsers/CsvParser.cs b/Server/ServerApp/Parser/Parsers/CsvParser.cs
deleted file mode 100644
index aac4145..0000000
--- a/Server/ServerApp/Parser/Parsers/CsvParser.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-﻿using Parser.OutputInfo;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Threading;
-
-namespace Parser.Parsers
-{
-    class CsvParser
-    {
-
-        string path;
-        WeatherParser weatherParser;
-        JisParser jisParser;
-        LogInParser loginParser;
-
-        public List<WeatherInfo> weatherList;
-        public List<JisInfo> jisList;
-        public List<LogInInfo> loginList;
-
-        public CsvParser()
-        {
-            TagInfo.CreateDictionaries();
-            path = "data/";
-
-            weatherParser = new WeatherParser();
-            jisParser = new JisParser();
-            loginParser = new LogInParser();
-        }
-
-        public void Parse()
-        {
-            var cultureInfo = CultureInfo.GetCultureInfo("en-GB");
-            Thread.CurrentThread.CurrentCulture = cultureInfo;
-            Thread.CurrentThread.CurrentUICulture = cultureInfo;
-
-            string pathWeather = path + "weather";
-            string pathJis = path + "jis";
-            string pathLogIn = path + "login";
-
-            weatherList = weatherParser.ParseWeatherData(pathWeather);
-            jisList = jisParser.ParseJisData(pathJis);
-            loginList = loginParser.ParseLogInData(pathLogIn);
-
-            Console.WriteLine("WEATHER");
-            WriteToConsole(weatherList);
-            Console.WriteLine("JIS");
-            WriteToConsole(jisList);
-            Console.WriteLine("LOGIN");
-            WriteToConsole(loginList);
-        }
-
-        private void WriteToConsole<T>(List<T> list)
-        {
-            if (list == null)
-            {
-                Console.WriteLine("Unsuccessful parsing");
-                return;
-            }
-            Console.WriteLine(list.Count);
-
-            for (int i = 0; i < list.Count; i++)
-                Console.WriteLine(list[i].ToString());
-        }
-
-    }
-}
diff --git a/Server/ServerApp/Parser/Parsers/DataParser.cs b/Server/ServerApp/Parser/Parsers/DataParser.cs
new file mode 100644
index 0000000..96c20f6
--- /dev/null
+++ b/Server/ServerApp/Parser/Parsers/DataParser.cs
@@ -0,0 +1,91 @@
+﻿using ServerApp.Parser.OutputInfo;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Threading;
+
+namespace ServerApp.Parser.Parsers
+{
+    /// <summary>
+    /// Class parsing data files into instances of ActivityInfo and WeatherInfo divided by given time interval
+    /// Data parsed from 7am (included) to 18pm (included)
+    /// </summary>
+    class DataParser
+    {
+        /// <summary> Path to data folder </summary>
+        string path;
+        /// <summary> Weather data parser </summary>
+        WeatherParser weatherParser;
+        /// <summary> Jis data parser </summary>
+        JisParser jisParser;
+        /// <summary> Login data parser </summary>
+        LogInParser loginParser;
+
+        /// <summary> WeatherInfo </summary>
+        public List<WeatherInfo> weatherList;
+        /// <summary> ActivityInfo representing jis activity </summary>
+        public List<ActivityInfo> jisList;
+        /// <summary> ActivityInfo representing login activity</summary>
+        public List<ActivityInfo> loginList;
+
+        /// <summary>
+        /// Constructor
+        /// </summary>
+        public DataParser()
+        {
+            TagInfo.CreateDictionaries();
+
+            // TODO ask for data folder?
+            path = "data/";
+
+            weatherParser = new WeatherParser();
+            jisParser = new JisParser();
+            loginParser = new LogInParser();
+        }
+
+        /// <summary>
+        /// Parse data
+        /// </summary>
+        /// <param name="interval">Length of an interval</param>
+        /// <param name="wholeDay">Parse data as one instance per day</param>
+        public void Parse(int interval = 1, bool wholeDay = true)
+        {
+            var cultureInfo = CultureInfo.GetCultureInfo("en-GB");
+            Thread.CurrentThread.CurrentCulture = cultureInfo;
+            Thread.CurrentThread.CurrentUICulture = cultureInfo;
+
+            string pathWeather = path + "weather";
+            string pathJis = path + "jis";
+            string pathLogIn = path + "login";
+
+            weatherList = weatherParser.ParseWeatherData(pathWeather, wholeDay, interval);
+            jisList = jisParser.ParseJisData(pathJis, wholeDay, interval);
+            loginList = loginParser.ParseLogInData(pathLogIn, wholeDay, interval);
+
+            Console.WriteLine("WEATHER");
+            WriteToConsole(weatherList);
+            Console.WriteLine("JIS");
+            WriteToConsole(jisList);
+            Console.WriteLine("LOGIN");
+            WriteToConsole(loginList);
+        }
+
+        /// <summary>
+        /// Debug method - writing lists to console
+        /// </summary>
+        private void WriteToConsole<T>(List<T> list)
+        {
+            // TODO useless in finished app
+            if (list == null)
+            {
+                Console.WriteLine("Unsuccessful parsing");
+                return;
+            }
+            Console.WriteLine(list.Count);
+
+            for (int i = 0; i < list.Count; i++)
+                Console.WriteLine(list[i].ToString());
+        }
+
+    }
+}
diff --git a/Server/ServerApp/Parser/Parsers/JisParser.cs b/Server/ServerApp/Parser/Parsers/JisParser.cs
index 90a27b4..5aaa591 100644
--- a/Server/ServerApp/Parser/Parsers/JisParser.cs
+++ b/Server/ServerApp/Parser/Parsers/JisParser.cs
@@ -1,33 +1,43 @@
-﻿using Parser.OutputInfo;
-using System;
+﻿using System;
 using System.Collections.Generic;
 using System.IO;
-using Parser.InputData;
+using ServerApp.Parser.InputData;
+using ServerApp.Parser.OutputInfo;
 
-namespace Parser.Parsers
+namespace ServerApp.Parser.Parsers
 {
+    /// <summary>
+    /// Class parsing jis files into instances of ActivityInfo divided by given time interval
+    /// Data parsed from 7am (included) to 18pm (included)
+    /// </summary>
     class JisParser
     {
-
-        public List<JisInfo> ParseJisData(string folder, bool wholeDay = true, int interval = 1)
+        
+        /// <summary>
+        /// Parses jis data to ActivityInfo instances
+        /// Data parsed from 7am (included) to 18pm (included)
+        /// </summary>
+        /// <param name="folder">Folder with login data files</param>
+        /// <param name="wholeDay">Should data be parsed as one instance per day (if true parameter interval will be ignored)</param>
+        /// <param name="interval">Time interval to divide days by, minimum is 1h</param>
+        /// <returns></returns>
+        public List<ActivityInfo> ParseJisData(string folder, bool wholeDay = true, int interval = 1)
         {
-            List<JisInfo> list = new List<JisInfo>();
-
-            // najít složku, ve složce sou data co se budou parsovat
-
             if (!Directory.Exists(folder))
                 return null;
 
-            // když v jednej složce budou všechny jis data co chci zpracovat
-            // pro každej soubor budu spouštět parsování
+            List<ActivityInfo> list = new List<ActivityInfo>();
+
+            // parse all files
             string[] fileEntries = Directory.GetFiles(folder);
             foreach (string fileName in fileEntries)
             {
-                List<JisInfo> loadedData = null;
-                // pokud po jednom dni
+                List<ActivityInfo> loadedData = null;
+
+                // parse as one instance per day
                 if (wholeDay)
                     loadedData = ProcessOneJisFileAsDays(fileName);
-                // pokud po hodinách
+                // parse by interval length
                 else
                 {
                     // pokud: konec dne nebo konec aktuálního intervalu -> vemu to co sem nasčítal
@@ -40,33 +50,43 @@ namespace Parser.Parsers
             return list;
         }
 
-        private static List<JisInfo> ProcessOneJisFileAsDays(string path)
+        /// <summary>
+        /// Parses data from one data file as one instance per day
+        /// </summary>
+        /// <param name="path">Path ti file</param>
+        /// <returns>List with ActivityInfo instances</returns>
+        private static List<ActivityInfo> ProcessOneJisFileAsDays(string path)
         {
-            List<JisInfo> jisInfo = new List<JisInfo>();
+            if (!File.Exists(path))
+                return null;
 
-            // načíst data ze souboru
+            List<ActivityInfo> jisInfo = new List<ActivityInfo>();
             List<JisInstance> list =  CsvDataLoader.LoadJisFile(path);
 
+            // data for each faculty
             int[] recordedAmount = new int[TagInfo.faculties.Length];
+            // min/max hour taken into account
             int[] minmaxHour = new int[] { 7, 18 };
+            // interval length
             int range = minmaxHour[1] - minmaxHour[0];
 
-            // procházet data ze souboru
-            DateTime lastStartTime = new DateTime(list[0].dateTime.Year, list[0].dateTime.Month, list[0].dateTime.Day);
+            // first day
+            DateTime lastStartTime = new DateTime(list[0].dateTime.Year, list[0].dateTime.Month, list[0].dateTime.Day, minmaxHour[0], 0, 0);
             for (int i = 0; i < list.Count; i++)
             {
                 int currHour = list[i].dateTime.Hour;
                 if (currHour < minmaxHour[0] || currHour > minmaxHour[1])
                     continue;
 
-                // v každym dni agreguju
+                // start of the day -> make an instance
                 string place = list[i].placeTag;
-                DateTime date = new DateTime(list[i].dateTime.Year, list[i].dateTime.Month, list[i].dateTime.Day);
+                DateTime date = new DateTime(list[i].dateTime.Year, list[i].dateTime.Month, list[i].dateTime.Day, minmaxHour[0], 0, 0);
                 if (!date.Equals(lastStartTime)) 
                 {
+                    // data for each faculty separate
                     for (int k = 0; k < TagInfo.faculties.Length; k++)
                     {
-                        JisInfo dayInfo = new JisInfo(TagInfo.faculties[k], recordedAmount[k], lastStartTime, range);
+                        ActivityInfo dayInfo = new ActivityInfo(TagInfo.faculties[k], recordedAmount[k], lastStartTime, range);
                         jisInfo.Add(dayInfo);
                     }
 
@@ -74,7 +94,7 @@ namespace Parser.Parsers
                     lastStartTime = date;
                 }
 
-                // tady nasčítávát podle místa
+                // aggregate data
                 if (TagInfo.jisPlaces.ContainsKey(place))
                 {
                     int index = TagInfo.jisPlaces[place];
@@ -87,21 +107,23 @@ namespace Parser.Parsers
                 }
                 else
                 {
+                    // TODO uknown code handling
                     Console.WriteLine("Unknown code " + list[i].placeTag);
                 }
 
             }
 
+            // last day
             for (int k = 0; k < TagInfo.faculties.Length; k++)
             {
-                JisInfo dayInfo = new JisInfo(TagInfo.faculties[k], recordedAmount[k], lastStartTime, range);
+                ActivityInfo dayInfo = new ActivityInfo(TagInfo.faculties[k], recordedAmount[k], lastStartTime, range);
                 jisInfo.Add(dayInfo);
             }
 
             return jisInfo;
         }
 
-        private static List<JisInfo> ProcessOneJisFileAsIntervals(string path, int interval)
+        private static List<ActivityInfo> ProcessOneJisFileAsIntervals(string path, int interval)
         {
             throw new NotImplementedException();
         }
diff --git a/Server/ServerApp/Parser/Parsers/LogInParser.cs b/Server/ServerApp/Parser/Parsers/LogInParser.cs
index 6e9a505..9547b45 100644
--- a/Server/ServerApp/Parser/Parsers/LogInParser.cs
+++ b/Server/ServerApp/Parser/Parsers/LogInParser.cs
@@ -1,32 +1,42 @@
-﻿using Parser.InputData;
-using Parser.OutputInfo;
+﻿using ServerApp.Parser.InputData;
+using ServerApp.Parser.OutputInfo;
 using System;
 using System.Collections.Generic;
 using System.IO;
 
-namespace Parser.Parsers
+namespace ServerApp.Parser.Parsers
 {
+    /// <summary>
+    /// Class parsing login files into instances of ActivityInfo divided by given time interval
+    /// Data parsed from 7am (included) to 18pm (included)
+    /// </summary>
     class LogInParser
     {
-        public List<LogInInfo> ParseLogInData(string folder, bool wholeDay = true, int interval = 1)
+        /// <summary>
+        /// Parses login data to ActivityInfo instances
+        /// Data parsed from 7am (included) to 18pm (included)
+        /// </summary>
+        /// <param name="folder">Folder with login data files</param>
+        /// <param name="wholeDay">Should data be parsed as one instance per day (if true parameter interval will be ignored)</param>
+        /// <param name="interval">Time interval to divide days by, minimum is 1h</param>
+        /// <returns></returns>
+        public List<ActivityInfo> ParseLogInData(string folder, bool wholeDay = true, int interval = 1)
         {
-            List<LogInInfo> list = new List<LogInInfo>();
-
-            // najít složku, ve složce sou data co se budou parsovat
-
             if (!Directory.Exists(folder))
                 return null;
+            
+            List<ActivityInfo> list = new List<ActivityInfo>();
 
-            // když v jednej složce budou všechny jis data co chci zpracovat
-            // pro každej soubor budu spouštět parsování
+            // get all files in folder
             string[] fileEntries = Directory.GetFiles(folder);
             foreach (string fileName in fileEntries)
             {
-                List<LogInInfo> loadedData = null;
-                // pokud po jednom dni
+                List<ActivityInfo> loadedData = null;
+                
+                // parse as one instance per day
                 if (wholeDay)
                     loadedData = ProcessOneLogInFileAsDays(fileName);
-                // pokud po hodinách
+                // parse by interval length
                 else
                 {
                     // pokud: konec dne nebo konec aktuálního intervalu -> vemu to co sem nasčítal
@@ -39,33 +49,43 @@ namespace Parser.Parsers
             return list;
         }
 
-        private static List<LogInInfo> ProcessOneLogInFileAsDays(string path)
+        /// <summary>
+        /// Parses data from one data file as one instance per day
+        /// </summary>
+        /// <param name="path">Path ti file</param>
+        /// <returns>List with ActivityInfo instances</returns>
+        private static List<ActivityInfo> ProcessOneLogInFileAsDays(string path)
         {
-            List<LogInInfo> loginInfo = new List<LogInInfo>();
+            if (!File.Exists(path))
+                return null;
 
-            // načíst data ze souboru
+            List<ActivityInfo> loginInfo = new List<ActivityInfo>();
             List<LogInInstance> list = CsvDataLoader.LoadLoginFile(path);
 
+            // data for each faculty
             int[] recordedAmount = new int[TagInfo.faculties.Length];
+            // min/max hour taken into account
             int[] minmaxHour = new int[] { 7, 18 };
+            // interval length
             int range = minmaxHour[1] - minmaxHour[0];
 
-            // procházet data ze souboru
-            DateTime lastStartDay = new DateTime(list[0].date.Year, list[0].date.Month, list[0].date.Day);
+            // first day
+            DateTime lastStartDay = new DateTime(list[0].date.Year, list[0].date.Month, list[0].date.Day, minmaxHour[0], 0, 0);
             for (int i = 0; i < list.Count; i++)
             {
                 int currHour = list[i].lessonStart.Hour;
                 if (currHour < minmaxHour[0] || currHour > minmaxHour[1])
                     continue;
 
-                // v každym dni agreguju
+                // start of the day -> make an instance
                 string place = list[i].building;
-                DateTime date = new DateTime(list[i].date.Year, list[i].date.Month, list[i].date.Day);
+                DateTime date = new DateTime(list[i].date.Year, list[i].date.Month, list[i].date.Day, minmaxHour[0], 0, 0);
                 if (!date.Equals(lastStartDay))
                 {
+                    // data for each faculty separate
                     for (int k = 0; k < TagInfo.faculties.Length; k++)
                     {
-                        LogInInfo dayInfo = new LogInInfo(TagInfo.faculties[k], recordedAmount[k], lastStartDay, range); 
+                        ActivityInfo dayInfo = new ActivityInfo(TagInfo.faculties[k], recordedAmount[k], lastStartDay, range); 
                         loginInfo.Add(dayInfo);
                     }
 
@@ -73,13 +93,15 @@ namespace Parser.Parsers
                     lastStartDay = date;
                 }
 
-                // tady nasčítávát podle místa
+                // aggregate data
                 if (TagInfo.buildingTags.ContainsKey(place))
                 {
                     int index = TagInfo.buildingTags[place];
+                    // to all
                     if (index == -1)
                         for (int l = 0; l < TagInfo.faculties.Length; l++)
                             recordedAmount[l] += list[i].amount;
+                    // to first two
                     else if (index == -2)
                     {
                         recordedAmount[0] += list[i].amount;
@@ -91,21 +113,23 @@ namespace Parser.Parsers
                 }
                 else
                 {
+                    // TODO uknown code handling
                     Console.WriteLine("Unknown code " + list[i].building);
                 }
 
             }
 
+            // last day
             for (int k = 0; k < TagInfo.faculties.Length; k++)
             {
-                LogInInfo dayInfo = new LogInInfo(TagInfo.faculties[k], recordedAmount[k], lastStartDay, range);
+                ActivityInfo dayInfo = new ActivityInfo(TagInfo.faculties[k], recordedAmount[k], lastStartDay, range);
                 loginInfo.Add(dayInfo);
             }
 
             return loginInfo;
         }
 
-        private static List<JisInfo> ProcessOneLoginFileAsIntervals(string path, int interval)
+        private static List<ActivityInfo> ProcessOneLoginFileAsIntervals(string path, int interval)
         {
             throw new NotImplementedException();
         }
diff --git a/Server/ServerApp/Parser/Parsers/TagInfo.cs b/Server/ServerApp/Parser/Parsers/TagInfo.cs
index 0ec617a..4e64d40 100644
--- a/Server/ServerApp/Parser/Parsers/TagInfo.cs
+++ b/Server/ServerApp/Parser/Parsers/TagInfo.cs
@@ -1,6 +1,6 @@
 ﻿using System.Collections.Generic;
 
-namespace Parser.Parsers
+namespace ServerApp.Parser.Parsers
 {
     class TagInfo
     {
diff --git a/Server/ServerApp/Parser/Parsers/WeatherParser.cs b/Server/ServerApp/Parser/Parsers/WeatherParser.cs
index 9c40a61..2de5073 100644
--- a/Server/ServerApp/Parser/Parsers/WeatherParser.cs
+++ b/Server/ServerApp/Parser/Parsers/WeatherParser.cs
@@ -1,33 +1,42 @@
-﻿using Parser.InputData;
-using Parser.OutputInfo;
+﻿using ServerApp.Parser.InputData;
+using ServerApp.Parser.OutputInfo;
 using System;
 using System.Collections.Generic;
 using System.IO;
 
-namespace Parser.Parsers
+namespace ServerApp.Parser.Parsers
 {
+    /// <summary>
+    /// Class parsing weather files into instances of WeatherInfo divided by given time interval
+    /// Data parsed from 7am (included) to 18pm (included)
+    /// </summary>
     class WeatherParser
     {
-        
+        /// <summary>
+        /// Parses weather data to WeatherInfo instances
+        /// Data parsed from 7am (included) to 18pm (included)
+        /// </summary>
+        /// <param name="folder">Folder with weather data files</param>
+        /// <param name="wholeDay">Should data be parsed as one instance per day (if true parameter interval will be ignored)</param>
+        /// <param name="interval">Time interval to divide days by, minimum is 1h</param>
+        /// <returns></returns>
         public List<WeatherInfo> ParseWeatherData(string folder, bool wholeDay = true, int interval = 1)
         {
-            List<WeatherInfo> list = new List<WeatherInfo>();
-
-            // najít složku, ve složce sou data co se budou parsovat
-
             if (!Directory.Exists(folder))
                 return null;
 
-            // když v jednej složce budou všechny jis data co chci zpracovat
-            // pro každej soubor budu spouštět parsování
+            List<WeatherInfo> list = new List<WeatherInfo>();
+
+            // get all files in folder
             string[] fileEntries = Directory.GetFiles(folder);
             foreach (string fileName in fileEntries)
             {
                 List<WeatherInfo> loadedData = null;
-                // pokud po jednom dni
+                
+                // parse as one instance per day
                 if (wholeDay)
                     loadedData = ProcessOneWeatherFileAsDays(fileName);
-                // pokud po hodinách
+                // parse according to interval
                 else
                 {
                     // pokud: konec dne nebo konec aktuálního intervalu -> vemu to co sem nasčítal
@@ -40,20 +49,29 @@ namespace Parser.Parsers
             return list;
         }
 
+        /// <summary>
+        /// Parses data from one data file as one instance per day
+        /// </summary>
+        /// <param name="path">Path ti file</param>
+        /// <returns>List with WeatherInfo instances</returns>
         private static List<WeatherInfo> ProcessOneWeatherFileAsDays(string path)
         {
-            List<WeatherInfo> weatherInfo = new List<WeatherInfo>();
+            if (!File.Exists(path))
+                return null;
 
-            // načíst data ze souboru
+            List<WeatherInfo> weatherInfo = new List<WeatherInfo>();
             List<WeatherInstance> list = CsvDataLoader.LoadWeatherFile(path);
 
-            //temp, rain, wind, lum
+            // array with data [temp, rain, wind, lum]
             double[] recordedAmount = new double[4];
+            // min/max hour taken into account
             int[] minmaxHour = new int[] { 7, 18 };
+            // interval length
             int range = minmaxHour[1] - minmaxHour[0];
 
-            // procházet data ze souboru
-            DateTime lastStartDay = new DateTime(list[0].dateTime.Year, list[0].dateTime.Month, list[0].dateTime.Day);
+            // first day
+            DateTime lastStartDay = new DateTime(list[0].dateTime.Year, list[0].dateTime.Month, list[0].dateTime.Day, minmaxHour[0], 0, 0);
+            // number of values in day
             int values = 0;
             for (int i = 0; i < list.Count; i++)
             {
@@ -61,8 +79,8 @@ namespace Parser.Parsers
                 if (currHour < minmaxHour[0] || currHour > minmaxHour[1])
                     continue;
 
-                // v každym dni agreguju
-                DateTime date = new DateTime(list[i].dateTime.Year, list[i].dateTime.Month, list[i].dateTime.Day);
+                // start of new day -> make a new instance
+                DateTime date = new DateTime(list[i].dateTime.Year, list[i].dateTime.Month, list[i].dateTime.Day, minmaxHour[0], 0, 0);
                 if (!date.Equals(lastStartDay))
                 {
                     WeatherInfo dayInfo = new WeatherInfo(lastStartDay, recordedAmount[0] / values, (int)(recordedAmount[1] / values * 100), recordedAmount[2] / values, recordedAmount[3] / values, range); 
@@ -73,21 +91,23 @@ namespace Parser.Parsers
                     values = 0;
                 }
 
-                // tady nasčítávát data
+                // aggregate data
                 recordedAmount[0] += list[i].temp;
                 recordedAmount[1] += list[i].rain;
                 recordedAmount[2] += list[i].wind;
                 recordedAmount[3] += list[i].lum * 1000;
+
                 values++;
             }
 
+            // data from last day
             WeatherInfo dayInfo2 = new WeatherInfo(lastStartDay, recordedAmount[0] / values, (int)(recordedAmount[1] / values * 100), recordedAmount[2] / values, recordedAmount[3] / values, range); 
             weatherInfo.Add(dayInfo2);
 
             return weatherInfo;
         }
 
-        private static List<JisInfo> ProcessOneWeatherFileAsIntervals(string path, int interval)
+        private static List<ActivityInfo> ProcessOneWeatherFileAsIntervals(string path, int interval)
         {
             throw new NotImplementedException();
         }
diff --git a/Server/ServerApp/Program.cs b/Server/ServerApp/Program.cs
index d4a834b..ec09327 100644
--- a/Server/ServerApp/Program.cs
+++ b/Server/ServerApp/Program.cs
@@ -1,9 +1,5 @@
-﻿using Parser.Parsers;
+﻿using ServerApp.Parser.Parsers;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace ServerApp
 {
@@ -11,7 +7,7 @@ namespace ServerApp
     {
         static void Main(string[] args)
         {
-            CsvParser p = new CsvParser();
+            DataParser p = new DataParser();
 
             p.Parse();
 
diff --git a/Server/ServerApp/ServerApp.csproj b/Server/ServerApp/ServerApp.csproj
index 63a1a07..90c3ae8 100644
--- a/Server/ServerApp/ServerApp.csproj
+++ b/Server/ServerApp/ServerApp.csproj
@@ -48,14 +48,10 @@
     <Compile Include="Parser\InputData\JisInstance.cs" />
     <Compile Include="Parser\InputData\LogInInstance.cs" />
     <Compile Include="Parser\InputData\WeatherInstance.cs" />
-    <Compile Include="Parser\OutputInfo\JisInfo.cs" />
-    <Compile Include="Parser\OutputInfo\LogInInfo.cs" />
-    <Compile Include="Parser\OutputInfo\LumInfo.cs" />
-    <Compile Include="Parser\OutputInfo\RainInfo.cs" />
-    <Compile Include="Parser\OutputInfo\TempInfo.cs" />
+    <Compile Include="Parser\OutputInfo\ActivityInfo.cs" />
+    <Compile Include="Parser\OutputInfo\WeatherConditions.cs" />
     <Compile Include="Parser\OutputInfo\WeatherInfo.cs" />
-    <Compile Include="Parser\OutputInfo\WindInfo.cs" />
-    <Compile Include="Parser\Parsers\CsvParser.cs" />
+    <Compile Include="Parser\Parsers\DataParser.cs" />
     <Compile Include="Parser\Parsers\JisParser.cs" />
     <Compile Include="Parser\Parsers\LogInParser.cs" />
     <Compile Include="Parser\Parsers\TagInfo.cs" />
diff --git a/Server/ServerApp/bin/Debug/ServerApp.exe b/Server/ServerApp/bin/Debug/ServerApp.exe
index fc6e2a8..98bf674 100644
Binary files a/Server/ServerApp/bin/Debug/ServerApp.exe and b/Server/ServerApp/bin/Debug/ServerApp.exe differ
diff --git a/Server/ServerApp/bin/Debug/ServerApp.pdb b/Server/ServerApp/bin/Debug/ServerApp.pdb
index 2a61eb6..6d09d82 100644
Binary files a/Server/ServerApp/bin/Debug/ServerApp.pdb and b/Server/ServerApp/bin/Debug/ServerApp.pdb differ
diff --git a/Server/ServerApp/obj/Debug/ServerApp.csproj.CoreCompileInputs.cache b/Server/ServerApp/obj/Debug/ServerApp.csproj.CoreCompileInputs.cache
index 0811323..088c3eb 100644
--- a/Server/ServerApp/obj/Debug/ServerApp.csproj.CoreCompileInputs.cache
+++ b/Server/ServerApp/obj/Debug/ServerApp.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-446e0a8c9360f09ce5d918714762c9add41796cd
+e944a18ef305c65a78390072fd21554ec2955315
diff --git a/Server/ServerApp/obj/Debug/ServerApp.csprojAssemblyReference.cache b/Server/ServerApp/obj/Debug/ServerApp.csprojAssemblyReference.cache
index 8b2ee19..f42cdc6 100644
Binary files a/Server/ServerApp/obj/Debug/ServerApp.csprojAssemblyReference.cache and b/Server/ServerApp/obj/Debug/ServerApp.csprojAssemblyReference.cache differ
diff --git a/Server/ServerApp/obj/Debug/ServerApp.exe b/Server/ServerApp/obj/Debug/ServerApp.exe
index fc6e2a8..98bf674 100644
Binary files a/Server/ServerApp/obj/Debug/ServerApp.exe and b/Server/ServerApp/obj/Debug/ServerApp.exe differ
diff --git a/Server/ServerApp/obj/Debug/ServerApp.pdb b/Server/ServerApp/obj/Debug/ServerApp.pdb
index 2a61eb6..6d09d82 100644
Binary files a/Server/ServerApp/obj/Debug/ServerApp.pdb and b/Server/ServerApp/obj/Debug/ServerApp.pdb differ
