Exemplo n.º 1
0
        public Response Register(RegisterUser registerUser)
        {
            using (PP_testEntities context = new PP_testEntities())
            {
                bool isExist = context.Uzytkownicies.Any(u => u.email == registerUser.Email);
                if (isExist)
                {
                    return new Response()
                           {
                               Result = "Failed", Reason = "User is already exist"
                           }
                }
                ;

                var user = new Uzytkownicy()
                {
                    email       = registerUser.Email,
                    haslo       = registerUser.Password,
                    nazwa_uzytk = registerUser.Name
                };
                context.Uzytkownicies.Add(user);
                context.SaveChanges();
            }
            return(new Response()
            {
                Result = "OK"
            });
        }
Exemplo n.º 2
0
 public Response UpdateInterwalies(List <Interwaly> interwaly)
 {
     using (PP_testEntities context = new PP_testEntities())
     {
         var rows = from o in context.Interwalies
                    select o;
         foreach (var row in rows)
         {
             context.Interwalies.Remove(row);
         }
         foreach (var i in interwaly)
         {
             context.Interwalies.Add(i);
         }
         context.SaveChanges();
     }
     return(new Response()
     {
         Result = "OK"
     });
 }
Exemplo n.º 3
0
 public Response UpdateUser(UserProfile user)
 {
     using (PP_testEntities context = new PP_testEntities())
     {
         var userToUpdate = (from u in context.Uzytkownicies.Include("Przejazdy_fs").Include("Pojazdies")
                             where user.email == u.email
                             select u).FirstOrDefault();
         if (userToUpdate != null)
         {
             userToUpdate.administrator = user.administrator;
             userToUpdate.email         = user.email;
             userToUpdate.haslo         = user.haslo;
             userToUpdate.id_uzytk      = user.id_uzytk;
             userToUpdate.imie          = user.imie;
             userToUpdate.nazwisko      = user.nazwisko;
             userToUpdate.nazwa_uzytk   = user.nazwa_uzytk;
         }
         context.SaveChanges();
     }
     return(new Response()
     {
         Result = "OK"
     });
 }
        public Response Read(Reading reading)
        {
            bool tokenExist = AuthRepository.IsTokenExist(reading.AuthToken);
#if DEBUG
            tokenExist = true;
#endif
            if (tokenExist)
            {
                try
                {
                    List<int> ridesIds = new List<int>();
                    var file = Convert.FromBase64String(reading.Content);//System.Text.Encoding.Unicode.GetBytes(reading.Content);
                    string fileName = DateTime.Now.ToString("yyyyMMddHHmmtt") + RandomString(5);
                    string tmpFilePath = Path.Combine(Path.GetTempPath(), fileName);
                    File.WriteAllBytes(tmpFilePath, file);
                    using (SQLiteConnection con = new SQLiteConnection("Data Source="+tmpFilePath))
                    {
                        con.Open();
                        string ride = "SELECT _id FROM ride";

                        using (SQLiteCommand cmd = new SQLiteCommand(ride, con))
                        {
                            using (SQLiteDataReader rdr = cmd.ExecuteReader())
                            {
                                while (rdr.Read())
                                {
                                    ridesIds.Add(rdr.GetInt32(0));
                                }
                            }
                        }
                        using (PP_testEntities context = new PP_testEntities())
                        {
                            if (ridesIds.Count == 1)
                            {
                                var przejazd = new Przejazdy_fs();
                                przejazd.dane_przejazdu = file;
                                var userLogins = AuthRepository.GetLogin(reading.AuthToken);
#if DEBUG
                                var user = (from u in context.Uzytkownicies select u).FirstOrDefault();
#else
                                    var user = (from u in context.Uzytkownicies where u.email == userLogins select u).FirstOrDefault();
#endif
                                przejazd.Uzytkownicy = user;
                                przejazd.id_przejazdu = Guid.NewGuid();
                                context.Przejazdy_fs.Add(przejazd);
                                AddTagsToRide(con, context, przejazd);
                            }

                            else if (ridesIds.Count > 1)
                            {
                                foreach (var id in ridesIds)
                                {
                                    string fname = DateTime.Now.ToString("yyyyMMddHHmmtt") + RandomString(5);
                                    string path = Path.Combine(Path.GetTempPath(), fname);
                                    File.WriteAllBytes(path, file);
                                    var przejazd = new Przejazdy_fs();
                                    using (SQLiteConnection con2 = new SQLiteConnection("Data Source=" + path))
                                    {
                                        con2.Open();
                                        string query = "DELETE FROM location_data where RIDE_ID <> " + id.ToString();
                                        SQLiteCommand cmd = new SQLiteCommand(query, con2);
                                        cmd.ExecuteNonQuery();
                                        cmd.Dispose();

                                        query = "DELETE FROM accelerometer_data where RIDE_ID <> " + id.ToString();
                                        cmd = new SQLiteCommand(query, con2);
                                        cmd.ExecuteNonQuery();
                                        cmd.Dispose();

                                        query = "DELETE FROM gyroscope_data where RIDE_ID <> " + id.ToString();
                                        cmd = new SQLiteCommand(query, con2);
                                        cmd.ExecuteNonQuery();
                                        cmd.Dispose();

                                        query = "DELETE FROM light_data where RIDE_ID <> " + id.ToString();
                                        cmd = new SQLiteCommand(query, con2);
                                        cmd.ExecuteNonQuery();
                                        cmd.Dispose();

                                        query = "DELETE FROM ride where _id <> " + id.ToString();
                                        cmd = new SQLiteCommand(query, con2);
                                        cmd.ExecuteNonQuery();
                                        cmd.Dispose();

                                        var userLogins = AuthRepository.GetLogin(reading.AuthToken);
#if DEBUG
                                        var user = (from u in context.Uzytkownicies select u).FirstOrDefault();
#else
                                    var user = (from u in context.Uzytkownicies where u.email == userLogins select u).FirstOrDefault();
#endif
                                        przejazd.Uzytkownicy = user;
                                        przejazd.id_przejazdu = Guid.NewGuid();                                   
                                        przejazd.dane_przejazdu = Encoding.ASCII.GetBytes(System.DateTime.Now.ToString());
                                        context.Przejazdy_fs.Add(przejazd);
                                        AddTagsToRide(con2, context, przejazd);
                                        con2.Close();
                                        GC.Collect();
                                        GC.WaitForPendingFinalizers();
                                    }
                                    przejazd.dane_przejazdu = File.ReadAllBytes(path);
                                }                              
                            }
                            context.SaveChanges();
                        }
                    }
                   
                    File.Delete(tmpFilePath);
                    return new Response() { Result = "OK" };
                }
                catch (Exception e)
                {
                    return new Response() { Result = "Error", Reason = e.Message };
                }
            }
            else
            {
                return new Response() {Result = "Error", Reason = "Zły token sesji"};
            }
        }
        public PassageData SplitPassageData(UpdateStatistic stat)
        {
            bool tokenExists = AuthRepository.IsTokenExist(stat.Token);

            //#if DEBUG
            //            tokenExists = true;
            //#endif
            if (!tokenExists || stat.PassageGuid == null)
            {
                return(new PassageData());
            }

            string login = AuthRepository.GetLogin(stat.Token);
            var    guid  = new Guid(stat.PassageGuid);

            using (var context = new PP_testEntities())
            {
                var user     = context.Uzytkownicies.First(u => u.email == login);
                var przejazd = context.Przejazdy_fs.FirstOrDefault(p => p.id_przejazdu == guid);
                if (przejazd == null || przejazd.id_uzytk != user.id_uzytk && !user.administrator)
                {
                    return(new PassageData());
                }

                string fileNameInner    = DateTime.Now.ToString("yyyyMMddHHmmtt") + ReadingsRepository.RandomString(5);
                string fileNameOuter    = DateTime.Now.ToString("yyyyMMddHHmmtt") + ReadingsRepository.RandomString(5);
                string tmpFilePathInner = Path.Combine(Path.GetTempPath(), fileNameInner);
                string tmpFilePathOuter = Path.Combine(Path.GetTempPath(), fileNameOuter);
                File.WriteAllBytes(tmpFilePathInner, przejazd.dane_przejazdu);
                File.WriteAllBytes(tmpFilePathOuter, przejazd.dane_przejazdu);

                var nowy_przejazd = new Przejazdy_fs();
                using (var con = new SQLiteConnection("Data Source=" + tmpFilePathInner))
                    using (var con2 = new SQLiteConnection("Data Source=" + tmpFilePathOuter))
                    {
                        con.Open();
                        con2.Open();

                        string query =
                            $"DELETE FROM location_data where TIMESTAMP >= {stat.StartTimestamp} and TIMESTAMP <= {stat.EndTimestamp}";
                        SQLiteCommand cmd = new SQLiteCommand(query, con2);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        query = $"DELETE FROM accelerometer_data where TIMESTAMP >= {stat.StartTimestamp} and TIMESTAMP <= {stat.EndTimestamp}";
                        cmd   = new SQLiteCommand(query, con2);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        query = $"DELETE FROM gyroscope_data where TIMESTAMP >= {stat.StartTimestamp} and TIMESTAMP <= {stat.EndTimestamp}";
                        cmd   = new SQLiteCommand(query, con2);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        query = $"DELETE FROM light_data where TIMESTAMP >= {stat.StartTimestamp} and TIMESTAMP <= {stat.EndTimestamp}";
                        cmd   = new SQLiteCommand(query, con2);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();


                        query =
                            $"DELETE FROM location_data where TIMESTAMP < {stat.StartTimestamp} or TIMESTAMP > {stat.EndTimestamp}";
                        cmd = new SQLiteCommand(query, con);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        query = $"DELETE FROM accelerometer_data where TIMESTAMP < {stat.StartTimestamp} or TIMESTAMP > {stat.EndTimestamp}";
                        cmd   = new SQLiteCommand(query, con);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        query = $"DELETE FROM gyroscope_data where TIMESTAMP < {stat.StartTimestamp} or TIMESTAMP > {stat.EndTimestamp}";
                        cmd   = new SQLiteCommand(query, con);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        query = $"DELETE FROM light_data where TIMESTAMP < {stat.StartTimestamp} or TIMESTAMP > {stat.EndTimestamp}";
                        cmd   = new SQLiteCommand(query, con);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();

                        context.Tagis.RemoveRange(context.Tagis.Where(t => t.id_przejazdu == guid));
                        var repo = new ReadingsRepository();
                        repo.AddTagsToRide(con2, context, przejazd);

                        nowy_przejazd.id_przejazdu   = Guid.NewGuid();
                        nowy_przejazd.id_pojazdu     = przejazd.id_pojazdu;
                        nowy_przejazd.id_uzytk       = przejazd.id_uzytk;
                        nowy_przejazd.data_przejazdu = przejazd.data_przejazdu;
                        repo.AddTagsToRide(con, context, nowy_przejazd);
                    }
                przejazd.dane_przejazdu      = File.ReadAllBytes(tmpFilePathOuter);
                nowy_przejazd.dane_przejazdu = File.ReadAllBytes(tmpFilePathInner);
                File.Delete(tmpFilePathOuter);
                File.Delete(tmpFilePathInner);
                context.Przejazdy_fs.Add(nowy_przejazd);
                context.SaveChanges();

                return(new PassageData());
            }
        }