From 74e467d41e7234bc806e9ba30c6766791601ec6b Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Sat, 16 Apr 2022 19:13:02 +0200 Subject: Izmenjeni predictor i predictor servis. Poruka se salje korisniku po zavrsetku treniranja sa id prediktora. --- backend/api/api/Controllers/PredictorController.cs | 76 ++++++++++++---------- backend/api/api/Models/Predictor.cs | 13 +++- backend/api/api/Services/IPredictorService.cs | 23 +++---- backend/api/api/Services/MlConnectionService.cs | 6 +- backend/api/api/Services/PredictorService.cs | 16 ++--- 5 files changed, 69 insertions(+), 65 deletions(-) diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index 87c32048..481334e9 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Net.Http.Headers; using System.Net.Http.Headers; using System.Diagnostics; +using Microsoft.AspNetCore.SignalR; namespace api.Controllers { @@ -16,13 +17,19 @@ namespace api.Controllers private IJwtToken jwtToken; private readonly IMlConnectionService _mlConnectionService; private readonly IExperimentService _experimentService; + private readonly IUserService _userService; + private readonly IHubContext _ichat; + private readonly IModelService _modelService; - public PredictorController(IPredictorService predictorService, IConfiguration configuration, IJwtToken Token, IMlConnectionService mlConnectionService, IExperimentService experimentService) + public PredictorController(IPredictorService predictorService, IConfiguration configuration, IJwtToken Token, IMlConnectionService mlConnectionService, IExperimentService experimentService,IUserService userService, IHubContext ichat,IModelService modelService) { _predictorService = predictorService; jwtToken = Token; _mlConnectionService = mlConnectionService; _experimentService = experimentService; + _userService = userService; + _ichat = ichat; + _modelService = modelService; } public string getUsername() @@ -65,17 +72,18 @@ namespace api.Controllers //SEARCH za predictore (public ili private sa ovim imenom ) // GET api//search/{name} - [HttpGet("search/{name}")] - [Authorize(Roles = "User")] - public ActionResult> Search(string name) - { - string username = getUsername(); + + //[HttpGet("search/{name}")] + //[Authorize(Roles = "User")] + //public ActionResult> Search(string name) + //{ + // string username = getUsername(); - if (username == null) - return BadRequest(); + // if (username == null) + // return BadRequest(); - return _predictorService.SearchPredictors(name, username); - } + // return _predictorService.SearchPredictors(name, username); + //} // GET api//getpredictor/{name} [HttpGet("getpredictor/{id}")] @@ -98,17 +106,17 @@ namespace api.Controllers // GET api//{name} [HttpGet("{name}")] [Authorize(Roles = "User")] - public ActionResult Get(string name) + public ActionResult Get(string id) { string username = getUsername(); if (username == null) return BadRequest(); - var predictor = _predictorService.GetOnePredictor(username, name); + var predictor = _predictorService.GetOnePredictor(id); if (predictor == null) - return NotFound($"Predictor with name = {name} not found or predictor is not public"); + return NotFound($"Predictor with id = {id} not found or predictor is not public"); return predictor; } @@ -144,19 +152,17 @@ namespace api.Controllers // POST api//add [HttpPost("add")] - [Authorize(Roles = "User")] - public ActionResult Post([FromBody] Predictor predictor) + public async Task> Post([FromBody] Predictor predictor) { - var existingPredictor = _predictorService.GetOnePredictor(predictor.username, predictor.name); - - if (existingPredictor != null) - return NotFound($"Predictor with name = {predictor.name} exisits"); - else - { - _predictorService.Create(predictor); - - return CreatedAtAction(nameof(Get), new { id = predictor._id }, predictor); - } + var user=_userService.GetUserByUsername(predictor.username); + var model = _modelService.GetOneModel(predictor.modelId); + if (model == null || user==null) + return BadRequest("Model not found or user doesnt exist"); + _predictorService.Create(predictor); + if (ChatHub.CheckUser(user._id)) + await _ichat.Clients.Client(ChatHub.Users[user._id]).SendAsync("NotifyPredictor", predictor._id,model.name); + return CreatedAtAction(nameof(Get), new { id = predictor._id }, predictor); + } // POST api//usepredictor {predictor,inputs} @@ -186,42 +192,42 @@ namespace api.Controllers // PUT api//{name} [HttpPut("{name}")] [Authorize(Roles = "User")] - public ActionResult Put(string name, [FromBody] Predictor predictor) + public ActionResult Put(string id, [FromBody] Predictor predictor) { string username = getUsername(); if (username == null) return BadRequest(); - var existingPredictor = _predictorService.GetOnePredictor(username, name); + var existingPredictor = _predictorService.GetOnePredictor(id); //ne mora da se proverava if (existingPredictor == null) - return NotFound($"Predictor with name = {name} or user with username = {username} not found"); + return NotFound($"Predictor with id = {id} or user with username = {username} not found"); - _predictorService.Update(username, name, predictor); + _predictorService.Update(id, predictor); - return Ok($"Predictor with name = {name} updated"); + return Ok($"Predictor with id = {id} updated"); } // DELETE api//name [HttpDelete("{name}")] [Authorize(Roles = "User")] - public ActionResult Delete(string name) + public ActionResult Delete(string id) { string username = getUsername(); if (username == null) return BadRequest(); - var predictor = _predictorService.GetOnePredictor(username, name); + var predictor = _predictorService.GetOnePredictor(id); if (predictor == null) - return NotFound($"Predictor with name = {name} or user with username = {username} not found"); + return NotFound($"Predictor with id = {id} or user with username = {username} not found"); - _predictorService.Delete(predictor.username, predictor.name); + _predictorService.Delete(id); - return Ok($"Predictor with name = {name} deleted"); + return Ok($"Predictor with id = {id} deleted"); } } diff --git a/backend/api/api/Models/Predictor.cs b/backend/api/api/Models/Predictor.cs index 3f9889be..26371d2a 100644 --- a/backend/api/api/Models/Predictor.cs +++ b/backend/api/api/Models/Predictor.cs @@ -10,17 +10,26 @@ namespace api.Models [BsonRepresentation(BsonType.ObjectId)]//mongo data type to .net public string _id { get; set; } public string username { get; set; } - public string name { get; set; } - public string description { get; set; } + //public string name { get; set; } + //public string description { get; set; } public string[] inputs { get; set; } public string output { get; set; } public bool isPublic { get; set; } public bool accessibleByLink { get; set; } public DateTime dateCreated { get; set; } public string experimentId { get; set; } + public string modelId { get; set; } public string h5FileId { get; set; } + public Metric[] metrics { get; set; } + } + public class Metric + { + string Name { get; set; } + string JsonValue { get; set; } + + } } /* diff --git a/backend/api/api/Services/IPredictorService.cs b/backend/api/api/Services/IPredictorService.cs index 729dd0b6..7c31215e 100644 --- a/backend/api/api/Services/IPredictorService.cs +++ b/backend/api/api/Services/IPredictorService.cs @@ -1,19 +1,16 @@ -using System; -using api.Models; +using api.Models; namespace api.Services { - public interface IPredictorService - { - Predictor GetOnePredictor(string username, string name); - Predictor GetPredictor(string username, string GetPredictor); - List SearchPredictors(string name, string username); + public interface IPredictorService + { + Predictor Create(Predictor predictor); + void Delete(string id); List GetMyPredictors(string username); - List SortPredictors(string username, bool ascdsc, int latest); + Predictor GetOnePredictor(string id); + Predictor GetPredictor(string username, string id); List GetPublicPredictors(); - Predictor Create(Predictor predictor); - void Update(string username, string name, Predictor predictor); - void Delete(string username, string name); + List SortPredictors(string username, bool ascdsc, int latest); + void Update(string id, Predictor predictor); } -} - +} \ No newline at end of file diff --git a/backend/api/api/Services/MlConnectionService.cs b/backend/api/api/Services/MlConnectionService.cs index 4363b4ad..22db0aea 100644 --- a/backend/api/api/Services/MlConnectionService.cs +++ b/backend/api/api/Services/MlConnectionService.cs @@ -43,11 +43,7 @@ namespace api.Services //request.AddFile("file", file,filename); request.AddFile("file", filePath); request.AddHeader("Content-Type", "multipart/form-data"); - var result = await this.client.ExecuteAsync(request); - - if (ChatHub.CheckUser(id)) - await _ichat.Clients.Client(ChatHub.Users[id]).SendAsync("NotifyModel",model.name,model._id); - + this.client.ExecuteAsync(request); return; } diff --git a/backend/api/api/Services/PredictorService.cs b/backend/api/api/Services/PredictorService.cs index b89eaded..144248d4 100644 --- a/backend/api/api/Services/PredictorService.cs +++ b/backend/api/api/Services/PredictorService.cs @@ -14,10 +14,6 @@ namespace api.Services _predictor = database.GetCollection(settings.PredictorCollectionName); } - public List SearchPredictors(string name, string username) - { - return _predictor.Find(predictor => predictor.name == name && predictor.isPublic == true).ToList(); - } public Predictor Create(Predictor predictor) { @@ -25,9 +21,9 @@ namespace api.Services return predictor; } - public void Delete(string username, string name) + public void Delete(string id) { - _predictor.DeleteOne(predictor => (predictor.username == username && predictor.name == name)); + _predictor.DeleteOne(predictor => (predictor._id == id)); } public List GetMyPredictors(string username) @@ -35,9 +31,9 @@ namespace api.Services return _predictor.Find(predictor => predictor.username == username).ToList(); } - public Predictor GetOnePredictor(string username, string name) + public Predictor GetOnePredictor(string id) { - return _predictor.Find(predictor => predictor.username == username && predictor.name == name).FirstOrDefault(); + return _predictor.Find(predictor => predictor._id == id).FirstOrDefault(); } public Predictor GetPredictor(string username, string id) @@ -62,9 +58,9 @@ namespace api.Services return _predictor.Find(predictor => predictor.isPublic == true).ToList(); } - public void Update(string username, string name, Predictor predictor) + public void Update(string id, Predictor predictor) { - _predictor.ReplaceOne(predictor => predictor.username == username && predictor.name == name, predictor); + _predictor.ReplaceOne(predictor => predictor._id == id, predictor); } } } -- cgit v1.2.3