Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

# Env files.
.env
FlashCards.Review/FlashCard.App/app.config


# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
Expand Down Expand Up @@ -480,3 +482,8 @@ $RECYCLE.BIN/
*.lnk

.idea


#temp files
FlashCards.Review/FlashCard.App/obj/
FlashCards.Review/FlashCard.App/DataBaseScripts/
49 changes: 49 additions & 0 deletions FlashCards.Review/FlashCard.App/Controller/FlashCardController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using FlashCardLearning.DataAccess;
using FlashCardLearning.Model.entities;

namespace FlashCardLearning.Controller
{
class FlashCardController
{
FlashCardDataAccess flashCardDataAccess = new();

internal void CreateFlashCard(string? question, string answer, int stackId)
{
FlashCards flashCardEntity = new();
flashCardEntity.Question = question;
flashCardEntity.Answer = answer;
flashCardEntity.StackId = stackId;

flashCardDataAccess.AddFlashCard(flashCardEntity);
}

internal bool CheckFlashCardAvailable(int flashCardId)
{
bool flashCardAvailable = flashCardDataAccess.CheckFlashCardAvailable(flashCardId);
return flashCardAvailable;
}

internal void EditFlashCard(int flashCardId, string question, string answer)
{
FlashCards flashCardEntity = new();
flashCardEntity.Id = flashCardId;
flashCardEntity.Question = question;
flashCardEntity.Answer = answer;

flashCardDataAccess.UpdateFlashCard(flashCardEntity);
}

internal void RemoveFlashCard(int flashCardId)
{
flashCardDataAccess.DeleteFlashCard(flashCardId);
}

internal List<FlashCards> ViewFlashCards(int StackId)
{
List<FlashCards> flashCards = flashCardDataAccess.SelectFlashCard(StackId);
return flashCards;
}


}
}
52 changes: 52 additions & 0 deletions FlashCards.Review/FlashCard.App/Controller/StackController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using FlashCardLearning.DataAccess;
using FlashCardLearning.Model.entities;


namespace FlashCardLearning.Controller
{
internal class StackController
{
StackDataAccess stackDataAccess = new();

internal void CreateStack(string stackName)
{
Stacks stackEntity = new();
stackEntity.StackName = stackName;

stackDataAccess.Addstack(stackEntity);
}

internal List<Stacks> ViewStack()
{
List<Stacks> stacks = stackDataAccess.Selectstack();
return stacks;
}

internal bool CheckStackAvailable(int stackId)
{
bool StackAvailable = stackDataAccess.CheckStackAvailable(stackId);
return StackAvailable;
}

internal void EditStack(int stackId, string stackName)
{
Stacks stackEntity = new();

stackEntity.Id = stackId;
stackEntity.StackName = stackName;

stackDataAccess.UpdateStack(stackEntity);
}

internal void RemoveStack(int stackId)
{
stackDataAccess.DeleteStack(stackId);

stackDataAccess.DeleteFlashCards(stackId);

stackDataAccess.DeleteSudySession(stackId);
}


}
}
41 changes: 41 additions & 0 deletions FlashCards.Review/FlashCard.App/Controller/StudyController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
using FlashCardLearning.DataAccess;
using FlashCardLearning.Model.entities;

