public int GetCurrentSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.CurrentBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { sizes = new BoxSizes(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); cmd.CommandText = @"SELECT box, count(*) AS count FROM ""UserCardState"" WHERE active=true and user_id=:user_id and cards_id IN (SELECT cards_id FROM ""LearningModules_Cards"" WHERE lm_id=:lm_id) GROUP BY box"; cmd.Parameters.Add("user_id", Parent.CurrentUser.Id); cmd.Parameters.Add("lm_id", Parent.CurrentUser.ConnectionString.LmId); NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser, false); while (reader.Read()) { sizes.Value.Sizes[Convert.ToInt32(reader["box"])] = Convert.ToInt32(reader["count"]); } Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.CurrentBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] = sizes.Value; return(sizes.Value.Sizes[id]); } } }
/// <summary> /// Gets the size of the current. /// </summary> /// <param name="id">The id.</param> /// <returns></returns> /// <remarks>Documented by Dev03, 2009-01-09</remarks> /// <remarks>Documented by Dev08, 2009-01-09</remarks> public int GetCurrentSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.CurrentBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser)) { sizes = new BoxSizes(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); //filled with temp/default values cmd.CommandText = "SELECT CS.box, count(*) AS count FROM UserCardState CS INNER JOIN Cards C ON CS.cards_id = C.id WHERE CS.active=1 and CS.user_id=@user_id and C.lm_id=@lm_id GROUP BY CS.box"; cmd.Parameters.Add("@user_id", Parent.CurrentUser.Id); cmd.Parameters.Add("@lm_id", Parent.CurrentUser.ConnectionString.LmId); SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd); while (reader.Read()) { sizes.Value.Sizes[Convert.ToInt32(reader["box"])] = Convert.ToInt32(reader["count"]); } reader.Close(); Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.CurrentBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] = sizes.Value; return(sizes.Value.Sizes[id]); } }
private BoxSizes GetCurrentBoxContent() { BoxSizes sizes; using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { sizes = new BoxSizes(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); cmd.CommandText = @"SELECT CS.box AS box, count(*) AS count FROM ""UserCardState"" CS INNER JOIN ""Cards"" C ON C.id = CS.cards_id AND C.lm_id=:lm_id WHERE CS.active = TRUE AND CS.user_id = :user_id GROUP BY CS.box"; cmd.Parameters.Add("user_id", Parent.CurrentUser.Id); cmd.Parameters.Add("lm_id", Parent.CurrentUser.ConnectionString.LmId); NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser); while (reader.Read()) { sizes.Sizes[Convert.ToInt32(reader["box"])] = Convert.ToInt32(reader["count"]); } } } return(sizes); }
/// <summary> /// Gets the size of the default. /// </summary> /// <param name="id">The id.</param> /// <returns></returns> /// <remarks>Documented by Dev03, 2009-01-09</remarks> public int GetDefaultSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.DefaultBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser)) { cmd.CommandText = "SELECT Boxes.* FROM Boxes INNER JOIN Settings ON Boxes.id = Settings.boxes INNER JOIN LearningModules ON Settings.id = LearningModules.default_settings_id WHERE LearningModules.id = @lm_id"; cmd.Parameters.Add("@lm_id", Parent.CurrentUser.ConnectionString.LmId); SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd); reader.Read(); sizes = new BoxSizes(int.MaxValue, Convert.ToInt32(reader["box1_size"]), Convert.ToInt32(reader["box2_size"]), Convert.ToInt32(reader["box3_size"]), Convert.ToInt32(reader["box4_size"]), Convert.ToInt32(reader["box5_size"]), Convert.ToInt32(reader["box6_size"]), Convert.ToInt32(reader["box7_size"]), Convert.ToInt32(reader["box8_size"]), Convert.ToInt32(reader["box9_size"]), int.MaxValue); reader.Close(); Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.DefaultBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] = sizes.Value; return(sizes.Value.Sizes[id]); } }
/// <summary> /// Gets the size. /// </summary> /// <param name="id">The id.</param> /// <returns></returns> /// <remarks>Documented by Dev03, 2009-01-09</remarks> public int GetSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.BoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser)) { sizes = new BoxSizes(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); cmd.CommandText = @"SELECT UserCardState.box AS box, count(*) AS count FROM UserCardState, Chapters_Cards WHERE UserCardState.active=1 and Chapters_Cards.cards_id=UserCardState.cards_id and UserCardState.user_id=@user_id and Chapters_Cards.chapters_id IN ( SELECT chapters_id FROM SelectedLearnChapters INNER JOIN UserProfilesLearningModulesSettings ON SelectedLearnChapters.settings_id=UserProfilesLearningModulesSettings.settings_id WHERE UserProfilesLearningModulesSettings.user_id=@user_id and UserProfilesLearningModulesSettings.lm_id=@lm_id ) GROUP BY UserCardState.box" ; cmd.Parameters.Add("@user_id", Parent.CurrentUser.Id); cmd.Parameters.Add("@lm_id", Parent.CurrentUser.ConnectionString.LmId); SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd); while (reader.Read()) { sizes.Value.Sizes[Convert.ToInt32(reader["box"])] = Convert.ToInt32(reader["count"]); } reader.Close(); Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.BoxSizes, Parent.CurrentUser.ConnectionString.LmId, cacheLifeSpan)] = sizes.Value; return(sizes.Value.Sizes[id]); } }
public void RecalculateBoxSizes(int sessionId) { using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { cmd.CommandText = "UPDATE \"LearningSessions\" SET pool_content=:pool, box1_content=:b1, box2_content=:b2, box3_content=:b3, " + "box4_content=:b4, box5_content=:b5, box6_content=:b6, box7_content=:b7, box8_content=:b8, box9_content=:b9, box10_content=:b10 WHERE id=:sid AND user_id=:uid AND lm_id=:lmid"; cmd.Parameters.Add("sid", sessionId); cmd.Parameters.Add("uid", Parent.CurrentUser.Id); cmd.Parameters.Add("lmid", Parent.GetParentDictionary().Id); int counter = 0; int cardsInBoxes = 0; BoxSizes boxContent = GetCurrentBoxContent(); foreach (int box in boxContent.Sizes) { if (counter == 0) { cmd.Parameters.Add("pool", box); ++counter; continue; } cmd.Parameters.Add("b" + Convert.ToString(counter++), box); cardsInBoxes += box; } PostgreSQLConn.ExecuteNonQuery(cmd, Parent.CurrentUser); } } }
public void RecalculateBoxSizes(int sessionId) { SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser); cmd.CommandText = "UPDATE LearningSessions SET pool_content=@pool, box1_content=@b1, box2_content=@b2, box3_content=@b3, " + "box4_content=@b4, box5_content=@b5, box6_content=@b6, box7_content=@b7, box8_content=@b8, box9_content=@b9, box10_content=@b10 WHERE id=@sid AND user_id=@uid AND lm_id=@lmid"; cmd.Parameters.Add("sid", sessionId); cmd.Parameters.Add("@uid", Parent.CurrentUser.Id); cmd.Parameters.Add("@lmid", Parent.GetParentDictionary().Id); int counter = 0; int cardsInBoxes = 0; BoxSizes boxContent = GetCurrentBoxContent(); foreach (int box in boxContent.Sizes) { if (counter == 0) { cmd.Parameters.Add("@pool", box); ++counter; continue; } cmd.Parameters.Add("@b" + Convert.ToString(counter++), box); cardsInBoxes += box; } MSSQLCEConn.ExecuteNonQuery(cmd); }
private GestorePrenotazioni() { _prenotazioni = PrenotazioniRW.Load(); BoxSizes bs = ImpostazioniRW.LoadSettings(); BOX_CANI_SIZE = bs.NumBoxCani; BOX_GATTI_SIZE = bs.NumBoxGatti; }
/// <summary> /// Opens the user learning session. /// </summary> /// <param name="lm_id">The lm_id.</param> /// <remarks>Documented by Dev08, 2008-09-05</remarks> public int OpenUserSession(int lm_id) { using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { cmd.CommandText = "SELECT \"StartLearningSession\"(:usrid, :lmid, :pool, :b1, :b2, :b3, :b4, :b5, :b6, :b7, :b8, :b9, :b10)"; cmd.Parameters.Add("usrid", Parent.CurrentUser.Id); cmd.Parameters.Add("lmid", lm_id); int counter = 0; int cardsInBoxes = 0; BoxSizes boxContent = GetCurrentBoxContent(); foreach (int box in boxContent.Sizes) { if (counter == 0) { cmd.Parameters.Add("pool", box); ++counter; continue; } cmd.Parameters.Add("b" + Convert.ToString(counter++), box); cardsInBoxes += box; } int newSessionId = PostgreSQLConn.ExecuteScalar <int>(cmd, Parent.CurrentUser).Value; //Following Statement does add the "RunningSession" = true to the current Statistic. PgSqlStatisticConnector connector = PgSqlStatisticConnector.GetInstance(Parent); connector.RunningSession = newSessionId; return(newSessionId); } } }
public int GetDefaultSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.DefaultBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { cmd.CommandText = string.Format("SELECT * FROM \"Boxes\"" + "WHERE id=(SELECT boxes FROM \"Settings\" WHERE id=(SELECT default_settings_id FROM \"LearningModules\" WHERE id=:lm_id))", id); cmd.Parameters.Add("lm_id", Parent.CurrentUser.ConnectionString.LmId); NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser); reader.Read(); sizes = new BoxSizes(int.MaxValue, Convert.ToInt32(reader["box1_size"]), Convert.ToInt32(reader["box2_size"]), Convert.ToInt32(reader["box3_size"]), Convert.ToInt32(reader["box4_size"]), Convert.ToInt32(reader["box5_size"]), Convert.ToInt32(reader["box6_size"]), Convert.ToInt32(reader["box7_size"]), Convert.ToInt32(reader["box8_size"]), Convert.ToInt32(reader["box9_size"]), int.MaxValue); Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.DefaultBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] = sizes.Value; return(sizes.Value.Sizes[id]); } } }
public int GetMaximalSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.MaximalBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { cmd.CommandText = string.Format("SELECT * FROM \"GetBoxSizes\"(:uid, :lm_id)", id); cmd.Parameters.Add("uid", Parent.CurrentUser.Id); cmd.Parameters.Add("lm_id", Parent.CurrentUser.ConnectionString.LmId); NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser); reader.Read(); sizes = new BoxSizes(Convert.ToInt32(reader["box0"]), Convert.ToInt32(reader["box1"]), Convert.ToInt32(reader["box2"]), Convert.ToInt32(reader["box3"]), Convert.ToInt32(reader["box4"]), Convert.ToInt32(reader["box5"]), Convert.ToInt32(reader["box6"]), Convert.ToInt32(reader["box7"]), Convert.ToInt32(reader["box8"]), Convert.ToInt32(reader["box9"]), Convert.ToInt32(reader["box10"])); Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.MaximalBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] = sizes.Value; return(sizes.Value.Sizes[id]); } } }
private BoxSizes GetCurrentBoxContent() { BoxSizes sizes; using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser)) { sizes = new BoxSizes(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); cmd.CommandText = @"SELECT CS.box AS box, count(*) AS count FROM UserCardState CS INNER JOIN Cards C ON C.id = CS.cards_id AND C.lm_id=@lm_id WHERE CS.active = 1 AND CS.user_id = @user_id GROUP BY CS.box"; cmd.Parameters.Add("@user_id", Parent.CurrentUser.Id); cmd.Parameters.Add("@lm_id", Parent.CurrentUser.ConnectionString.LmId); SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd); while (reader.Read()) { sizes.Sizes[Convert.ToInt32(reader["box"])] = Convert.ToInt32(reader["count"]); } reader.Close(); return(sizes); } }
/// <summary> /// Gets the size of the maximal. /// </summary> /// <param name="id">The id.</param> /// <returns></returns> /// <remarks>Documented by Dev03, 2009-01-09</remarks> public int GetMaximalSize(int id) { BoxSizes?sizes = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.MaximalBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] as BoxSizes?; if (sizes.HasValue) { return(sizes.Value.Sizes[id]); } using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser)) { cmd.CommandText = "SELECT count(*) FROM UserProfilesLearningModulesSettings WHERE user_id=@uid and lm_id=@lm_id"; cmd.Parameters.Add("uid", Parent.CurrentUser.Id); cmd.Parameters.Add("lm_id", Parent.CurrentUser.ConnectionString.LmId); int settingsCount = Convert.ToInt32(cmd.ExecuteScalar()); cmd.Parameters.Clear(); cmd.CommandText = "SELECT count(*) FROM Cards WHERE id IN (SELECT cards_id FROM LearningModules_Cards WHERE lm_id=@lm_id)"; cmd.Parameters.Add("lm_id", Parent.CurrentUser.ConnectionString.LmId); int cardsCount = Convert.ToInt32(cmd.ExecuteScalar()); cmd.Parameters.Clear(); // get the default sizes cmd.CommandText = @"SELECT box1_size, box2_size, box3_size, box4_size, box5_size, box6_size, box7_size, box8_size, box9_size FROM Boxes INNER JOIN Settings ON Boxes.id = Settings.boxes INNER JOIN LearningModules ON Settings.id=LearningModules.default_settings_id WHERE LearningModules.id=@lm_id" ; cmd.Parameters.Add("@lm_id", Parent.CurrentUser.ConnectionString.LmId); SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd); reader.Read(); BoxSizes defaultSizes = new BoxSizes(cardsCount, Convert.ToInt32(reader["box1_size"]), Convert.ToInt32(reader["box2_size"]), Convert.ToInt32(reader["box3_size"]), Convert.ToInt32(reader["box4_size"]), Convert.ToInt32(reader["box5_size"]), Convert.ToInt32(reader["box6_size"]), Convert.ToInt32(reader["box7_size"]), Convert.ToInt32(reader["box8_size"]), Convert.ToInt32(reader["box9_size"]), cardsCount); reader.Close(); if (settingsCount > 0) { // get the user sizes cmd.Parameters.Clear(); cmd.CommandText = "SELECT boxes FROM Settings INNER JOIN UserProfilesLearningModulesSettings ON Settings.id=UserProfilesLearningModulesSettings.settings_id WHERE user_id=@uid and lm_id=@lm_id"; cmd.Parameters.Add("@uid", Parent.CurrentUser.Id); cmd.Parameters.Add("@lm_id", Parent.CurrentUser.ConnectionString.LmId); int boxesId = Convert.ToInt32(cmd.ExecuteScalar()); cmd.Parameters.Clear(); cmd.CommandText = @"SELECT box1_size, box2_size, box3_size, box4_size, box5_size, box6_size, box7_size, box8_size, box9_size FROM Boxes WHERE id=@bid"; cmd.Parameters.Add("@bid", boxesId); reader = MSSQLCEConn.ExecuteReader(cmd); if (reader.Read()) { sizes = new BoxSizes(cardsCount, GetUserOrDefaultSize(reader["box1_size"], defaultSizes.Sizes[1]), GetUserOrDefaultSize(reader["box2_size"], defaultSizes.Sizes[2]), GetUserOrDefaultSize(reader["box3_size"], defaultSizes.Sizes[3]), GetUserOrDefaultSize(reader["box4_size"], defaultSizes.Sizes[4]), GetUserOrDefaultSize(reader["box5_size"], defaultSizes.Sizes[5]), GetUserOrDefaultSize(reader["box6_size"], defaultSizes.Sizes[6]), GetUserOrDefaultSize(reader["box7_size"], defaultSizes.Sizes[7]), GetUserOrDefaultSize(reader["box8_size"], defaultSizes.Sizes[8]), GetUserOrDefaultSize(reader["box9_size"], defaultSizes.Sizes[9]), cardsCount); } else { sizes = defaultSizes; } reader.Close(); } else { sizes = defaultSizes; } Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.MaximalBoxSizes, Parent.CurrentUser.ConnectionString.LmId)] = sizes.Value; return(sizes.Value.Sizes[id]); } }
/// <summary> /// Creates a new user session. /// The old one will be automatically closed, in case of inconsistance data. /// </summary> /// <param name="lm_id">The lm_id.</param> /// <returns></returns> /// <remarks>Documented by Dev10, 2009-01-11</remarks> /// <remarks>Documented by Dev08, 2009-04-28</remarks> public int OpenUserSession(int lm_id) { //1. Check if the old session is closed bool previousSessionExisting = false; DateTime?endtime = null; int latestSessionId = 0; SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser); cmd.CommandText = "SELECT * FROM LearningSessions WHERE lm_id=@lmid AND user_id=@userid ORDER BY starttime DESC"; cmd.Parameters.Add("@lmid", lm_id); cmd.Parameters.Add("@userid", Parent.CurrentUser.Id); SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd); if (reader.Read()) { previousSessionExisting = true; try { latestSessionId = Convert.ToInt32(reader["id"]); endtime = Convert.ToDateTime(reader["endtime"]); } catch { endtime = null; } } //2. Close the previous session, if it hasn't closed before (maybe cause of crash of ML) if (previousSessionExisting && !endtime.HasValue) { cmd.Parameters.Clear(); cmd.CommandText = "UPDATE LearningSessions SET endtime=GETDATE() WHERE id=@id"; cmd.Parameters.Add("@id", latestSessionId); MSSQLCEConn.ExecuteNonQuery(cmd); } //3. Add new session entry to DB cmd.Parameters.Clear(); cmd.CommandText = "INSERT INTO LearningSessions (user_id, lm_id, starttime, sum_right, sum_wrong, pool_content, box1_content, box2_content, box3_content, " + "box4_content, box5_content, box6_content, box7_content, box8_content, box9_content, box10_content)" + "VALUES(@userid, @lmid, GETDATE(), 0, 0, @pool, @b1, @b2, @b3, @b4, @b5, @b6, @b7, @b8, @b9, @b10); SELECT @@IDENTITY;"; cmd.Parameters.Add("@userid", Parent.CurrentUser.Id); cmd.Parameters.Add("@lmid", lm_id); int counter = 0; int cardsInBoxes = 0; BoxSizes boxContent = GetCurrentBoxContent(); foreach (int box in boxContent.Sizes) { if (counter == 0) { cmd.Parameters.Add("@pool", box); ++counter; continue; } cmd.Parameters.Add("@b" + Convert.ToString(counter++), box); cardsInBoxes += box; } int newSessionId = MSSQLCEConn.ExecuteScalar <int>(cmd).Value; //Following Statement does add the "RunningSession" = true to the current Statistic. MsSqlCeStatisticConnector connector = MsSqlCeStatisticConnector.GetInstance(Parent); connector.RunningSession = newSessionId; return(newSessionId); }