aboutsummaryrefslogtreecommitdiff
path: root/Backend/Api
diff options
context:
space:
mode:
authorJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-10-27 02:40:28 +0200
committerJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-10-27 02:40:28 +0200
commit9f4a1d3f03848a86c12b0f758b525ff62e76e680 (patch)
tree33612585716f0978b7369c3e8f913c0af4130bb4 /Backend/Api
parent426dcd9403192b7e7f40ad01bafb57f7e4f9071f (diff)
dodat model i servis za korisnike, sa osnovnim operacijama #5
Diffstat (limited to 'Backend/Api')
-rw-r--r--Backend/Api/Api/Api.csproj2
-rw-r--r--Backend/Api/Api/Database/DatabaseConnection.cs1
-rw-r--r--Backend/Api/Api/Interfaces/IDatabaseConnection.cs1
-rw-r--r--Backend/Api/Api/Interfaces/IUserService.cs14
-rw-r--r--Backend/Api/Api/Models/User.cs17
-rw-r--r--Backend/Api/Api/Program.cs3
-rw-r--r--Backend/Api/Api/Services/UserService.cs58
-rw-r--r--Backend/Api/Api/appsettings.json3
8 files changed, 96 insertions, 3 deletions
diff --git a/Backend/Api/Api/Api.csproj b/Backend/Api/Api/Api.csproj
index f8d2732..eeacb93 100644
--- a/Backend/Api/Api/Api.csproj
+++ b/Backend/Api/Api/Api.csproj
@@ -13,8 +13,6 @@
<ItemGroup>
<Folder Include="Controllers\" />
- <Folder Include="Models\" />
- <Folder Include="Services\" />
</ItemGroup>
</Project>
diff --git a/Backend/Api/Api/Database/DatabaseConnection.cs b/Backend/Api/Api/Database/DatabaseConnection.cs
index 560eaee..65f4f52 100644
--- a/Backend/Api/Api/Database/DatabaseConnection.cs
+++ b/Backend/Api/Api/Database/DatabaseConnection.cs
@@ -6,5 +6,6 @@ namespace Api.Database
{
public string ConnectionString { get; set; } = String.Empty;
public string DatabaseName { get; set; } = String.Empty;
+ public string UserCollectionName { get; set; } = String.Empty;
}
}
diff --git a/Backend/Api/Api/Interfaces/IDatabaseConnection.cs b/Backend/Api/Api/Interfaces/IDatabaseConnection.cs
index ca5e320..8938127 100644
--- a/Backend/Api/Api/Interfaces/IDatabaseConnection.cs
+++ b/Backend/Api/Api/Interfaces/IDatabaseConnection.cs
@@ -4,5 +4,6 @@
{
string ConnectionString { get; set; }
string DatabaseName { get; set; }
+ string UserCollectionName { get; set; }
}
}
diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs
new file mode 100644
index 0000000..6de648e
--- /dev/null
+++ b/Backend/Api/Api/Interfaces/IUserService.cs
@@ -0,0 +1,14 @@
+using Api.Models;
+
+namespace Api.Interfaces
+{
+ public interface IUserService
+ {
+ User createUser(User user);
+ List<User> getUsers();
+ User getUserByEmail(String email);
+ User getUserByUsername(String username);
+ User updateUser(User user);
+ Boolean deleteUser(String email);
+ }
+}
diff --git a/Backend/Api/Api/Models/User.cs b/Backend/Api/Api/Models/User.cs
new file mode 100644
index 0000000..eb7d1e8
--- /dev/null
+++ b/Backend/Api/Api/Models/User.cs
@@ -0,0 +1,17 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+
+namespace Api.Models
+{
+ public class User
+ {
+ [BsonId]
+ [BsonRepresentation(BsonType.ObjectId)]
+ public String _id { get; set; }
+ public String name { get; set; }
+ public String username { get; set; }
+ public String email { get; set; }
+ public String password { get; set; }
+ public DateTime creationDate { get; set; }
+ }
+}
diff --git a/Backend/Api/Api/Program.cs b/Backend/Api/Api/Program.cs
index 2dfd84d..7ae8798 100644
--- a/Backend/Api/Api/Program.cs
+++ b/Backend/Api/Api/Program.cs
@@ -1,5 +1,6 @@
using Api.Database;
using Api.Interfaces;
+using Api.Services;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
@@ -16,6 +17,8 @@ builder.Services.AddSingleton<IDatabaseConnection>(sp =>
builder.Services.AddSingleton<IMongoClient>(s =>
new MongoClient(builder.Configuration.GetValue<string>("DatabaseSettings:ConnectionString")));
+builder.Services.AddScoped<IUserService, UserService>();
+
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs
new file mode 100644
index 0000000..787cf6a
--- /dev/null
+++ b/Backend/Api/Api/Services/UserService.cs
@@ -0,0 +1,58 @@
+using Api.Interfaces;
+using Api.Models;
+using MongoDB.Driver;
+
+namespace Api.Services
+{
+ public class UserService : IUserService
+ {
+ private readonly IMongoCollection<User> _users;
+ public UserService(IDatabaseConnection settings, IMongoClient mongoClient)
+ {
+ var database = mongoClient.GetDatabase(settings.DatabaseName);
+ _users = database.GetCollection<User>(settings.UserCollectionName);
+
+ }
+
+ public User createUser(User user)
+ {
+ _users.InsertOne(user);
+ return user;
+ }
+
+ public bool deleteUser(string email)
+ {
+ _users.FindOneAndDelete(x => x.email == email);
+ return true;
+ }
+
+ public User getUserByEmail(string email)
+ {
+ return _users.Find(x => x.email == email).First();
+ }
+
+ public User getUserByUsername(string username)
+ {
+ return _users.Find(x => x.username == username).First();
+ }
+
+ public List<User> getUsers()
+ {
+ return _users.Find(_=>true).ToList();
+ }
+
+ public User updateUser(User user)
+ {
+ /*
+ * ovako je odradjeno da bi radilo i kada se posalje potpuno novi objekat User-a bez generisanog _id polja
+ */
+ User foundUser = _users.Find(x => x.email == user.email).First();
+ if (foundUser!=null && user._id==null)
+ {
+ user._id = foundUser._id;
+ }
+ _users.ReplaceOne(x => x.email == user.email, user);
+ return user;
+ }
+ }
+}
diff --git a/Backend/Api/Api/appsettings.json b/Backend/Api/Api/appsettings.json
index c2cbe28..e02ac8d 100644
--- a/Backend/Api/Api/appsettings.json
+++ b/Backend/Api/Api/appsettings.json
@@ -9,7 +9,8 @@
"DatabaseSettings": {
"ConnectionString": "mongodb://127.0.0.1:27017/",
- "DatabaseName": "Odyssey"
+ "DatabaseName": "Odyssey",
+ "UserCollectionName": "users"
}
}