From 2ca55fc8c9879a2d06e364ee3c88a9cfffa6f299 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Sun, 27 Mar 2022 16:52:49 +0200 Subject: Gost vidi public datasetove uploadera Igrannonica kao i temp datasetove na stranici add-model. --- backend/api/api/Controllers/DatasetController.cs | 5 ++++- backend/api/api/Services/DatasetService.cs | 7 +++++++ backend/api/api/Services/IDatasetService.cs | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'backend/api') diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs index bae05ba9..d9803744 100644 --- a/backend/api/api/Controllers/DatasetController.cs +++ b/backend/api/api/Controllers/DatasetController.cs @@ -24,7 +24,7 @@ namespace api.Controllers // GET: api//mydatasets [HttpGet("mydatasets")] - [Authorize(Roles = "User")] + [Authorize(Roles = "User,Guest")] public ActionResult> Get() { string username; @@ -39,6 +39,9 @@ namespace api.Controllers } else return BadRequest(); + //U slucaju da je korisnik gost vrati dataSetove igrannonice + if (username == "") + return _datasetService.GetGuestDatasets(); //ako bude trebao ID, samo iz baze uzeti diff --git a/backend/api/api/Services/DatasetService.cs b/backend/api/api/Services/DatasetService.cs index 5e708d11..ab19935d 100644 --- a/backend/api/api/Services/DatasetService.cs +++ b/backend/api/api/Services/DatasetService.cs @@ -36,6 +36,13 @@ namespace api.Services { return _dataset.Find(dataset => dataset.username == username).ToList(); } + public List GetGuestDatasets() + { + //Join Igranonica public datasetove sa svim temp uploadanim datasetovima + List datasets= _dataset.Find(dataset => dataset.username == "Igrannonica" && dataset.isPublic == true).ToList(); + datasets.AddRange(_dataset.Find(dataset => dataset.username == "").ToList()); + return datasets; + } //poslednji datasetovi public List SortDatasets(string username, bool ascdsc, int latest) diff --git a/backend/api/api/Services/IDatasetService.cs b/backend/api/api/Services/IDatasetService.cs index be56f5cb..9beec400 100644 --- a/backend/api/api/Services/IDatasetService.cs +++ b/backend/api/api/Services/IDatasetService.cs @@ -13,5 +13,6 @@ namespace api.Services Dataset Create(Dataset dataset); void Update(string username, string name, Dataset dataset); void Delete(string username, string name); + public List GetGuestDatasets(); } } -- cgit v1.2.3 From 28e3d25b5d4756361b464e8ca34fbc986fc0e75f Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Tue, 29 Mar 2022 17:10:29 +0200 Subject: Kada korisnik menja username dodata provera da li taj username vec postoji u bazi.Prilikom menjanja username-a updajtaju se sve ostale tabele koje sadrze stari username novim username-om korisnika.Vraca povratnu informaciju da li je operacija uspesna. Dodati mehanizmi za transakcije.(Unkomentarisati ih kada se dozvoli da baza podrzava transakcije). --- backend/api/api/Controllers/UserController.cs | 3 +- backend/api/api/Services/IUserService.cs | 2 +- backend/api/api/Services/UserService.cs | 51 +++++++++++++++++++++++++-- 3 files changed, 51 insertions(+), 5 deletions(-) (limited to 'backend/api') diff --git a/backend/api/api/Controllers/UserController.cs b/backend/api/api/Controllers/UserController.cs index 0287f3cb..741382b8 100644 --- a/backend/api/api/Controllers/UserController.cs +++ b/backend/api/api/Controllers/UserController.cs @@ -135,8 +135,7 @@ namespace api.Controllers else return BadRequest(); - userService.Update(username, user); - return NoContent(); + return Ok(userService.Update(username, user)); } // DELETE api//5 diff --git a/backend/api/api/Services/IUserService.cs b/backend/api/api/Services/IUserService.cs index 1cb6a609..e4a23213 100644 --- a/backend/api/api/Services/IUserService.cs +++ b/backend/api/api/Services/IUserService.cs @@ -8,7 +8,7 @@ namespace api.Services List Get();// daje sve korisnike User GetUserUsername(string username); //daje korisnika po korisnickom imenu User Create(User user); // kreira korisnika - void Update(string username, User user); //apdejtuje korisnika po idu + bool Update(string username, User user); //apdejtuje korisnika po idu void Delete(string username);//brise korisnika } } diff --git a/backend/api/api/Services/UserService.cs b/backend/api/api/Services/UserService.cs index f613f923..607bb04b 100644 --- a/backend/api/api/Services/UserService.cs +++ b/backend/api/api/Services/UserService.cs @@ -7,11 +7,22 @@ namespace api.Services public class UserService : IUserService { private readonly IMongoCollection _users; + private readonly IMongoClient _client; + private readonly IMongoCollection _models; + private readonly IMongoCollection _datasets; + private readonly IMongoCollection _fileModels; + private readonly IMongoCollection _predictors; + public UserService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient) { var database = mongoClient.GetDatabase(settings.DatabaseName); _users = database.GetCollection(settings.CollectionName); + _models = database.GetCollection(settings.ModelCollectionName); + _datasets= database.GetCollection(settings.DatasetCollectionName); + _fileModels = database.GetCollection(settings.FilesCollectionName); + _predictors= database.GetCollection(settings.PredictorCollectionName); + _client = mongoClient; } public User Create(User user) { @@ -26,10 +37,46 @@ namespace api.Services { return _users.Find(user => user.Username == username).FirstOrDefault(); } - public void Update(string username, User user) + public bool Update(string username, User user) { //username koji postoji u bazi - _users.ReplaceOne(user => user.Username == username, user); + using (var session = _client.StartSession()) + { + + if(_users.Find(u => u.Username == user.Username).FirstOrDefault()!=null) + { + return false; + } + + //Trenutan MongoDB Server ne podrzava transakcije.Omoguciti Podrsku + //session.StartTransaction(); + try + { + _users.ReplaceOne(user => user.Username == username, user); + if (username != user.Username) + { + var builderModel = Builders.Update; + var builderDataset = Builders.Update; + var builderFileModel = Builders.Update; + var builderPredictor = Builders.Update; + _models.UpdateMany(x => x.username == username, builderModel.Set(x => x.username, user.Username)); + _datasets.UpdateMany(x => x.username == username, builderDataset.Set(x => x.username, user.Username)); + _fileModels.UpdateMany(x => x.username == username, builderFileModel.Set(x => x.username, user.Username)); + _predictors.UpdateMany(x => x.username == username, builderPredictor.Set(x => x.username, user.Username)); + } + + //session.AbortTransaction(); + + + //session.CommitTransaction(); + } + catch (Exception e) + { + //session.AbortTransaction(); + return false; + } + return true; + } } public void Delete(string username) { -- cgit v1.2.3