seperated create from update
This commit is contained in:
parent
a66d547291
commit
09a8eee138
|
@ -4,7 +4,6 @@ using InnovEnergy.App.Backend.Database;
|
||||||
using InnovEnergy.App.Backend.Model;
|
using InnovEnergy.App.Backend.Model;
|
||||||
using InnovEnergy.App.Backend.Model.Relations;
|
using InnovEnergy.App.Backend.Model.Relations;
|
||||||
using InnovEnergy.App.Backend.Utils;
|
using InnovEnergy.App.Backend.Utils;
|
||||||
using InnovEnergy.Lib.Utils;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using HttpContextAccessor = Microsoft.AspNetCore.Http.HttpContextAccessor;
|
using HttpContextAccessor = Microsoft.AspNetCore.Http.HttpContextAccessor;
|
||||||
|
|
||||||
|
@ -227,23 +226,68 @@ public class Controller
|
||||||
|
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Returns(HttpStatusCode.OK)]
|
||||||
|
[Returns(HttpStatusCode.Unauthorized)]
|
||||||
|
[HttpPost($"{nameof(CreateUser)}/")]
|
||||||
|
public Object CreateUser(User newUser)
|
||||||
|
{
|
||||||
|
var caller = GetCaller();
|
||||||
|
using var db = Db.Connect();
|
||||||
|
if (caller == null || !caller.HasWriteAccess)
|
||||||
|
return new HttpResponseMessage(HttpStatusCode.Unauthorized);
|
||||||
|
|
||||||
|
newUser.ParentId = caller.Id;
|
||||||
|
|
||||||
|
return db.CreateUser(newUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Returns(HttpStatusCode.OK)]
|
||||||
|
[Returns(HttpStatusCode.Unauthorized)]
|
||||||
|
[HttpPost($"{nameof(CreateInstallation)}/")]
|
||||||
|
public Object CreateInstallation(Installation installation)
|
||||||
|
{
|
||||||
|
var caller = GetCaller();
|
||||||
|
using var db = Db.Connect();
|
||||||
|
if (caller == null || !caller.HasWriteAccess)
|
||||||
|
return new HttpResponseMessage(HttpStatusCode.Unauthorized);
|
||||||
|
|
||||||
|
db.CreateInstallation(installation);
|
||||||
|
if (db.GetInstallationById(1)!.Name != installation.Name)
|
||||||
|
{
|
||||||
|
return new HttpResponseMessage(HttpStatusCode.BadRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
return db.AddToAccessibleInstallations(caller.Id, 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Returns(HttpStatusCode.OK)]
|
||||||
|
[Returns(HttpStatusCode.Unauthorized)]
|
||||||
|
[HttpPost($"{nameof(CreateFolder)}/")]
|
||||||
|
public Object CreateFolder(Folder folder)
|
||||||
|
{
|
||||||
|
var caller = GetCaller();
|
||||||
|
using var db = Db.Connect();
|
||||||
|
if (caller == null || !caller.HasWriteAccess || db.GetInstallationByName(folder.Name) != null)
|
||||||
|
return new HttpResponseMessage(HttpStatusCode.Unauthorized);
|
||||||
|
|
||||||
|
db.CreateFolder(folder);
|
||||||
|
return db.AddToAccessibleInstallations(caller.Id, db.GetInstallationByName(folder.Name)!.Id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
[Returns(HttpStatusCode.OK)]
|
[Returns(HttpStatusCode.OK)]
|
||||||
[Returns(HttpStatusCode.Unauthorized)]
|
[Returns(HttpStatusCode.Unauthorized)]
|
||||||
[HttpPut($"{nameof(UpdateUser)}/")]
|
[HttpPut($"{nameof(UpdateUser)}/")]
|
||||||
public Object UpdateUser(User updatedUser)
|
public Object UpdateUser(User updatedUser)
|
||||||
{
|
{
|
||||||
// TODO: distinguish between create and update
|
|
||||||
|
|
||||||
var caller = GetCaller();
|
var caller = GetCaller();
|
||||||
using var db = Db.Connect();
|
using var db = Db.Connect();
|
||||||
if (caller == null || !db.IsParentOfChild(caller.Id, updatedUser))
|
if (caller == null || !db.IsParentOfChild(caller.Id, updatedUser) || !caller.HasWriteAccess)
|
||||||
return new HttpResponseMessage(HttpStatusCode.Unauthorized);
|
return new HttpResponseMessage(HttpStatusCode.Unauthorized);
|
||||||
|
|
||||||
return db.GetUserById(updatedUser.Id) != null
|
return db.UpdateUser(updatedUser);
|
||||||
? db.UpdateUser(updatedUser)
|
|
||||||
: db.CreateUser(updatedUser);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -213,8 +213,7 @@ public partial class Db : IDisposable
|
||||||
public Object? GetInstallationS3Key(Int64 installationId)
|
public Object? GetInstallationS3Key(Int64 installationId)
|
||||||
{
|
{
|
||||||
return Installations
|
return Installations
|
||||||
.Where(installation => installation.Id == installationId)
|
.FirstOrDefault(installation => installation.Id == installationId).S3Key;
|
||||||
.Select(installation => installation.S3Key);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteS3KeysDaily()
|
public void DeleteS3KeysDaily()
|
||||||
|
@ -225,5 +224,16 @@ public partial class Db : IDisposable
|
||||||
Update(installation);
|
Update(installation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Installation? GetInstallationByName(String installationName)
|
||||||
|
{
|
||||||
|
return Installations
|
||||||
|
.FirstOrDefault(installation => installation.Name == installationName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Int64 LastInsertRowId()
|
||||||
|
{
|
||||||
|
return _Db.;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ public partial class Db
|
||||||
|
|
||||||
return Delete(installation);
|
return Delete(installation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ public partial class Db
|
||||||
|
|
||||||
public User? GetUserByEmail(String email) => Users.FirstOrDefault(u => u.Email == email);
|
public User? GetUserByEmail(String email) => Users.FirstOrDefault(u => u.Email == email);
|
||||||
|
|
||||||
public Result CreateUser(User user)
|
public Object CreateUser(User user)
|
||||||
{
|
{
|
||||||
if (GetUserByEmail(user.Email) is not null)
|
if (GetUserByEmail(user.Email) is not null)
|
||||||
return Result.Error("User with that email already exists");
|
return Result.Error("User with that email already exists");
|
||||||
|
|
Loading…
Reference in New Issue