private static void CreateUrl()
        {
            IRepository repository = new Repository(SessionFactoryProvider);
            var q = (from code in repository.AsQueryable<ResponseCodes>() where code.ResponseCode == 501 select code).Single();

            using (var transaction = new TransactionScope()){
            var ses = new Sesions {
                ExecutionTime = 4525,
                CreationTime = DateTime.Now,
                userIP = "asad"
            };
            repository.Save(ses);
            var url = new URLs {
                url = new Uri("http://www.google.lt"),
                sesion = ses,
            };
            repository.Save(url);
            var response = new Responses {
                ResponseTime = 12345,
                URL = url,
                ResponseCode = q,
                RequestStartTime = DateTime.Now
            };
            repository.Save(response);
            repository.Commit();
            transaction.Complete();
            }
            Sesions q2 = (from ses in repository.AsQueryable<Sesions>() where ses.userIP == "asad" select ses).Single();
            //ISesionToXML s2x = new SesionToXML();
            //s2x.ConvertSesionToXML(q2, "C:/hugas.xml");
        }
        public void ConvertSesionToXML(Sesions sesion, StringWriter stream)
        {
            IRepository repository = new Repository(SessionFactoryProvider);
            XmlWriterSettings setings = new XmlWriterSettings();
            setings.Indent = true;
            setings.IndentChars = "    ";
            using (XmlWriter writer = XmlWriter.Create(stream, setings)) {
                writer.WriteStartDocument();
                writer.WriteStartElement("Sesion");
                writer.WriteElementString("StatupTime", sesion.CreationTime.ToString());
                writer.WriteStartElement("URLs");

                List<URLs> q1 = (from url in repository.AsQueryable<URLs>() where url.sesion == sesion select url).ToList<URLs>();
                foreach (URLs url in q1) {
                    writer.WriteStartElement("URL");
                    writer.WriteElementString("url", url.url.ToString());
                    writer.WriteStartElement("Responses");
                    List<Responses> q2 = (from response in repository.AsQueryable<Responses>() where response.URL == url select response).ToList<Responses>();
                    foreach (Responses response in q2) {
                        writer.WriteStartElement("Response");
                        var q3 = (from code in repository.AsQueryable<ResponseCodes>() where code == response.ResponseCode select code.ResponseCode).Single();
                        writer.WriteElementString("ResponseCode", q3.ToString());
                        writer.WriteElementString("RequestTime", response.RequestStartTime.ToLongTimeString() + ":" + response.RequestStartTime.Millisecond);
                        writer.WriteElementString("ResponseTime", response.ResponseTime.ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Close();
            }
        }
 public IList<URLs> selectUrlsBySesionTime(DateTime date, string ip)
 {
     IRepository repository = new Repository(SessionFactoryProvider);
     var curentSesion = (from sesion in repository.AsQueryable<Sesions>()
                   where sesion.CreationTime == date
                   && sesion.userIP == ip
                   select sesion).Single();
     var list = (from url in repository.AsQueryable<URLs>()
                 where url.sesion == curentSesion
                 select url).ToList<URLs>();
     return list;
 }
        public string Generatereport(DateTime date)
        {
            IRepository repository = new Repository(SessionFactoryProvider);
            var q = (from sesion in repository.AsQueryable<Sesions>() where sesion.CreationTime == date select sesion).Single();
            stream.Write("Sesijos pradzia: " + q.CreationTime + ",\nUztruko: " + q.ExecutionTime + "sekundziu,\n");
            stream.Write("Vartotojo IP: " + q.userIP + ",\n");
            List<URLs> q1 = (from url in repository.AsQueryable<URLs>() where url.sesion == q select url).ToList<URLs>();
            stream.Write("Nuorodu kiekis: " + q1.Count + ",\n\n");
            int requestCount = 0;
            int overalResponseTime = 0;
            int avgResponseTime = 0;
            double avgTimesOfSucces = 0;
            double avgTimesOfFailure = 0;
            int timesOfSuccesAll = 0;
            int timesOfFailureAll = 0;
            int timesOfSucces = 0;
            int timesOfFailure = 0;

            List<Responses> q2;
            foreach (URLs url in q1) {
                timesOfSucces = 0;
                timesOfFailure = 0;
                overalResponseTime = 0;
                q2 = (from response in repository.AsQueryable<Responses>() where response.URL == url select response).ToList<Responses>();
                requestCount = q2.Count;
                stream.Write("URL adresas: " + url.url + ",\n");
                stream.Write("Uzklausu skaicius: " + q2.Count + ",\n\n");
                foreach (Responses response in q2) {
                    overalResponseTime += response.ResponseTime;
                    if (response.ResponseCode.ResponseCode == 200)
                        timesOfSucces++;
                    else
                        timesOfFailure++;
                }
                avgResponseTime = overalResponseTime / q2.Count;
                stream.Write("Vidutinis atsako laikas: " + avgResponseTime + ",\n");
                stream.Write("Sekmingu uzklausu skaicius: " + timesOfSucces + ",\n");
                stream.Write("Nesekmingu uzklausu skaicius: " + timesOfFailure + ",\n\n");
                timesOfSuccesAll += timesOfSucces;
                timesOfFailureAll += timesOfFailure;
            }
            avgTimesOfSucces = (double)timesOfSuccesAll / (requestCount * q1.Count) * 100;
            avgTimesOfFailure = (double)timesOfFailureAll / (requestCount * q1.Count) * 100;
            stream.Write("Visos sesijos duomenys: \n\n");
            stream.Write("Sekmingu atsakymu vidurkis: " + avgTimesOfSucces + "% ,\n");
            stream.Write("Nesekmingu atsakymu vidurkis: " + avgTimesOfFailure + "% ,\n");
            return stream.ToString();
        }
        public void NewProgramSesion()
        {
            newSesion.CreationTime = DateTime.Now;
            newSesion.userIP = ip;
            IRepository repository = new Repository(SessionFactoryProvider);
            repository.Save(newSesion);
            repository.Commit();
            foreach (string url in urls)
            {
                if(url != "")
                    if (IsValidUrl(url))
                    {
                        Uri uri = new Uri(url, UriKind.RelativeOrAbsolute);
                        ProgramManager pm = new ProgramManager(uri, newSesion);
                        pm.Execute(amount, time, buffer);
                    }
                    else
                        return;
            }
            buffer.Write();

            var t = DateTime.Now - newSesion.CreationTime;

            var q = (from sesion in repository.AsQueryable<Sesions>() where sesion == newSesion select sesion).Single();
            q.ExecutionTime = t.Value.Seconds + t.Value.Minutes * 60 + t.Value.Hours * 3600;
            repository.Save(q);
            repository.Commit();
            if (onSesionEnd != null)
                onSesionEnd(q.ExecutionTime.ToString());
            //Thread.Sleep(3000);
            //ISesionToXML s2x = new SesionToXML();
            //s2x.ConvertSesionToXML(newSesion, "C:/hugas.xml");
        }
 public IList<Sesions> selectByIp(string ip)
 {
     IRepository repository = new Repository(SessionFactoryProvider);
     var list = (from sesion in repository.AsQueryable<Sesions>()
                 where sesion.userIP == ip
                 select sesion).ToList<Sesions>();
     return list;
 }
 public string StreamFromSesionTime(DateTime time)
 {
     IRepository repository = new Repository(SessionFactoryProvider);
     var q = (from sesion in repository.AsQueryable<Sesions>() where sesion.CreationTime == time select sesion).Single();
     ISesionToXML stx = new SesionToXML();
     stx.ConvertSesionToXML(q, stream);
     return stream.ToString();
 }