namespace FlashCardLearning.Controller
{
internal class StudyController
{
StudyDataAccess studyDataAccess = new();
internal void TrackSession(string flashCardslist, int stackId, int durationPerSession, int totalPoints)
{
StudySession studySession = new();
studySession.FlashCardsLearned = flashCardslist;
studySession.StackId = stackId;
studySession.SessionDuration = durationPerSession;
studySession.Points = totalPoints;

studyDataAccess.AddSession(studySession);
}


internal List<StackReport> ViewReports(int year)
{
List<StackReport> report = studyDataAccess.SelectReport(year);
return report;
}

internal List<StudySessionHistory> ViewSessionLog(string? startDate, string? endDate)
{
StudySessionHistoryInput studySessionHistoryInput = new();

DateOnly startDateOnly = DateOnly.Parse(startDate);
DateOnly endDateOnly = DateOnly.Parse(endDate);

studySessionHistoryInput.SessionStartDate = startDateOnly;
studySessionHistoryInput.SessionEndDate = endDateOnly;

List<StudySessionHistory> studySessionHistories = studyDataAccess.SelectSessionLog(studySessionHistoryInput);
return studySessionHistories;
}
}
}
184 changes: 184 additions & 0 deletions FlashCards.Review/FlashCard.App/DataAccess/FlashCardDataAccess.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
using FlashCardLearning.Model.entities;
using Microsoft.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace FlashCardLearning.DataAccess
{
internal class FlashCardDataAccess
{

string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"]?.ConnectionString;

internal void AddFlashCard(FlashCards flashCardEntity)
{
string query = "INSERT INTO FlashCards (question, answer, stack_id) VALUES (@question, @answer, @stackId)";

using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();

try
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@question", SqlDbType.VarChar).Value = flashCardEntity.Question;
command.Parameters.Add("@answer", SqlDbType.VarChar).Value = flashCardEntity.Answer;
command.Parameters.Add("@stackId", SqlDbType.VarChar).Value = flashCardEntity.StackId;
command.ExecuteNonQuery();

Console.WriteLine();
Console.WriteLine($"Flash Card has been created succesfully");
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"SQL Error: {ex.Message}");
}
}
}

internal List<FlashCards> SelectFlashCard(int StackId)
{

string query = "SELECT id, question, answer FROM FlashCards WHERE stack_id = @StackId";

List<FlashCards> flashCards = new List<FlashCards>();

using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
try
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@StackId", SqlDbType.VarChar).Value = StackId;

using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
flashCards.Add(new FlashCards
{
Id = reader.GetInt32(reader.GetOrdinal("Id")),
Question = reader.GetString(reader.GetOrdinal("question")),
Answer = reader.GetString(reader.GetOrdinal("answer"))
});
}

}
}
}
catch (Exception ex)
{
Console.WriteLine($"SQL Error: {ex.Message}");
}
}
return flashCards;
}
internal bool CheckFlashCardAvailable(int flashCardId)
{
string query = "SELECT id FROM FlashCards WHERE id=@flashCardId";

bool flashCardAvailable = true;

using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
try
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@flashCardId", SqlDbType.Int).Value = flashCardId;
object? result = command.ExecuteScalar();
if (result == null)
{
flashCardAvailable = false;
}
}
}
catch (Exception ex)
{
Console.WriteLine($"SQL Error: {ex.Message}");
}
}
return flashCardAvailable;
}

internal void UpdateFlashCard(FlashCards flashCardEntity)
{
string question = "";
string answer = "";

if (flashCardEntity.Question != "" && flashCardEntity.Answer != "")
{
question = "question = @question,";
answer = " answer = @answer";

}
else if (flashCardEntity.Answer != "")
{
answer = " answer = @answer";
}
else if (flashCardEntity.Question != "")
{
question = "question = @question";
}


string query = $"UPDATE FlashCards SET {question} {answer} WHERE id = @flashCardId";

using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
try
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@flashCardId", SqlDbType.Int).Value = flashCardEntity.Id;
command.Parameters.Add("@question", SqlDbType.VarChar).Value = flashCardEntity.Question;
command.Parameters.Add("@answer", SqlDbType.VarChar).Value = flashCardEntity.Answer;
command.ExecuteNonQuery();

Console.WriteLine();
Console.WriteLine($"Flash Card updated successfully");
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"SQL Error: {ex.Message}");
}
}
}

internal void DeleteFlashCard(int flashCardId)
{
string query = "DELETE FROM FlashCards WHERE id = @flashCardId";

using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
try
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@flashCardId", SqlDbType.Int).Value = flashCardId;
command.ExecuteNonQuery();

Console.WriteLine();
Console.WriteLine($"Flash Card deleted successfully");
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"SQL Error: {ex.Message}");
}
}
}
}

}

Loading