public void CheckAchievementDominating() { IAchievementGainer _dominate = new DominatingGain(); NpgsqlConnection connection = new NpgsqlConnection(_connstring); connection.Open(); User popo = User.NewUser("Popo"); IHabitRepository habitRepo = new PostgresHabitRepository(connection, null); IBadgeRepository badgeRepo = new PostgresBadgeRepository(connection, null); Habit belajar = Habit.addNewHabit(popo.ID, "Belajar", new string[] { "Sat", "Mon" }); habitRepo.Create(belajar); Habit olahraga = Habit.addNewHabit(popo.ID, "Olahraga", new string[] { "Mon" }); habitRepo.Create(olahraga); List <Habit> habitList = new List <Habit>(); habitList.Add(belajar); habitList.Add(olahraga); AbcApplication daily = new HabitTracker(habitList); ILogsRepository repoLogs = new PostgresLogsRepository(connection, null); Track track; track = new HabitTrack(belajar, popo.ID, new DateTime(2020, 3, 1)); daily.Do(track); repoLogs.AddLogs(track); track = new HabitTrack(belajar, popo.ID, new DateTime(2020, 3, 2)); daily.Do(track); repoLogs.AddLogs(track); track = new HabitTrack(belajar, popo.ID, new DateTime(2020, 3, 3)); daily.Do(track); repoLogs.AddLogs(track); track = new HabitTrack(belajar, popo.ID, new DateTime(2020, 3, 4)); daily.Do(track); repoLogs.AddLogs(track); Habit founded_habit = habitRepo.FindByIdAndUserId(belajar.ID, popo.ID); int listSize = founded_habit.Log.GetLogDate.Count; Assert.True(founded_habit.isDominating() == true); if (founded_habit.isDominating()) { badgeRepo.CreateBadge(_dominate.GainAchievement(popo.ID), founded_habit.Log.GetLogDate[listSize - 1]); } connection.Close(); }
public void AddLogs(Track habitTrack) { HabitTrack ht = habitTrack as HabitTrack; if (ht == null) { throw new Exception("Tracking is null"); } string query = @"insert into ""logs"" (id, habit_id, user_id, created_at) values(@id, @habit_id, @user_id, @created_at)"; using (var cmd = new NpgsqlCommand(query, _connection, _transaction)) { cmd.Parameters.AddWithValue("id", Guid.NewGuid()); cmd.Parameters.AddWithValue("habit_id", ht.Todo.ID); cmd.Parameters.AddWithValue("user_id", ht.Person); cmd.Parameters.AddWithValue("created_at", ht.Date); cmd.ExecuteNonQuery(); } }