commit a136bd42d9e2fb95b289260170a121b8e8b242e7
parent 46a5d21105a6654b2b88414e41437141ae5a6291
Author: William Lindholm <william_lindholm@outlook.com>
Date: Sat, 14 Oct 2023 19:51:26 +0200
Implemented inserts into database through reusable function.
Diffstat:
3 files changed, 78 insertions(+), 7 deletions(-)
diff --git a/MVC-databaskonstruktion/Controllers/AgentsController.cs b/MVC-databaskonstruktion/Controllers/AgentsController.cs
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Mvc;
using MVC_databaskonstruktion.Models;
+using MVC_databaskonstruktion.Utils;
using MySql.Data.MySqlClient;
using System.Diagnostics;
@@ -25,18 +26,41 @@ namespace MVC_databaskonstruktion.Controllers
}
public IActionResult Create(
- string CodeName,
- string FirstName,
- string LastName,
- int Salary,
- bool IsFieldAgent,
- bool IsGroupLeader,
- bool IsManager)
+ string CodeName,
+ string FirstName,
+ string LastName,
+ decimal Salary,
+ bool IsFieldAgent,
+ bool IsGroupLeader,
+ bool IsManager)
{
Trace.WriteLine("Running function: Create new Agent." +
"Received parameters: " +
CodeName + FirstName + LastName + Salary + IsFieldAgent + IsGroupLeader + IsManager);
+ try
+ {
+ _agentsModel.CreateAgent(CodeName, FirstName, LastName, Salary, IsFieldAgent, IsGroupLeader, IsManager);
+ }
+ catch (MySqlException e)
+ {
+ switch (e.Number)
+ {
+ case 1062:
+ TempData["ErrorMessage"] = "CodeName already exists!";
+ break;
+ case 1406:
+ TempData["ErrorMessage"] = "Data too long!";
+ break;
+ case 3819:
+ TempData["ErrorMessage"] = "Invalid Data!";
+ break;
+ default:
+ TempData["ErrorMessage"] = $"Something went wrong: {e.Number}";
+ break;
+ }
+ }
+
return RedirectToAction("Index");
}
@@ -67,6 +91,7 @@ namespace MVC_databaskonstruktion.Controllers
break;
}
}
+
return RedirectToAction("Index");
}
diff --git a/MVC-databaskonstruktion/Models/AgentsModel.cs b/MVC-databaskonstruktion/Models/AgentsModel.cs
@@ -18,6 +18,29 @@ namespace MVC_databaskonstruktion.Models
.SetDeleteTable("Agent");
}
+ public void CreateAgent(
+ string CodeName,
+ string FirstName,
+ string LastName,
+ decimal Salary,
+ bool IsFieldAgent,
+ bool IsGroupLeader,
+ bool IsManager)
+ {
+ var agentData = new List<KeyValuePair<string, object>>
+ {
+ new KeyValuePair<string, object>("CodeName", CodeName),
+ new KeyValuePair<string, object>("FirstName", FirstName),
+ new KeyValuePair<string, object>("LastName", LastName),
+ new KeyValuePair<string, object>("Salary", Salary),
+ new KeyValuePair<string, object>("IsFieldAgent", IsFieldAgent),
+ new KeyValuePair<string, object>("IsGroupLeader", IsGroupLeader),
+ new KeyValuePair<string, object>("IsManager", IsManager)
+ };
+
+ _databaseRepository.CreateRow("Agent", agentData);
+ }
+
public void DeleteAgent(string table, string CodeName)
{
List<KeyValuePair<string, string>> conditions = new List<KeyValuePair<string, string>>
diff --git a/MVC-databaskonstruktion/Utils/DatabaseRepository.cs b/MVC-databaskonstruktion/Utils/DatabaseRepository.cs
@@ -29,6 +29,29 @@ namespace MVC_databaskonstruktion.Utils
}
}
+ public void CreateRow(string table, List<KeyValuePair<string, object>> data)
+ {
+ if (string.IsNullOrEmpty(table) || data == null || data.Count == 0)
+ {
+ throw new ArgumentException("Invalid table name or data to insert.");
+ }
+
+ using MySqlConnection dbcon = new MySqlConnection(_connectionString);
+ dbcon.Open();
+
+ string columns = string.Join(", ", data.Select(d => d.Key));
+ string values = string.Join(", ", data.Select(d => $"@{d.Key}"));
+ string query = $"INSERT INTO {table} ({columns}) VALUES ({values});";
+
+ using MySqlCommand cmd = new MySqlCommand(query, dbcon);
+ foreach (var item in data)
+ {
+ cmd.Parameters.AddWithValue($"@{item.Key}", item.Value);
+ }
+
+ cmd.ExecuteNonQuery();
+ }
+
public void DeleteRow(string table, List<KeyValuePair<string, string>> primaryKeys)
{
string whereClause = "WHERE ";