Project Details Page + Employees
This commit is contained in:
parent
910ed8b8f8
commit
de2c369350
@ -90,7 +90,7 @@
|
|||||||
[Parameter] public EventCallback<ProjectCreateDto> OnProjectCreated { get; set; }
|
[Parameter] public EventCallback<ProjectCreateDto> OnProjectCreated { get; set; }
|
||||||
[Parameter] public string SearchText { get; set; } = "";
|
[Parameter] public string SearchText { get; set; } = "";
|
||||||
|
|
||||||
private List<User>? users;
|
private List<UserDto>? users;
|
||||||
private string? errorMessage;
|
private string? errorMessage;
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
@ -112,8 +112,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<User> FilteredUsers => users is null || string.IsNullOrWhiteSpace(SearchText)
|
private IEnumerable<UserDto> FilteredUsers => users is null || string.IsNullOrWhiteSpace(SearchText)
|
||||||
? Enumerable.Empty<User>()
|
? Enumerable.Empty<UserDto>()
|
||||||
: users.Where(u => $"{u.FirstName} {u.LastName} {u.Username}"
|
: users.Where(u => $"{u.FirstName} {u.LastName} {u.Username}"
|
||||||
.Contains(SearchText, StringComparison.OrdinalIgnoreCase));
|
.Contains(SearchText, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
|
|||||||
@ -139,8 +139,17 @@ else
|
|||||||
<td>@o.Planstunden</td>
|
<td>@o.Planstunden</td>
|
||||||
<td>@o.Iststunden</td>
|
<td>@o.Iststunden</td>
|
||||||
<td>
|
<td>
|
||||||
<!-- Mitarbeiter-Zuordnung (später) -->
|
@if (o.Mitarbeiter?.Any() == true)
|
||||||
<span class="text-muted small">noch offen</span>
|
{
|
||||||
|
@foreach (var m in o.Mitarbeiter)
|
||||||
|
{
|
||||||
|
<span class="badge bg-info text-dark me-1">@m.FirstName @m.LastName</span>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<span class="text-muted small">keine zugewiesen</span>
|
||||||
|
}
|
||||||
</td>
|
</td>
|
||||||
<td class="text-end">
|
<td class="text-end">
|
||||||
<button class="btn btn-outline-danger btn-sm" @onclick="() => DeleteOrder(o.Id)">
|
<button class="btn btn-outline-danger btn-sm" @onclick="() => DeleteOrder(o.Id)">
|
||||||
@ -232,10 +241,38 @@ else
|
|||||||
case "members":
|
case "members":
|
||||||
<div>
|
<div>
|
||||||
<h5>Mitarbeiter</h5>
|
<h5>Mitarbeiter</h5>
|
||||||
<p>Teamzuordnung, Rollenverwaltung, People Picker.</p>
|
|
||||||
|
@if (projectMembers == null || !projectMembers.Any())
|
||||||
|
{
|
||||||
|
<div class="alert alert-info mt-3 text-center">
|
||||||
|
Keine Mitarbeiter zugewiesen.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-3 mt-3">
|
||||||
|
@foreach (var member in projectMembers)
|
||||||
|
{
|
||||||
|
<div class="col">
|
||||||
|
<div class="card h-100 shadow-sm border-0">
|
||||||
|
<div class="card-body">
|
||||||
|
<h6 class="card-title mb-1 text-primary">
|
||||||
|
@member.FirstName @member.LastName
|
||||||
|
</h6>
|
||||||
|
<p class="card-text text-muted small mb-1">@member.Username</p>
|
||||||
|
<p class="card-text text-muted small mb-0">
|
||||||
|
<i class="bi bi-envelope"></i> @member.Email
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case "documents":
|
case "documents":
|
||||||
<div>
|
<div>
|
||||||
<h5>Dokumente</h5>
|
<h5>Dokumente</h5>
|
||||||
@ -275,9 +312,10 @@ else
|
|||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
await LoadProjectAsync();
|
await LoadProjectAsync();
|
||||||
|
await LoadOrderAsync();
|
||||||
|
await LoadUsersAsync();
|
||||||
|
|
||||||
|
|
||||||
var result = await OrderService.GetOrdersByProjectAsync(1);
|
|
||||||
Console.WriteLine($"Orders loaded: {result.Data?.Count}");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,6 +399,7 @@ else
|
|||||||
if(result.Success)
|
if(result.Success)
|
||||||
{
|
{
|
||||||
orders = result.Data;
|
orders = result.Data;
|
||||||
|
RefreshProjectMembers();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -370,8 +409,11 @@ else
|
|||||||
|
|
||||||
private async Task CreateOrderAsync()
|
private async Task CreateOrderAsync()
|
||||||
{
|
{
|
||||||
|
// Mitarbeiter mit reinpacken
|
||||||
|
newOrder.Mitarbeiter = users.Where(u => selectedUserIds.Contains(u.Id)).ToList();
|
||||||
|
|
||||||
var result = await OrderService.CreateOrderAsync(newOrder);
|
var result = await OrderService.CreateOrderAsync(newOrder);
|
||||||
if(!result.Success)
|
if (!result.Success)
|
||||||
{
|
{
|
||||||
errorMessage = result.Error;
|
errorMessage = result.Error;
|
||||||
return;
|
return;
|
||||||
@ -395,6 +437,35 @@ else
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task LoadUsersAsync()
|
||||||
|
{
|
||||||
|
var result = await UserService.GetUsersAsync();
|
||||||
|
if (result.Success && result.Data != null)
|
||||||
|
{
|
||||||
|
users = result.Data;
|
||||||
|
Console.WriteLine($"Loaded {users.Count} users.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
errorMessage = result.Error ?? "Fehler beim Laden der Benutzer.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<UserDto> projectMembers = new();
|
||||||
|
private void RefreshProjectMembers()
|
||||||
|
{
|
||||||
|
if (orders == null) return;
|
||||||
|
|
||||||
|
projectMembers = orders
|
||||||
|
.Where(o => o.Mitarbeiter != null)
|
||||||
|
.SelectMany(o => o.Mitarbeiter!)
|
||||||
|
.GroupBy(u => u.Id)
|
||||||
|
.Select(g => g.First())
|
||||||
|
.OrderBy(u => u.LastName)
|
||||||
|
.ThenBy(u => u.FirstName)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@ -184,10 +184,10 @@ else
|
|||||||
private string? errorMessage;
|
private string? errorMessage;
|
||||||
private bool showAddModal = false;
|
private bool showAddModal = false;
|
||||||
private ProjectCreateDto newProject = new();
|
private ProjectCreateDto newProject = new();
|
||||||
private List<User> users = new();
|
private List<UserDto> users = new();
|
||||||
private string searchText = "";
|
private string searchText = "";
|
||||||
|
|
||||||
private IEnumerable<User> FilteredUsers => string.IsNullOrWhiteSpace(searchText)
|
private IEnumerable<UserDto> FilteredUsers => string.IsNullOrWhiteSpace(searchText)
|
||||||
? users
|
? users
|
||||||
: users.Where(u => $"{u.FirstName} {u.LastName} {u.Username}"
|
: users.Where(u => $"{u.FirstName} {u.LastName} {u.Username}"
|
||||||
.Contains(searchText, StringComparison.OrdinalIgnoreCase));
|
.Contains(searchText, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
@page "/users"
|
@page "/users"
|
||||||
@using OnProfNext.Client.Services
|
@using OnProfNext.Client.Services
|
||||||
@using OnProfNext.Shared.Models
|
@using OnProfNext.Shared.Models
|
||||||
|
@using OnProfNext.Shared.Models.DTOs
|
||||||
@inject UserApiService UserService
|
@inject UserApiService UserService
|
||||||
@inject AuthService AuthService
|
@inject AuthService AuthService
|
||||||
@inject NavigationManager Nav
|
@inject NavigationManager Nav
|
||||||
@ -139,9 +140,9 @@ else
|
|||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private List<User>? users;
|
private List<UserDto>? users;
|
||||||
private string? errorMessage;
|
private string? errorMessage;
|
||||||
private User? selectedUser;
|
private UserDto? selectedUser;
|
||||||
|
|
||||||
private bool showDeleteConfirm = false;
|
private bool showDeleteConfirm = false;
|
||||||
private string deleteConfirmInput = string.Empty;
|
private string deleteConfirmInput = string.Empty;
|
||||||
|
|||||||
@ -19,13 +19,9 @@ namespace OnProfNext.Client.Services
|
|||||||
var orders = await _httpClient.GetFromJsonAsync<List<OrderDto>>($"api/orders/byproject/{projectId}");
|
var orders = await _httpClient.GetFromJsonAsync<List<OrderDto>>($"api/orders/byproject/{projectId}");
|
||||||
return (true, orders ?? new List<OrderDto>(), null);
|
return (true, orders ?? new List<OrderDto>(), null);
|
||||||
}
|
}
|
||||||
catch (HttpRequestException)
|
|
||||||
{
|
|
||||||
return (false, null, "Server nicht erreichbar. Bitte später erneut versuchen.");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return (false, null, $"Fehler: {ex.Message}");
|
return (false, null, ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,19 +43,25 @@ namespace OnProfNext.Client.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Auftrag erstellen
|
//Auftrag erstellen
|
||||||
public async Task<(bool Success, string? Error)> CreateOrderAsync(OrderDto newOrder)
|
public async Task<(bool Success, string? Error)> CreateOrderAsync(OrderDto order)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _httpClient.PostAsJsonAsync("api/orders", newOrder);
|
var createDto = new OrderCreateDto
|
||||||
if (!response.IsSuccessStatusCode)
|
{
|
||||||
return (false, $"Fehler beim Erstellen: {response.ReasonPhrase}");
|
ProjectId = order.ProjectId,
|
||||||
|
Auftragsnummer = order.Auftragsnummer,
|
||||||
|
Titel = order.Titel,
|
||||||
|
Status = order.Status,
|
||||||
|
Planstunden = order.Planstunden,
|
||||||
|
MandantId = order.MandantId,
|
||||||
|
UserIds = order.Mitarbeiter.Select(u => u.Id).ToList()
|
||||||
|
};
|
||||||
|
|
||||||
return (true, null);
|
var response = await _httpClient.PostAsJsonAsync("api/orders", createDto);
|
||||||
}
|
return response.IsSuccessStatusCode
|
||||||
catch (HttpRequestException)
|
? (true, null)
|
||||||
{
|
: (false, $"Fehler beim Anlegen: {response.ReasonPhrase}");
|
||||||
return (false, "Server nicht erreichbar.");
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -105,6 +107,24 @@ namespace OnProfNext.Client.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Set Order Users Async
|
||||||
|
public async Task<(bool Success, string? Error)> SetOrderUsersAsync(int orderId, List<int> userIds)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var payload = new { OrderId = orderId, UserIds = userIds };
|
||||||
|
var response = await _httpClient.PostAsJsonAsync("api/orderusers", payload);
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
return (false, $"Fehler beim Speichern: {response.ReasonPhrase}");
|
||||||
|
return (true, null);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return (false, ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace OnProfNext.Client.Services
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var projects = await _httpClient.GetFromJsonAsync<List<ProjectDto>>("api/project");
|
var projects = await _httpClient.GetFromJsonAsync<List<ProjectDto>>("api/projects");
|
||||||
return (true, projects ?? new(), null);
|
return (true, projects ?? new(), null);
|
||||||
}
|
}
|
||||||
catch (HttpRequestException)
|
catch (HttpRequestException)
|
||||||
@ -35,7 +35,7 @@ namespace OnProfNext.Client.Services
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var project = await _httpClient.GetFromJsonAsync<ProjectDto>($"api/project/{id}");
|
var project = await _httpClient.GetFromJsonAsync<ProjectDto>($"api/projects/{id}");
|
||||||
if (project == null)
|
if (project == null)
|
||||||
return (false, null, "Projekt nicht gefunden.");
|
return (false, null, "Projekt nicht gefunden.");
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ namespace OnProfNext.Client.Services
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _httpClient.PostAsJsonAsync("api/project", dto);
|
var response = await _httpClient.PostAsJsonAsync("api/projects", dto);
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
return (false, $"Fehler beim Anlegen: {response.ReasonPhrase}");
|
return (false, $"Fehler beim Anlegen: {response.ReasonPhrase}");
|
||||||
@ -78,7 +78,7 @@ namespace OnProfNext.Client.Services
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _httpClient.PutAsJsonAsync($"api/project/{id}", dto);
|
var response = await _httpClient.PutAsJsonAsync($"api/projects/{id}", dto);
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
return (false, $"Fehler beim Aktualisieren: {response.ReasonPhrase}");
|
return (false, $"Fehler beim Aktualisieren: {response.ReasonPhrase}");
|
||||||
@ -100,7 +100,7 @@ namespace OnProfNext.Client.Services
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _httpClient.DeleteAsync($"api/project/{id}");
|
var response = await _httpClient.DeleteAsync($"api/projects/{id}");
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
return (false, $"Fehler beim Löschen: {response.ReasonPhrase}");
|
return (false, $"Fehler beim Löschen: {response.ReasonPhrase}");
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using OnProfNext.Shared.Models;
|
using OnProfNext.Shared.Models;
|
||||||
|
using OnProfNext.Shared.Models.DTOs;
|
||||||
using System.Net.Http.Json;
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
namespace OnProfNext.Client.Services
|
namespace OnProfNext.Client.Services
|
||||||
@ -12,20 +13,20 @@ namespace OnProfNext.Client.Services
|
|||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<(bool Success, List<User>? Data, string? Error)> GetUsersAsync()
|
public async Task<(bool Success, List<UserDto>? Data, string? Error)> GetUsersAsync()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var users = await _httpClient.GetFromJsonAsync<List<User>>("api/users");
|
var users = await _httpClient.GetFromJsonAsync<List<UserDto>>("api/users");
|
||||||
return (true, users ?? new List<User>(), null);
|
return (true, users ?? new List<UserDto>(), null);
|
||||||
}
|
}
|
||||||
catch (HttpRequestException ex)
|
catch (HttpRequestException)
|
||||||
{
|
{
|
||||||
return (false, null, "Keine Verbindung zum Server. Bitte später erneut versuchen.");
|
return (false, null, "Keine Verbindung zum Server. Bitte später erneut versuchen.");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return(false, null, $"Unerwarteter Fehler: {ex.Message}");
|
return (false, null, $"Unerwarteter Fehler: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +49,7 @@ namespace OnProfNext.Client.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<(bool Success, string? Error)> UpdateUserAsync(User user)
|
public async Task<(bool Success, string? Error)> UpdateUserAsync(UserDto user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"mainAssemblyName": "OnProfNext.Client",
|
"mainAssemblyName": "OnProfNext.Client",
|
||||||
"resources": {
|
"resources": {
|
||||||
"hash": "sha256-SaR622VBzkbZ3Cn15m/brI2xuJEupmhtVwEx8wa/rI4=",
|
"hash": "sha256-7KW3Qfm9CxYkbtb9+tRJYPyzmuj07fziiiVYwg4iZ/Y=",
|
||||||
"fingerprinting": {
|
"fingerprinting": {
|
||||||
"BlazorBootstrap.ym6tnrklwx.wasm": "BlazorBootstrap.wasm",
|
"BlazorBootstrap.ym6tnrklwx.wasm": "BlazorBootstrap.wasm",
|
||||||
"Blazored.Typeahead.5g65vcuhxb.wasm": "Blazored.Typeahead.wasm",
|
"Blazored.Typeahead.5g65vcuhxb.wasm": "Blazored.Typeahead.wasm",
|
||||||
@ -215,10 +215,10 @@
|
|||||||
"icudt_CJK.tjcz0u77k5.dat": "icudt_CJK.dat",
|
"icudt_CJK.tjcz0u77k5.dat": "icudt_CJK.dat",
|
||||||
"icudt_EFIGS.tptq2av103.dat": "icudt_EFIGS.dat",
|
"icudt_EFIGS.tptq2av103.dat": "icudt_EFIGS.dat",
|
||||||
"icudt_no_CJK.lfu7j35m59.dat": "icudt_no_CJK.dat",
|
"icudt_no_CJK.lfu7j35m59.dat": "icudt_no_CJK.dat",
|
||||||
"OnProfNext.Shared.2mfi0vbe9l.wasm": "OnProfNext.Shared.wasm",
|
"OnProfNext.Shared.ycdkuu8x8h.wasm": "OnProfNext.Shared.wasm",
|
||||||
"OnProfNext.Shared.t3qtrvr78n.pdb": "OnProfNext.Shared.pdb",
|
"OnProfNext.Shared.bi3s6hw0ov.pdb": "OnProfNext.Shared.pdb",
|
||||||
"OnProfNext.Client.5wq5yy3l8s.wasm": "OnProfNext.Client.wasm",
|
"OnProfNext.Client.xxw7n209sx.wasm": "OnProfNext.Client.wasm",
|
||||||
"OnProfNext.Client.4rg9bpcr9v.pdb": "OnProfNext.Client.pdb"
|
"OnProfNext.Client.mwqxl9mbte.pdb": "OnProfNext.Client.pdb"
|
||||||
},
|
},
|
||||||
"jsModuleNative": {
|
"jsModuleNative": {
|
||||||
"dotnet.native.9ih887ebfz.js": "sha256-oS7IRiQoVt9ThQ7Y2UM3XoeY0JqPD02cg9IvRdufn2w="
|
"dotnet.native.9ih887ebfz.js": "sha256-oS7IRiQoVt9ThQ7Y2UM3XoeY0JqPD02cg9IvRdufn2w="
|
||||||
@ -442,12 +442,12 @@
|
|||||||
"WindowsBase.vy2l5u79y6.wasm": "sha256-ufB9Mo5joMyUs3DzXWWBFFIZNEVrt6h9N5stYB6Oln4=",
|
"WindowsBase.vy2l5u79y6.wasm": "sha256-ufB9Mo5joMyUs3DzXWWBFFIZNEVrt6h9N5stYB6Oln4=",
|
||||||
"mscorlib.xd6mv31d55.wasm": "sha256-1YSLR2eZt3ceALFV//vZUF2AloxVil3VlrW1zZYPSEI=",
|
"mscorlib.xd6mv31d55.wasm": "sha256-1YSLR2eZt3ceALFV//vZUF2AloxVil3VlrW1zZYPSEI=",
|
||||||
"netstandard.kaml52uspo.wasm": "sha256-HLEwBpLfzKw2/zGSVzHzFJxznCkt/WIjahrziiMrOpA=",
|
"netstandard.kaml52uspo.wasm": "sha256-HLEwBpLfzKw2/zGSVzHzFJxznCkt/WIjahrziiMrOpA=",
|
||||||
"OnProfNext.Shared.2mfi0vbe9l.wasm": "sha256-dtTuHimLAmvGF8qILy/wJ/+ayEzY7dCE84UPpHBOASA=",
|
"OnProfNext.Shared.ycdkuu8x8h.wasm": "sha256-olapogpfRGpDGxXuzau/hIQ5o4cyZhq8h7xg3+iq8E4=",
|
||||||
"OnProfNext.Client.5wq5yy3l8s.wasm": "sha256-m066gnQLM/+y1wYYFW4kr2hCQmPEE259N81Fky7+CwU="
|
"OnProfNext.Client.xxw7n209sx.wasm": "sha256-haEY6AqSymUCGlI0dfz7DhNA7AgCZibKuDrAYQRP8YA="
|
||||||
},
|
},
|
||||||
"pdb": {
|
"pdb": {
|
||||||
"OnProfNext.Shared.t3qtrvr78n.pdb": "sha256-aXAxhpJUbAJFfkq3FS2JtRPFp2plRnylMovNt92Xwwo=",
|
"OnProfNext.Shared.bi3s6hw0ov.pdb": "sha256-PVU32sYeYWTHZ/OZrfTWLqQEkEcm060yrjFwRiK7vs4=",
|
||||||
"OnProfNext.Client.4rg9bpcr9v.pdb": "sha256-ECxFZzQ6HqVe1zWc13ioyvpjeuXnoVabpsyS62HMv+I="
|
"OnProfNext.Client.mwqxl9mbte.pdb": "sha256-dh/Pyivioxp3QQaW9jirXIoZFcucZBQ24pD2oJva5IQ="
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cacheBootResources": true,
|
"cacheBootResources": true,
|
||||||
|
|||||||
Binary file not shown.
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OnProfNext.Client")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("OnProfNext.Client")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+789d44a34459f0132cb03433abffa66c9ff48824")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+910ed8b8f84357d5f19f7be7f67be8f98b22e9c9")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("OnProfNext.Client")]
|
[assembly: System.Reflection.AssemblyProductAttribute("OnProfNext.Client")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("OnProfNext.Client")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("OnProfNext.Client")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
a6d164127922e05929c86ac8b818b177b550a13e63904451ca14283aeb814edd
|
23ad94e3cb51159ce56923b4c951a2f464f99f297debd052bd2c2b60700174d6
|
||||||
|
|||||||
Binary file not shown.
@ -1159,16 +1159,16 @@ C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\scopedcss\Compone
|
|||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\scopedcss\Components\Layout\NavMenu.razor.rz.scp.css
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\scopedcss\Components\Layout\NavMenu.razor.rz.scp.css
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\cmx4u86mij-jq0bgzcoc4.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\cmx4u86mij-jq0bgzcoc4.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\b3tztoi1cm-ob0l47m3ye.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\b3tztoi1cm-ob0l47m3ye.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.t3qtrvr78n.pdb
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.mwqxl9mbte.pdb
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.2mfi0vbe9l.wasm
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.xxw7n209sx.wasm
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.2mfi0vbe9l.wasm.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.bi3s6hw0ov.pdb
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.t3qtrvr78n.pdb.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.ycdkuu8x8h.wasm
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\kzp5jtqdfd-2mfi0vbe9l.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.mwqxl9mbte.pdb.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\po7udqtwl2-t3qtrvr78n.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.xxw7n209sx.wasm.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.4rg9bpcr9v.pdb
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.ycdkuu8x8h.wasm.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.5wq5yy3l8s.wasm
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Shared.bi3s6hw0ov.pdb.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.4rg9bpcr9v.pdb.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\kzp5jtqdfd-ycdkuu8x8h.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\bin\Debug\net9.0\wwwroot\_framework\OnProfNext.Client.5wq5yy3l8s.wasm.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\po7udqtwl2-bi3s6hw0ov.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\cez1jk5yrk-5wq5yy3l8s.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\cez1jk5yrk-xxw7n209sx.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\b9lx0cbjbg-4rg9bpcr9v.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\b9lx0cbjbg-mwqxl9mbte.gz
|
||||||
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\xzgxwa2yd7-wfeicy0di7.gz
|
C:\DEVQPDC\Proj2\OnProfNext\OnProfNext.Client\obj\Debug\net9.0\compressed\xzgxwa2yd7-2n5b5i9hx5.gz
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"mainAssemblyName": "OnProfNext.Client",
|
"mainAssemblyName": "OnProfNext.Client",
|
||||||
"resources": {
|
"resources": {
|
||||||
"hash": "sha256-SaR622VBzkbZ3Cn15m/brI2xuJEupmhtVwEx8wa/rI4=",
|
"hash": "sha256-7KW3Qfm9CxYkbtb9+tRJYPyzmuj07fziiiVYwg4iZ/Y=",
|
||||||
"fingerprinting": {
|
"fingerprinting": {
|
||||||
"BlazorBootstrap.ym6tnrklwx.wasm": "BlazorBootstrap.wasm",
|
"BlazorBootstrap.ym6tnrklwx.wasm": "BlazorBootstrap.wasm",
|
||||||
"Blazored.Typeahead.5g65vcuhxb.wasm": "Blazored.Typeahead.wasm",
|
"Blazored.Typeahead.5g65vcuhxb.wasm": "Blazored.Typeahead.wasm",
|
||||||
@ -215,10 +215,10 @@
|
|||||||
"icudt_CJK.tjcz0u77k5.dat": "icudt_CJK.dat",
|
"icudt_CJK.tjcz0u77k5.dat": "icudt_CJK.dat",
|
||||||
"icudt_EFIGS.tptq2av103.dat": "icudt_EFIGS.dat",
|
"icudt_EFIGS.tptq2av103.dat": "icudt_EFIGS.dat",
|
||||||
"icudt_no_CJK.lfu7j35m59.dat": "icudt_no_CJK.dat",
|
"icudt_no_CJK.lfu7j35m59.dat": "icudt_no_CJK.dat",
|
||||||
"OnProfNext.Shared.2mfi0vbe9l.wasm": "OnProfNext.Shared.wasm",
|
"OnProfNext.Shared.ycdkuu8x8h.wasm": "OnProfNext.Shared.wasm",
|
||||||
"OnProfNext.Shared.t3qtrvr78n.pdb": "OnProfNext.Shared.pdb",
|
"OnProfNext.Shared.bi3s6hw0ov.pdb": "OnProfNext.Shared.pdb",
|
||||||
"OnProfNext.Client.5wq5yy3l8s.wasm": "OnProfNext.Client.wasm",
|
"OnProfNext.Client.xxw7n209sx.wasm": "OnProfNext.Client.wasm",
|
||||||
"OnProfNext.Client.4rg9bpcr9v.pdb": "OnProfNext.Client.pdb"
|
"OnProfNext.Client.mwqxl9mbte.pdb": "OnProfNext.Client.pdb"
|
||||||
},
|
},
|
||||||
"jsModuleNative": {
|
"jsModuleNative": {
|
||||||
"dotnet.native.9ih887ebfz.js": "sha256-oS7IRiQoVt9ThQ7Y2UM3XoeY0JqPD02cg9IvRdufn2w="
|
"dotnet.native.9ih887ebfz.js": "sha256-oS7IRiQoVt9ThQ7Y2UM3XoeY0JqPD02cg9IvRdufn2w="
|
||||||
@ -442,12 +442,12 @@
|
|||||||
"WindowsBase.vy2l5u79y6.wasm": "sha256-ufB9Mo5joMyUs3DzXWWBFFIZNEVrt6h9N5stYB6Oln4=",
|
"WindowsBase.vy2l5u79y6.wasm": "sha256-ufB9Mo5joMyUs3DzXWWBFFIZNEVrt6h9N5stYB6Oln4=",
|
||||||
"mscorlib.xd6mv31d55.wasm": "sha256-1YSLR2eZt3ceALFV//vZUF2AloxVil3VlrW1zZYPSEI=",
|
"mscorlib.xd6mv31d55.wasm": "sha256-1YSLR2eZt3ceALFV//vZUF2AloxVil3VlrW1zZYPSEI=",
|
||||||
"netstandard.kaml52uspo.wasm": "sha256-HLEwBpLfzKw2/zGSVzHzFJxznCkt/WIjahrziiMrOpA=",
|
"netstandard.kaml52uspo.wasm": "sha256-HLEwBpLfzKw2/zGSVzHzFJxznCkt/WIjahrziiMrOpA=",
|
||||||
"OnProfNext.Shared.2mfi0vbe9l.wasm": "sha256-dtTuHimLAmvGF8qILy/wJ/+ayEzY7dCE84UPpHBOASA=",
|
"OnProfNext.Shared.ycdkuu8x8h.wasm": "sha256-olapogpfRGpDGxXuzau/hIQ5o4cyZhq8h7xg3+iq8E4=",
|
||||||
"OnProfNext.Client.5wq5yy3l8s.wasm": "sha256-m066gnQLM/+y1wYYFW4kr2hCQmPEE259N81Fky7+CwU="
|
"OnProfNext.Client.xxw7n209sx.wasm": "sha256-haEY6AqSymUCGlI0dfz7DhNA7AgCZibKuDrAYQRP8YA="
|
||||||
},
|
},
|
||||||
"pdb": {
|
"pdb": {
|
||||||
"OnProfNext.Shared.t3qtrvr78n.pdb": "sha256-aXAxhpJUbAJFfkq3FS2JtRPFp2plRnylMovNt92Xwwo=",
|
"OnProfNext.Shared.bi3s6hw0ov.pdb": "sha256-PVU32sYeYWTHZ/OZrfTWLqQEkEcm060yrjFwRiK7vs4=",
|
||||||
"OnProfNext.Client.4rg9bpcr9v.pdb": "sha256-ECxFZzQ6HqVe1zWc13ioyvpjeuXnoVabpsyS62HMv+I="
|
"OnProfNext.Client.mwqxl9mbte.pdb": "sha256-dh/Pyivioxp3QQaW9jirXIoZFcucZBQ24pD2oJva5IQ="
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cacheBootResources": true,
|
"cacheBootResources": true,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"HQrK/c2YdUjsysKaYGSoybSEyDguxRws1HNGGkzNr68=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["wMWPZGfJtGeKkPw89r\u002BuOnYPKqx9sEcbqVKHPoYpTbg=","puDy0dzI5QvIsFKrWO6hrkZZcZnbTNSWaBqIyd5vS9E=","bNNyXhlBr3jQbNMkCOe8xcZdSkB7XoUpSNnehjUQlxA=","3Q171G9uNkjZ3lAgJDZDLi2eJw/8ixjkaHrw3rOC/vo=","TDAOXjznXPMZY6da8pxBF7r\u002BgikX9nuv6RoxA3r\u002BE1M=","HwFAFTSvCp26cdo1kx5ecfdA/\u002BXAkxgIq5fu6m8nIA0=","SHr5eqYzJxZNE5/PlzkQfEBMjakT5PcfDexn2iCZjyI=","rovhGZeu5lwGm9t06s1govZ9ZDUAyhGquT/zYxV9EMA=","n90/VXHLh5f/b\u002BenXJx5LvC2wVhxMsmGXsKTtLP1rGE=","M2F\u002BdirWJXRBR8xTEBUsBQq5ZBlMsGLrQuDu2Xoflo8=","QQfqB2d2lyRaoRCXHlFI1qDyAV8sb3YBC6sabNep4T8=","sCLTILGPMYZmM4Cq6VeXFDRKEU4zUeqi0zh34Zyl1\u002Bg=","KPtl\u002BIcYzJanv3TdGEjfu/58zjjSte7onQyK1z2UpSs=","UOD2algC0YxakRPAo\u002BdHBxw2nz\u002Bf3inCW8K/2sYv4hk=","2a4AqN7uSgiGGPijKrbGYp3zTiFaYviYMC4je9251Gg=","S1JDFpdG6oeT7HQg1q6p3OLFEq6MSuMk9DrbZZf85U0=","FcAp\u002BB\u002BMdtU4Jqt1qd8ZU0XGQCyIO1UaSwwwKyFcuRI=","KicT\u002BJLs/7POfopY2e6knubWrx25hvaxJ1zNKezbz9Y=","xL7/ma/CChAYqsGMi59uK6yIstcESmcirrh1RzpvMEw=","dnRdnpQc61NJ56ASQrUFLZkDTGNM0KNu\u002BtR3NDDE34A=","Grv4g6vNrL73s12N910v2w8Bfa5b3fgn3knYM4SPbTo=","biFvXP\u002Bh3VCB//g0WfQTKnZXpYAq5NNK8FOtNrSlluc=","JbXwwQIUN/GSNZKsNiMjv4ebWU2SviyhnVdlqdpCpmg=","nz\u002BZycBj/r0qxn/lLFHWJ8J6wFGlMsV/1mlRmZUo/4I=","aQycidQhGUbn4VCw/EJfF5iFRrN1xIgwHoIJjbOVZps=","qgUM6A/uKHiUkWc1/Ln9WXX1SAX8JoRvV74Ma6ZFmng=","iKkyE9MQsJaeQ\u002BwNmzP/yqlnE0DgDcGv\u002BmjdLoDxrRo=","uTVPNnHOvOCd/yTop9dVCWOMKn4tFTh\u002B\u002BvDB36ISZPs=","mfZpFq\u002BvCmodLP7zO9b0YsEWC/OcDyBoxhYqFD56fFk=","YWOs7JAKIsqIOVQG0w8okz7vUzx0CLjYsgFSeEvd8dY=","mhyeOUDBL5xq9Rlm12fZKRW\u002BewVdAloH3HpGO\u002B7GqeM=","dwYRUoBX6sjNOpgOukCSK6FYozMx5nQPuanV9jF0pug=","ozbr8RdoOPcWGZFTphPnXiPHqUXsUX48rNHT9DPxQQQ=","zNy/\u002Beenwd4rP3KmszLj/P9L4RfeJcIG51tiUMGKZUI=","JqnKg76tBTEDi4ygNmSbT8906THHzJuCJTZbK0K6Oe8=","JcACn0ymzW4JpJ5CgWCxT1NdaSHZxnxp\u002BAiJJM/kC6k=","k71DltJbtRqVXA3rGahMZgUq0B9sodbz2R43hsUcD1I=","aouiJcQV84ezpO9Cwpg\u002BId9XaiZVlGhgxGvxD6PaAGM=","b/Jk0Mr/B4BWzcJa6nZHbXC\u002BzU0I1a30M2AcH5fdjKY=","aK2OxKAVYxUxIEDqZnknDAW9qelpdYKLvlGPA3\u002B5OIE=","E4QT\u002B435PZZ\u002BRTzgvECRD1bOtElnkqeWREaoDzYrMdc=","FBxckgU98gb7vgTEM5V4Q\u002BEWV1Ztcp3Bssbx92n1keA=","gv3iSaKsj0CmcWFWMhUhYcA7l4\u002BnVTp1Jj85xAmbA8E=","mRQfJZfYrp6FVuPsI1970i6\u002Bg1zC7cMX1qaaf5X\u002BoCQ=","5BtfX2AAiOmDTGL34icHscY4eUpH3nbfHN/rb4e62rY=","6rueZEktdPrxLkoO8WfJXCckClsIUsg6sBnN1LTessM=","SZJz\u002B71xnWFevxgzVgPPCqih4KkGwhQhHvoh6BgiWFc=","u2aOXUOrTOrwIgVam12G9HzaU7QEbOQG66Q7IDjlMYY=","8DlE0XjBA/lhOGHaXiPZ5cQswwpo6NEUaebI9my2F4s=","1ldijbG/u6m3Wwq0OUgI3unhWdjWhqvOD\u002BI1PauI9GI=","WtqR0aLtM7t6m3NDyJiTfyz81jhBwyuQkg/iDou5f/k=","aNqGJzJ5xa0dNxSytzanVzqK6xNl85ZkIZfdb\u002BKhxHY=","TpcHV4OB3FaN8hILgTJGBWj6cGx2APNuu6cH90cA2Yw=","jUDUzGIKHCleWWpzHVl3AT4E4/\u002BiG6ks0UJVoC3TXgo=","XfkTfnoOOODr5Ke\u002BIvlGksb7y1tdjO9D3cio6nfgb6o=","sbScjs7uLbfBbWbJKERtvGeL8se13w0V5s0ufS/zDaQ=","9hC0wthPXB9k40lIbDKdWYtaw2axqBb91\u002BojeVYtTEY=","xLFIqNnTxWnQP99MmbgJqozQM9NzpZ0mMYZdGkZnBU4=","qOlED1ak4sYSTrFn1g6Y7mnsz3UFQEQ/RV3qKJGx0DQ=","foWeQlUvvndX4pfDJltcGaBo1koaw\u002BElLUUybC5gBsk=","KQensXLeeaWOn3V5Wpr7X3rpnnA8NBDaOZJpNCvEAKM=","kEPWaTEgcSvuVRYmq9OKVA\u002BlpOmTKkV3fpY5ByqOqFk=","87pLnLY3BRAM5qVJkJZ6NFQjQse85QaOsaRqbVei3f8=","gb5K/PglhYNjQ6udVditV5mmWe8pBL0bkbfqmDZJR3Q=","c//884XNSMx2fHCDDouqzztU4ZLBdyPK5IazFjEu3xg=","A5FwpPfGidgr2NgPt1ofZxg2nxXAcuozNEFd9BE7nsk="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"HQrK/c2YdUjsysKaYGSoybSEyDguxRws1HNGGkzNr68=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["wMWPZGfJtGeKkPw89r\u002BuOnYPKqx9sEcbqVKHPoYpTbg=","puDy0dzI5QvIsFKrWO6hrkZZcZnbTNSWaBqIyd5vS9E=","bNNyXhlBr3jQbNMkCOe8xcZdSkB7XoUpSNnehjUQlxA=","3Q171G9uNkjZ3lAgJDZDLi2eJw/8ixjkaHrw3rOC/vo=","TDAOXjznXPMZY6da8pxBF7r\u002BgikX9nuv6RoxA3r\u002BE1M=","HwFAFTSvCp26cdo1kx5ecfdA/\u002BXAkxgIq5fu6m8nIA0=","SHr5eqYzJxZNE5/PlzkQfEBMjakT5PcfDexn2iCZjyI=","rovhGZeu5lwGm9t06s1govZ9ZDUAyhGquT/zYxV9EMA=","n90/VXHLh5f/b\u002BenXJx5LvC2wVhxMsmGXsKTtLP1rGE=","M2F\u002BdirWJXRBR8xTEBUsBQq5ZBlMsGLrQuDu2Xoflo8=","QQfqB2d2lyRaoRCXHlFI1qDyAV8sb3YBC6sabNep4T8=","sCLTILGPMYZmM4Cq6VeXFDRKEU4zUeqi0zh34Zyl1\u002Bg=","KPtl\u002BIcYzJanv3TdGEjfu/58zjjSte7onQyK1z2UpSs=","UOD2algC0YxakRPAo\u002BdHBxw2nz\u002Bf3inCW8K/2sYv4hk=","2a4AqN7uSgiGGPijKrbGYp3zTiFaYviYMC4je9251Gg=","S1JDFpdG6oeT7HQg1q6p3OLFEq6MSuMk9DrbZZf85U0=","FcAp\u002BB\u002BMdtU4Jqt1qd8ZU0XGQCyIO1UaSwwwKyFcuRI=","KicT\u002BJLs/7POfopY2e6knubWrx25hvaxJ1zNKezbz9Y=","xL7/ma/CChAYqsGMi59uK6yIstcESmcirrh1RzpvMEw=","dnRdnpQc61NJ56ASQrUFLZkDTGNM0KNu\u002BtR3NDDE34A=","Grv4g6vNrL73s12N910v2w8Bfa5b3fgn3knYM4SPbTo=","biFvXP\u002Bh3VCB//g0WfQTKnZXpYAq5NNK8FOtNrSlluc=","JbXwwQIUN/GSNZKsNiMjv4ebWU2SviyhnVdlqdpCpmg=","nz\u002BZycBj/r0qxn/lLFHWJ8J6wFGlMsV/1mlRmZUo/4I=","aQycidQhGUbn4VCw/EJfF5iFRrN1xIgwHoIJjbOVZps=","qgUM6A/uKHiUkWc1/Ln9WXX1SAX8JoRvV74Ma6ZFmng=","iKkyE9MQsJaeQ\u002BwNmzP/yqlnE0DgDcGv\u002BmjdLoDxrRo=","uTVPNnHOvOCd/yTop9dVCWOMKn4tFTh\u002B\u002BvDB36ISZPs=","mfZpFq\u002BvCmodLP7zO9b0YsEWC/OcDyBoxhYqFD56fFk=","YWOs7JAKIsqIOVQG0w8okz7vUzx0CLjYsgFSeEvd8dY=","mhyeOUDBL5xq9Rlm12fZKRW\u002BewVdAloH3HpGO\u002B7GqeM=","dwYRUoBX6sjNOpgOukCSK6FYozMx5nQPuanV9jF0pug=","ozbr8RdoOPcWGZFTphPnXiPHqUXsUX48rNHT9DPxQQQ=","zNy/\u002Beenwd4rP3KmszLj/P9L4RfeJcIG51tiUMGKZUI=","JqnKg76tBTEDi4ygNmSbT8906THHzJuCJTZbK0K6Oe8=","JcACn0ymzW4JpJ5CgWCxT1NdaSHZxnxp\u002BAiJJM/kC6k=","k71DltJbtRqVXA3rGahMZgUq0B9sodbz2R43hsUcD1I=","aouiJcQV84ezpO9Cwpg\u002BId9XaiZVlGhgxGvxD6PaAGM=","b/Jk0Mr/B4BWzcJa6nZHbXC\u002BzU0I1a30M2AcH5fdjKY=","aK2OxKAVYxUxIEDqZnknDAW9qelpdYKLvlGPA3\u002B5OIE=","E4QT\u002B435PZZ\u002BRTzgvECRD1bOtElnkqeWREaoDzYrMdc=","FBxckgU98gb7vgTEM5V4Q\u002BEWV1Ztcp3Bssbx92n1keA=","gv3iSaKsj0CmcWFWMhUhYcA7l4\u002BnVTp1Jj85xAmbA8E=","mRQfJZfYrp6FVuPsI1970i6\u002Bg1zC7cMX1qaaf5X\u002BoCQ=","5BtfX2AAiOmDTGL34icHscY4eUpH3nbfHN/rb4e62rY=","6rueZEktdPrxLkoO8WfJXCckClsIUsg6sBnN1LTessM=","SZJz\u002B71xnWFevxgzVgPPCqih4KkGwhQhHvoh6BgiWFc=","u2aOXUOrTOrwIgVam12G9HzaU7QEbOQG66Q7IDjlMYY=","8DlE0XjBA/lhOGHaXiPZ5cQswwpo6NEUaebI9my2F4s=","1ldijbG/u6m3Wwq0OUgI3unhWdjWhqvOD\u002BI1PauI9GI=","WtqR0aLtM7t6m3NDyJiTfyz81jhBwyuQkg/iDou5f/k=","aNqGJzJ5xa0dNxSytzanVzqK6xNl85ZkIZfdb\u002BKhxHY=","TpcHV4OB3FaN8hILgTJGBWj6cGx2APNuu6cH90cA2Yw=","y2O\u002BMtvYW\u002BJsiXwnsSGokrtLoPU1BZKq/Rs6jBLWkBA=","XfkTfnoOOODr5Ke\u002BIvlGksb7y1tdjO9D3cio6nfgb6o=","sbScjs7uLbfBbWbJKERtvGeL8se13w0V5s0ufS/zDaQ=","9hC0wthPXB9k40lIbDKdWYtaw2axqBb91\u002BojeVYtTEY=","xLFIqNnTxWnQP99MmbgJqozQM9NzpZ0mMYZdGkZnBU4=","qOlED1ak4sYSTrFn1g6Y7mnsz3UFQEQ/RV3qKJGx0DQ=","Ijp03RBmTBHzhcCv1Sg/aWUghcNgib2sblPmYlOuDYk=","HCsDlEON4uTuZHQ/mLhoZSnOhDE/0YmD0\u002BPzbGk55jk=","DIlQgc8O3Rampq4\u002BuAU34qvAhOQ76ih6rEWZRuXbpGs=","87pLnLY3BRAM5qVJkJZ6NFQjQse85QaOsaRqbVei3f8=","gb5K/PglhYNjQ6udVditV5mmWe8pBL0bkbfqmDZJR3Q=","c//884XNSMx2fHCDDouqzztU4ZLBdyPK5IazFjEu3xg=","A5FwpPfGidgr2NgPt1ofZxg2nxXAcuozNEFd9BE7nsk="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"Q5kcht8XOSaXwErDHawVS9gd2nNuRy7EEG55Mop5u7E=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["wMWPZGfJtGeKkPw89r\u002BuOnYPKqx9sEcbqVKHPoYpTbg=","puDy0dzI5QvIsFKrWO6hrkZZcZnbTNSWaBqIyd5vS9E=","bNNyXhlBr3jQbNMkCOe8xcZdSkB7XoUpSNnehjUQlxA=","3Q171G9uNkjZ3lAgJDZDLi2eJw/8ixjkaHrw3rOC/vo=","TDAOXjznXPMZY6da8pxBF7r\u002BgikX9nuv6RoxA3r\u002BE1M=","HwFAFTSvCp26cdo1kx5ecfdA/\u002BXAkxgIq5fu6m8nIA0=","SHr5eqYzJxZNE5/PlzkQfEBMjakT5PcfDexn2iCZjyI=","rovhGZeu5lwGm9t06s1govZ9ZDUAyhGquT/zYxV9EMA=","n90/VXHLh5f/b\u002BenXJx5LvC2wVhxMsmGXsKTtLP1rGE=","M2F\u002BdirWJXRBR8xTEBUsBQq5ZBlMsGLrQuDu2Xoflo8=","QQfqB2d2lyRaoRCXHlFI1qDyAV8sb3YBC6sabNep4T8=","sCLTILGPMYZmM4Cq6VeXFDRKEU4zUeqi0zh34Zyl1\u002Bg=","KPtl\u002BIcYzJanv3TdGEjfu/58zjjSte7onQyK1z2UpSs=","UOD2algC0YxakRPAo\u002BdHBxw2nz\u002Bf3inCW8K/2sYv4hk=","2a4AqN7uSgiGGPijKrbGYp3zTiFaYviYMC4je9251Gg=","S1JDFpdG6oeT7HQg1q6p3OLFEq6MSuMk9DrbZZf85U0=","FcAp\u002BB\u002BMdtU4Jqt1qd8ZU0XGQCyIO1UaSwwwKyFcuRI=","KicT\u002BJLs/7POfopY2e6knubWrx25hvaxJ1zNKezbz9Y=","xL7/ma/CChAYqsGMi59uK6yIstcESmcirrh1RzpvMEw=","dnRdnpQc61NJ56ASQrUFLZkDTGNM0KNu\u002BtR3NDDE34A=","Grv4g6vNrL73s12N910v2w8Bfa5b3fgn3knYM4SPbTo=","biFvXP\u002Bh3VCB//g0WfQTKnZXpYAq5NNK8FOtNrSlluc=","JbXwwQIUN/GSNZKsNiMjv4ebWU2SviyhnVdlqdpCpmg=","nz\u002BZycBj/r0qxn/lLFHWJ8J6wFGlMsV/1mlRmZUo/4I=","aQycidQhGUbn4VCw/EJfF5iFRrN1xIgwHoIJjbOVZps=","qgUM6A/uKHiUkWc1/Ln9WXX1SAX8JoRvV74Ma6ZFmng=","iKkyE9MQsJaeQ\u002BwNmzP/yqlnE0DgDcGv\u002BmjdLoDxrRo=","uTVPNnHOvOCd/yTop9dVCWOMKn4tFTh\u002B\u002BvDB36ISZPs=","mfZpFq\u002BvCmodLP7zO9b0YsEWC/OcDyBoxhYqFD56fFk=","YWOs7JAKIsqIOVQG0w8okz7vUzx0CLjYsgFSeEvd8dY=","mhyeOUDBL5xq9Rlm12fZKRW\u002BewVdAloH3HpGO\u002B7GqeM=","dwYRUoBX6sjNOpgOukCSK6FYozMx5nQPuanV9jF0pug=","ozbr8RdoOPcWGZFTphPnXiPHqUXsUX48rNHT9DPxQQQ=","zNy/\u002Beenwd4rP3KmszLj/P9L4RfeJcIG51tiUMGKZUI=","JqnKg76tBTEDi4ygNmSbT8906THHzJuCJTZbK0K6Oe8=","JcACn0ymzW4JpJ5CgWCxT1NdaSHZxnxp\u002BAiJJM/kC6k=","k71DltJbtRqVXA3rGahMZgUq0B9sodbz2R43hsUcD1I=","aouiJcQV84ezpO9Cwpg\u002BId9XaiZVlGhgxGvxD6PaAGM=","b/Jk0Mr/B4BWzcJa6nZHbXC\u002BzU0I1a30M2AcH5fdjKY=","aK2OxKAVYxUxIEDqZnknDAW9qelpdYKLvlGPA3\u002B5OIE=","E4QT\u002B435PZZ\u002BRTzgvECRD1bOtElnkqeWREaoDzYrMdc=","FBxckgU98gb7vgTEM5V4Q\u002BEWV1Ztcp3Bssbx92n1keA=","gv3iSaKsj0CmcWFWMhUhYcA7l4\u002BnVTp1Jj85xAmbA8E=","mRQfJZfYrp6FVuPsI1970i6\u002Bg1zC7cMX1qaaf5X\u002BoCQ=","5BtfX2AAiOmDTGL34icHscY4eUpH3nbfHN/rb4e62rY=","6rueZEktdPrxLkoO8WfJXCckClsIUsg6sBnN1LTessM=","SZJz\u002B71xnWFevxgzVgPPCqih4KkGwhQhHvoh6BgiWFc=","u2aOXUOrTOrwIgVam12G9HzaU7QEbOQG66Q7IDjlMYY=","8DlE0XjBA/lhOGHaXiPZ5cQswwpo6NEUaebI9my2F4s=","1ldijbG/u6m3Wwq0OUgI3unhWdjWhqvOD\u002BI1PauI9GI=","WtqR0aLtM7t6m3NDyJiTfyz81jhBwyuQkg/iDou5f/k=","aNqGJzJ5xa0dNxSytzanVzqK6xNl85ZkIZfdb\u002BKhxHY=","TpcHV4OB3FaN8hILgTJGBWj6cGx2APNuu6cH90cA2Yw=","jUDUzGIKHCleWWpzHVl3AT4E4/\u002BiG6ks0UJVoC3TXgo=","XfkTfnoOOODr5Ke\u002BIvlGksb7y1tdjO9D3cio6nfgb6o=","sbScjs7uLbfBbWbJKERtvGeL8se13w0V5s0ufS/zDaQ=","9hC0wthPXB9k40lIbDKdWYtaw2axqBb91\u002BojeVYtTEY=","xLFIqNnTxWnQP99MmbgJqozQM9NzpZ0mMYZdGkZnBU4=","qOlED1ak4sYSTrFn1g6Y7mnsz3UFQEQ/RV3qKJGx0DQ=","foWeQlUvvndX4pfDJltcGaBo1koaw\u002BElLUUybC5gBsk=","KQensXLeeaWOn3V5Wpr7X3rpnnA8NBDaOZJpNCvEAKM=","kEPWaTEgcSvuVRYmq9OKVA\u002BlpOmTKkV3fpY5ByqOqFk=","87pLnLY3BRAM5qVJkJZ6NFQjQse85QaOsaRqbVei3f8=","gb5K/PglhYNjQ6udVditV5mmWe8pBL0bkbfqmDZJR3Q=","c//884XNSMx2fHCDDouqzztU4ZLBdyPK5IazFjEu3xg=","A5FwpPfGidgr2NgPt1ofZxg2nxXAcuozNEFd9BE7nsk="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"Q5kcht8XOSaXwErDHawVS9gd2nNuRy7EEG55Mop5u7E=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["wMWPZGfJtGeKkPw89r\u002BuOnYPKqx9sEcbqVKHPoYpTbg=","puDy0dzI5QvIsFKrWO6hrkZZcZnbTNSWaBqIyd5vS9E=","bNNyXhlBr3jQbNMkCOe8xcZdSkB7XoUpSNnehjUQlxA=","3Q171G9uNkjZ3lAgJDZDLi2eJw/8ixjkaHrw3rOC/vo=","TDAOXjznXPMZY6da8pxBF7r\u002BgikX9nuv6RoxA3r\u002BE1M=","HwFAFTSvCp26cdo1kx5ecfdA/\u002BXAkxgIq5fu6m8nIA0=","SHr5eqYzJxZNE5/PlzkQfEBMjakT5PcfDexn2iCZjyI=","rovhGZeu5lwGm9t06s1govZ9ZDUAyhGquT/zYxV9EMA=","n90/VXHLh5f/b\u002BenXJx5LvC2wVhxMsmGXsKTtLP1rGE=","M2F\u002BdirWJXRBR8xTEBUsBQq5ZBlMsGLrQuDu2Xoflo8=","QQfqB2d2lyRaoRCXHlFI1qDyAV8sb3YBC6sabNep4T8=","sCLTILGPMYZmM4Cq6VeXFDRKEU4zUeqi0zh34Zyl1\u002Bg=","KPtl\u002BIcYzJanv3TdGEjfu/58zjjSte7onQyK1z2UpSs=","UOD2algC0YxakRPAo\u002BdHBxw2nz\u002Bf3inCW8K/2sYv4hk=","2a4AqN7uSgiGGPijKrbGYp3zTiFaYviYMC4je9251Gg=","S1JDFpdG6oeT7HQg1q6p3OLFEq6MSuMk9DrbZZf85U0=","FcAp\u002BB\u002BMdtU4Jqt1qd8ZU0XGQCyIO1UaSwwwKyFcuRI=","KicT\u002BJLs/7POfopY2e6knubWrx25hvaxJ1zNKezbz9Y=","xL7/ma/CChAYqsGMi59uK6yIstcESmcirrh1RzpvMEw=","dnRdnpQc61NJ56ASQrUFLZkDTGNM0KNu\u002BtR3NDDE34A=","Grv4g6vNrL73s12N910v2w8Bfa5b3fgn3knYM4SPbTo=","biFvXP\u002Bh3VCB//g0WfQTKnZXpYAq5NNK8FOtNrSlluc=","JbXwwQIUN/GSNZKsNiMjv4ebWU2SviyhnVdlqdpCpmg=","nz\u002BZycBj/r0qxn/lLFHWJ8J6wFGlMsV/1mlRmZUo/4I=","aQycidQhGUbn4VCw/EJfF5iFRrN1xIgwHoIJjbOVZps=","qgUM6A/uKHiUkWc1/Ln9WXX1SAX8JoRvV74Ma6ZFmng=","iKkyE9MQsJaeQ\u002BwNmzP/yqlnE0DgDcGv\u002BmjdLoDxrRo=","uTVPNnHOvOCd/yTop9dVCWOMKn4tFTh\u002B\u002BvDB36ISZPs=","mfZpFq\u002BvCmodLP7zO9b0YsEWC/OcDyBoxhYqFD56fFk=","YWOs7JAKIsqIOVQG0w8okz7vUzx0CLjYsgFSeEvd8dY=","mhyeOUDBL5xq9Rlm12fZKRW\u002BewVdAloH3HpGO\u002B7GqeM=","dwYRUoBX6sjNOpgOukCSK6FYozMx5nQPuanV9jF0pug=","ozbr8RdoOPcWGZFTphPnXiPHqUXsUX48rNHT9DPxQQQ=","zNy/\u002Beenwd4rP3KmszLj/P9L4RfeJcIG51tiUMGKZUI=","JqnKg76tBTEDi4ygNmSbT8906THHzJuCJTZbK0K6Oe8=","JcACn0ymzW4JpJ5CgWCxT1NdaSHZxnxp\u002BAiJJM/kC6k=","k71DltJbtRqVXA3rGahMZgUq0B9sodbz2R43hsUcD1I=","aouiJcQV84ezpO9Cwpg\u002BId9XaiZVlGhgxGvxD6PaAGM=","b/Jk0Mr/B4BWzcJa6nZHbXC\u002BzU0I1a30M2AcH5fdjKY=","aK2OxKAVYxUxIEDqZnknDAW9qelpdYKLvlGPA3\u002B5OIE=","E4QT\u002B435PZZ\u002BRTzgvECRD1bOtElnkqeWREaoDzYrMdc=","FBxckgU98gb7vgTEM5V4Q\u002BEWV1Ztcp3Bssbx92n1keA=","gv3iSaKsj0CmcWFWMhUhYcA7l4\u002BnVTp1Jj85xAmbA8E=","mRQfJZfYrp6FVuPsI1970i6\u002Bg1zC7cMX1qaaf5X\u002BoCQ=","5BtfX2AAiOmDTGL34icHscY4eUpH3nbfHN/rb4e62rY=","6rueZEktdPrxLkoO8WfJXCckClsIUsg6sBnN1LTessM=","SZJz\u002B71xnWFevxgzVgPPCqih4KkGwhQhHvoh6BgiWFc=","u2aOXUOrTOrwIgVam12G9HzaU7QEbOQG66Q7IDjlMYY=","8DlE0XjBA/lhOGHaXiPZ5cQswwpo6NEUaebI9my2F4s=","1ldijbG/u6m3Wwq0OUgI3unhWdjWhqvOD\u002BI1PauI9GI=","WtqR0aLtM7t6m3NDyJiTfyz81jhBwyuQkg/iDou5f/k=","aNqGJzJ5xa0dNxSytzanVzqK6xNl85ZkIZfdb\u002BKhxHY=","TpcHV4OB3FaN8hILgTJGBWj6cGx2APNuu6cH90cA2Yw=","y2O\u002BMtvYW\u002BJsiXwnsSGokrtLoPU1BZKq/Rs6jBLWkBA=","XfkTfnoOOODr5Ke\u002BIvlGksb7y1tdjO9D3cio6nfgb6o=","sbScjs7uLbfBbWbJKERtvGeL8se13w0V5s0ufS/zDaQ=","9hC0wthPXB9k40lIbDKdWYtaw2axqBb91\u002BojeVYtTEY=","xLFIqNnTxWnQP99MmbgJqozQM9NzpZ0mMYZdGkZnBU4=","qOlED1ak4sYSTrFn1g6Y7mnsz3UFQEQ/RV3qKJGx0DQ=","Ijp03RBmTBHzhcCv1Sg/aWUghcNgib2sblPmYlOuDYk=","HCsDlEON4uTuZHQ/mLhoZSnOhDE/0YmD0\u002BPzbGk55jk=","DIlQgc8O3Rampq4\u002BuAU34qvAhOQ76ih6rEWZRuXbpGs=","87pLnLY3BRAM5qVJkJZ6NFQjQse85QaOsaRqbVei3f8=","gb5K/PglhYNjQ6udVditV5mmWe8pBL0bkbfqmDZJR3Q=","c//884XNSMx2fHCDDouqzztU4ZLBdyPK5IazFjEu3xg=","A5FwpPfGidgr2NgPt1ofZxg2nxXAcuozNEFd9BE7nsk="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
LQIR0vaCUe8ZURwOfXvPmxpSP8m1Mmgdc3YqN7XRVew=
|
uItkRxd8HGmDpOGXSZUcgBl9qNJmoTF2VPg7ZNs3V00=
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
56
OnProfNext.Server/Controllers/OrderUsersController.cs
Normal file
56
OnProfNext.Server/Controllers/OrderUsersController.cs
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using OnProfNext.Server.Data;
|
||||||
|
using OnProfNext.Shared.Models;
|
||||||
|
|
||||||
|
namespace OnProfNext.Server.Controllers
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class OrderUsersController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly AppDbContext _context;
|
||||||
|
|
||||||
|
public OrderUsersController(AppDbContext context)
|
||||||
|
{
|
||||||
|
_context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
//GET: api/orderusers/{orderId}
|
||||||
|
[HttpGet("{orderId}")]
|
||||||
|
public async Task<ActionResult<IEnumerable<int>>> GetUsersForOrder(int orderId)
|
||||||
|
{
|
||||||
|
var userIds = await _context.OrderUsers.Where(ou => ou.OrderId == orderId).Select(ou => ou.UserId).ToListAsync();
|
||||||
|
|
||||||
|
return Ok(userIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
//POST: api/orderusers
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IActionResult> SetUsersForOrder([FromBody] OrderUserAssignmentDto dto)
|
||||||
|
{
|
||||||
|
var existing = await _context.OrderUsers
|
||||||
|
.Where(ou => ou.OrderId == dto.OrderId)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
_context.OrderUsers.RemoveRange(existing);
|
||||||
|
|
||||||
|
var newRelations = dto.UserIds.Select(uid => new OrderUser
|
||||||
|
{
|
||||||
|
OrderId = dto.OrderId,
|
||||||
|
UserId = uid
|
||||||
|
});
|
||||||
|
|
||||||
|
_context.OrderUsers.AddRange(newRelations);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
return NoContent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OrderUserAssignmentDto
|
||||||
|
{
|
||||||
|
public int OrderId { get; set; }
|
||||||
|
public List<int> UserIds { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -19,12 +19,14 @@ namespace OnProfNext.Server.Controllers
|
|||||||
_context = context;
|
_context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get: api/orders/byproject/5
|
|
||||||
[HttpGet("byproject/{projectId}")]
|
[HttpGet("byproject/{projectId}")]
|
||||||
public async Task<ActionResult<IEnumerable<OrderDto>>> GetOrdersByProject(int projectId)
|
public async Task<ActionResult<IEnumerable<OrderDto>>> GetOrdersByProject(int projectId)
|
||||||
{
|
{
|
||||||
var orders = await _context.Orders
|
var orders = await _context.Orders
|
||||||
|
.Include(o => o.OrderUsers)
|
||||||
|
.ThenInclude(ou => ou.User)
|
||||||
.Where(o => o.ProjectId == projectId)
|
.Where(o => o.ProjectId == projectId)
|
||||||
|
.AsNoTracking()
|
||||||
.Select(o => new OrderDto
|
.Select(o => new OrderDto
|
||||||
{
|
{
|
||||||
Id = o.Id,
|
Id = o.Id,
|
||||||
@ -34,42 +36,65 @@ namespace OnProfNext.Server.Controllers
|
|||||||
Status = o.Status,
|
Status = o.Status,
|
||||||
Planstunden = o.Planstunden,
|
Planstunden = o.Planstunden,
|
||||||
Iststunden = o.Iststunden,
|
Iststunden = o.Iststunden,
|
||||||
Projektcode = o.Projektcode,
|
|
||||||
MandantId = o.MandantId,
|
MandantId = o.MandantId,
|
||||||
CreatedAt = o.CreatedAt,
|
Mitarbeiter = o.OrderUsers
|
||||||
UpdatedAt = o.UpdatedAt
|
.Select(ou => new UserDto
|
||||||
|
{
|
||||||
|
Id = ou.User!.Id,
|
||||||
|
Username = ou.User.Username,
|
||||||
|
FirstName = ou.User.FirstName,
|
||||||
|
LastName = ou.User.LastName,
|
||||||
|
Email = ou.User.Email
|
||||||
|
}).ToList()
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
return Ok(orders);
|
return Ok(orders);
|
||||||
}
|
}
|
||||||
|
|
||||||
//GET: api/orders/5
|
// GET: api/orders/5
|
||||||
[HttpGet("{id}")]
|
[HttpGet("{id}")]
|
||||||
public async Task<ActionResult<OrderDto>> GetOrder(int id)
|
public async Task<ActionResult<OrderDto>> GetOrder(int id)
|
||||||
{
|
{
|
||||||
var o = await _context.Orders.FindAsync(id);
|
var order = await _context.Orders
|
||||||
if (o == null) return NotFound();
|
.Include(o => o.OrderUsers)
|
||||||
|
.ThenInclude(ou => ou.User)
|
||||||
|
.AsNoTracking()
|
||||||
|
.FirstOrDefaultAsync(o => o.Id == id);
|
||||||
|
|
||||||
return new OrderDto
|
if (order == null)
|
||||||
|
return NotFound();
|
||||||
|
|
||||||
|
var dto = new OrderDto
|
||||||
{
|
{
|
||||||
Id = o.Id,
|
Id = order.Id,
|
||||||
ProjectId = o.ProjectId,
|
ProjectId = order.ProjectId,
|
||||||
Auftragsnummer = o.Auftragsnummer,
|
Auftragsnummer = order.Auftragsnummer,
|
||||||
Titel = o.Titel,
|
Titel = order.Titel,
|
||||||
Status = o.Status,
|
Status = order.Status,
|
||||||
Planstunden = o.Planstunden,
|
Planstunden = order.Planstunden,
|
||||||
Iststunden = o.Iststunden,
|
Iststunden = order.Iststunden,
|
||||||
Projektcode = o.Projektcode,
|
Projektcode = order.Projektcode,
|
||||||
MandantId = o.MandantId,
|
MandantId = order.MandantId,
|
||||||
CreatedAt = o.CreatedAt,
|
CreatedAt = order.CreatedAt,
|
||||||
UpdatedAt = o.UpdatedAt
|
UpdatedAt = order.UpdatedAt,
|
||||||
|
Mitarbeiter = order.OrderUsers
|
||||||
|
.Select(ou => new UserDto
|
||||||
|
{
|
||||||
|
Id = ou.User!.Id,
|
||||||
|
Username = ou.User.Username,
|
||||||
|
FirstName = ou.User.FirstName,
|
||||||
|
LastName = ou.User.LastName,
|
||||||
|
Email = ou.User.Email
|
||||||
|
}).ToList()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return Ok(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
//POST: api/orders
|
// POST: api/orders
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult<OrderDto>> CreateOrder(OrderDto dto)
|
public async Task<ActionResult<OrderDto>> CreateOrder(OrderCreateDto dto)
|
||||||
{
|
{
|
||||||
var order = new Order
|
var order = new Order
|
||||||
{
|
{
|
||||||
@ -78,8 +103,7 @@ namespace OnProfNext.Server.Controllers
|
|||||||
Titel = dto.Titel,
|
Titel = dto.Titel,
|
||||||
Status = dto.Status,
|
Status = dto.Status,
|
||||||
Planstunden = dto.Planstunden,
|
Planstunden = dto.Planstunden,
|
||||||
Iststunden = dto.Iststunden,
|
Iststunden = 0,
|
||||||
Projektcode = dto.Projektcode,
|
|
||||||
MandantId = dto.MandantId,
|
MandantId = dto.MandantId,
|
||||||
CreatedAt = DateTime.UtcNow,
|
CreatedAt = DateTime.UtcNow,
|
||||||
UpdatedAt = DateTime.UtcNow
|
UpdatedAt = DateTime.UtcNow
|
||||||
@ -88,11 +112,35 @@ namespace OnProfNext.Server.Controllers
|
|||||||
_context.Orders.Add(order);
|
_context.Orders.Add(order);
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
dto.Id = order.Id;
|
// Mitarbeiter zuordnen
|
||||||
dto.CreatedAt = order.CreatedAt;
|
if (dto.UserIds != null && dto.UserIds.Any())
|
||||||
dto.UpdatedAt = order.UpdatedAt;
|
{
|
||||||
|
var relations = dto.UserIds.Select(uid => new OrderUser
|
||||||
|
{
|
||||||
|
OrderId = order.Id,
|
||||||
|
UserId = uid
|
||||||
|
});
|
||||||
|
|
||||||
return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, dto);
|
_context.OrderUsers.AddRange(relations);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Antwort zusammenbauen
|
||||||
|
var createdDto = new OrderDto
|
||||||
|
{
|
||||||
|
Id = order.Id,
|
||||||
|
ProjectId = order.ProjectId,
|
||||||
|
Auftragsnummer = order.Auftragsnummer,
|
||||||
|
Titel = order.Titel,
|
||||||
|
Status = order.Status,
|
||||||
|
Planstunden = order.Planstunden,
|
||||||
|
Iststunden = order.Iststunden,
|
||||||
|
MandantId = order.MandantId,
|
||||||
|
CreatedAt = order.CreatedAt,
|
||||||
|
UpdatedAt = order.UpdatedAt
|
||||||
|
};
|
||||||
|
|
||||||
|
return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, createdDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
//PUT: api/orders/5
|
//PUT: api/orders/5
|
||||||
@ -117,13 +165,18 @@ namespace OnProfNext.Server.Controllers
|
|||||||
[HttpDelete("{id}")]
|
[HttpDelete("{id}")]
|
||||||
public async Task<IActionResult> DeleteOrder(int id)
|
public async Task<IActionResult> DeleteOrder(int id)
|
||||||
{
|
{
|
||||||
var order = await _context.Orders.FindAsync(id);
|
var order = await _context.Orders
|
||||||
if (order == null) return NotFound();
|
.Include(o => o.OrderUsers)
|
||||||
|
.FirstOrDefaultAsync(o => o.Id == id);
|
||||||
|
|
||||||
|
if (order == null)
|
||||||
|
return NotFound();
|
||||||
|
|
||||||
|
_context.OrderUsers.RemoveRange(order.OrderUsers);
|
||||||
_context.Orders.Remove(order);
|
_context.Orders.Remove(order);
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
return NoContent();
|
return NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,11 +8,11 @@ namespace OnProfNext.Server.Controllers
|
|||||||
{
|
{
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
public class ProjectController : ControllerBase
|
public class ProjectsController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly AppDbContext _context;
|
private readonly AppDbContext _context;
|
||||||
|
|
||||||
public ProjectController(AppDbContext context)
|
public ProjectsController(AppDbContext context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
}
|
}
|
||||||
@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using OnProfNext.Server.Data;
|
using OnProfNext.Server.Data;
|
||||||
using OnProfNext.Server.Services;
|
using OnProfNext.Server.Services;
|
||||||
using OnProfNext.Shared.Models;
|
using OnProfNext.Shared.Models;
|
||||||
|
using OnProfNext.Shared.Models.DTOs;
|
||||||
|
|
||||||
namespace OnProfNext.Server.Controllers
|
namespace OnProfNext.Server.Controllers
|
||||||
{
|
{
|
||||||
@ -22,21 +23,45 @@ namespace OnProfNext.Server.Controllers
|
|||||||
//GET: api/users
|
//GET: api/users
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<ActionResult<IEnumerable<User>>> GetUsers()
|
public async Task<ActionResult<IEnumerable<UserDto>>> GetUsers()
|
||||||
{
|
{
|
||||||
return await _context.Users.AsNoTracking().ToListAsync();
|
var users = await _context.Users.AsNoTracking().Select(u => new UserDto
|
||||||
|
{
|
||||||
|
Id = u.Id,
|
||||||
|
Username = u.Username,
|
||||||
|
Email = u.Email,
|
||||||
|
FirstName = u.FirstName,
|
||||||
|
LastName = u.LastName,
|
||||||
|
MandantId = u.MandantId,
|
||||||
|
IsActive = u.IsActive
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
return Ok(users);
|
||||||
}
|
}
|
||||||
|
|
||||||
//GET: api/users/5
|
//GET: api/users/5
|
||||||
[HttpGet("{id}")]
|
[HttpGet("{id}")]
|
||||||
public async Task<ActionResult<User>> GetUser(int id)
|
public async Task<ActionResult<UserDto>> GetUser(int id)
|
||||||
{
|
{
|
||||||
var user = await _context.Users.FindAsync(id);
|
var user = await _context.Users
|
||||||
|
.AsNoTracking()
|
||||||
|
.Where(u => u.Id == id)
|
||||||
|
.Select(u => new UserDto
|
||||||
|
{
|
||||||
|
Id = u.Id,
|
||||||
|
Username = u.Username,
|
||||||
|
Email = u.Email,
|
||||||
|
FirstName = u.FirstName,
|
||||||
|
LastName = u.LastName,
|
||||||
|
MandantId = u.MandantId,
|
||||||
|
IsActive = u.IsActive
|
||||||
|
})
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
|
||||||
return user;
|
return Ok(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
//POST: api/users
|
//POST: api/users
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OnProfNext.Server")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("OnProfNext.Server")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+789d44a34459f0132cb03433abffa66c9ff48824")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+910ed8b8f84357d5f19f7be7f67be8f98b22e9c9")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("OnProfNext.Server")]
|
[assembly: System.Reflection.AssemblyProductAttribute("OnProfNext.Server")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("OnProfNext.Server")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("OnProfNext.Server")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
0112fdf05bcbbdf85e9b7a9cb66a9b7812c7b77cd789cf405fa10334aba74a96
|
9c6fea68571aa14755a5757920f4a71a3ea78617a0cb2d16e4a85d871afee2d4
|
||||||
|
|||||||
Binary file not shown.
@ -1 +1 @@
|
|||||||
1649fe5519326da7f926266c5793daba5ff377a06b40397fb607e486ec674434
|
8805535874ac805970a5fc9ba19ba7716e78a205f536b46f85b434f940fcc2fa
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"FgKIeBZ9Ztoqric5Nb7d8Ix++iErS9q0YOlj6fkVIbM=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["PmzPzDLX5kem67gWwuODY2y/hyQd8nKfjwCe/ukzc7c=","LY\u002BzkbCH4BDCRNsN4e4hLpvYL/q343HA7aPqxLAnut4=","JcRKU2Zb4DUaR9Im1Nhj21bq9CS6zqrEyUlIptRQGPk=","oWGMgCB3vBEn8UDnk8gLGSmHUQp9nje0xZwa9jbcJds=","j4zvFombPCFDsE\u002BVLdnMhkrq8OLrHidrxFTLuLU5vMQ=","KJJmmS83E4AFqRDn5z9krFmkNtj5EIaWLgIS37POGr8=","xQg7Ozplq1cFDQPPrR5U6g5tfTz0Tx8zEGJriilBzbY=","xXIxgYvMtC9sEkafVNlrcH1Pv5l0FLdyBQPAp5BPAeY=","tf9mfbbiGyrn8DwXufw5UsDjSSX2bb4/v03tlENYAyQ=","HCEmdDnOaqxSVlCudFM7kXBMB\u002BTnSOIqCZaIDo2\u002BkmY=","OKkUjMjTxHumPV8kCwmKIe5EWTGXpicq5nPdBf1UjgU=","nGJ1y3WFrH56ZKC6r2VTpPKOcPajDLQnhXocDhcXmRg=","cGx77cv7nA0DdmaIS2X36NmMdiNb53a\u002BFYrSSYo5FuI=","FtlA9l0oAxySvxoKIT9fzLZajRC\u002Bb\u002B5TJipa9p57wiQ=","eFkUF78KbACBytwdzYneghMgzZWrsA02z0/ACTjf1LY=","YMmNzNRYlNUaY02cz66xLjTOWrv1loEdDwImShCe1jo=","PeS/S8mByULK0UONqH\u002ByZPgxm1uqX9tdeBSbGFZXR4s=","jKTJ7g0eCxEdDl05oVJEtlTpRXiB2qnvMi2PxRdZ9zc=","rzYf1UGwzK\u002Bt/dnYYqlMR7QuKGfkx/vU7t8YI/Qdey0=","Ww0AK17g0XIkjndgpYH6uveAS5QZvgE6TKFMPxHZgK8=","GA1u7GN8CpPjgtVF9p5meRcHD1sfLghHWP4j/Dqg1Lg=","SF9qmJCiNAHDHHnVc2cEt2z1mO82I0VggENUI8NSZqk=","qCDwNzaKuXnkV0G76t21N4pVOCPzJWmMDrEdjFbCXoc=","iMVw0eiXFIR8VogqY0SuhHCe3w\u002BRtCVecwImsxPMzTw=","HZFxsQaTWeyRUw50nxUt9gRfpEPRI3OFp6NOU5frds0=","2E2DXizaWyyz5hJGy5kQ608yc9QroQLLKm2qQtr4/kU=","GJfwFUk2fZZkZmk0TMk\u002BrB1iqzGaYrLg7MFHXI9oaQM=","XFwG7JLxXxSp7GJoSb8NffDaAy8YL0bpfxI4XZ0qH0s=","rpaQmELSXW5qZL9CsRJ8FOFKY1yeKUdSxG9xjxoX0is=","L8osGMPfA4plP8\u002BDGlloF818jpj8bQjUIRsSPqAmmLM="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"FgKIeBZ9Ztoqric5Nb7d8Ix++iErS9q0YOlj6fkVIbM=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["PmzPzDLX5kem67gWwuODY2y/hyQd8nKfjwCe/ukzc7c=","LY\u002BzkbCH4BDCRNsN4e4hLpvYL/q343HA7aPqxLAnut4=","JcRKU2Zb4DUaR9Im1Nhj21bq9CS6zqrEyUlIptRQGPk=","oWGMgCB3vBEn8UDnk8gLGSmHUQp9nje0xZwa9jbcJds=","j4zvFombPCFDsE\u002BVLdnMhkrq8OLrHidrxFTLuLU5vMQ=","KJJmmS83E4AFqRDn5z9krFmkNtj5EIaWLgIS37POGr8=","xQg7Ozplq1cFDQPPrR5U6g5tfTz0Tx8zEGJriilBzbY=","xXIxgYvMtC9sEkafVNlrcH1Pv5l0FLdyBQPAp5BPAeY=","tf9mfbbiGyrn8DwXufw5UsDjSSX2bb4/v03tlENYAyQ=","HCEmdDnOaqxSVlCudFM7kXBMB\u002BTnSOIqCZaIDo2\u002BkmY=","OKkUjMjTxHumPV8kCwmKIe5EWTGXpicq5nPdBf1UjgU=","nGJ1y3WFrH56ZKC6r2VTpPKOcPajDLQnhXocDhcXmRg=","cGx77cv7nA0DdmaIS2X36NmMdiNb53a\u002BFYrSSYo5FuI=","FtlA9l0oAxySvxoKIT9fzLZajRC\u002Bb\u002B5TJipa9p57wiQ=","eFkUF78KbACBytwdzYneghMgzZWrsA02z0/ACTjf1LY=","YMmNzNRYlNUaY02cz66xLjTOWrv1loEdDwImShCe1jo=","PeS/S8mByULK0UONqH\u002ByZPgxm1uqX9tdeBSbGFZXR4s=","jKTJ7g0eCxEdDl05oVJEtlTpRXiB2qnvMi2PxRdZ9zc=","rzYf1UGwzK\u002Bt/dnYYqlMR7QuKGfkx/vU7t8YI/Qdey0=","Ww0AK17g0XIkjndgpYH6uveAS5QZvgE6TKFMPxHZgK8=","GA1u7GN8CpPjgtVF9p5meRcHD1sfLghHWP4j/Dqg1Lg=","SF9qmJCiNAHDHHnVc2cEt2z1mO82I0VggENUI8NSZqk=","qCDwNzaKuXnkV0G76t21N4pVOCPzJWmMDrEdjFbCXoc=","iMVw0eiXFIR8VogqY0SuhHCe3w\u002BRtCVecwImsxPMzTw=","HZFxsQaTWeyRUw50nxUt9gRfpEPRI3OFp6NOU5frds0=","2E2DXizaWyyz5hJGy5kQ608yc9QroQLLKm2qQtr4/kU=","GJfwFUk2fZZkZmk0TMk\u002BrB1iqzGaYrLg7MFHXI9oaQM=","XFwG7JLxXxSp7GJoSb8NffDaAy8YL0bpfxI4XZ0qH0s=","rpaQmELSXW5qZL9CsRJ8FOFKY1yeKUdSxG9xjxoX0is=","M\u002BbooiExb8jG2y5dZyG\u002BDf0sAUlX/4mYxMHP4XWh2d4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"TJ2LTRuPMY5dh+Ys0sp6meZCDAgoVVT755nQ9dkxJ+U=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["PmzPzDLX5kem67gWwuODY2y/hyQd8nKfjwCe/ukzc7c=","LY\u002BzkbCH4BDCRNsN4e4hLpvYL/q343HA7aPqxLAnut4=","JcRKU2Zb4DUaR9Im1Nhj21bq9CS6zqrEyUlIptRQGPk=","oWGMgCB3vBEn8UDnk8gLGSmHUQp9nje0xZwa9jbcJds=","j4zvFombPCFDsE\u002BVLdnMhkrq8OLrHidrxFTLuLU5vMQ=","KJJmmS83E4AFqRDn5z9krFmkNtj5EIaWLgIS37POGr8=","xQg7Ozplq1cFDQPPrR5U6g5tfTz0Tx8zEGJriilBzbY=","xXIxgYvMtC9sEkafVNlrcH1Pv5l0FLdyBQPAp5BPAeY=","tf9mfbbiGyrn8DwXufw5UsDjSSX2bb4/v03tlENYAyQ=","HCEmdDnOaqxSVlCudFM7kXBMB\u002BTnSOIqCZaIDo2\u002BkmY=","OKkUjMjTxHumPV8kCwmKIe5EWTGXpicq5nPdBf1UjgU=","nGJ1y3WFrH56ZKC6r2VTpPKOcPajDLQnhXocDhcXmRg=","cGx77cv7nA0DdmaIS2X36NmMdiNb53a\u002BFYrSSYo5FuI=","FtlA9l0oAxySvxoKIT9fzLZajRC\u002Bb\u002B5TJipa9p57wiQ=","eFkUF78KbACBytwdzYneghMgzZWrsA02z0/ACTjf1LY=","YMmNzNRYlNUaY02cz66xLjTOWrv1loEdDwImShCe1jo=","PeS/S8mByULK0UONqH\u002ByZPgxm1uqX9tdeBSbGFZXR4s=","jKTJ7g0eCxEdDl05oVJEtlTpRXiB2qnvMi2PxRdZ9zc=","rzYf1UGwzK\u002Bt/dnYYqlMR7QuKGfkx/vU7t8YI/Qdey0=","Ww0AK17g0XIkjndgpYH6uveAS5QZvgE6TKFMPxHZgK8=","GA1u7GN8CpPjgtVF9p5meRcHD1sfLghHWP4j/Dqg1Lg=","SF9qmJCiNAHDHHnVc2cEt2z1mO82I0VggENUI8NSZqk=","qCDwNzaKuXnkV0G76t21N4pVOCPzJWmMDrEdjFbCXoc=","iMVw0eiXFIR8VogqY0SuhHCe3w\u002BRtCVecwImsxPMzTw=","HZFxsQaTWeyRUw50nxUt9gRfpEPRI3OFp6NOU5frds0=","2E2DXizaWyyz5hJGy5kQ608yc9QroQLLKm2qQtr4/kU=","GJfwFUk2fZZkZmk0TMk\u002BrB1iqzGaYrLg7MFHXI9oaQM=","XFwG7JLxXxSp7GJoSb8NffDaAy8YL0bpfxI4XZ0qH0s=","rpaQmELSXW5qZL9CsRJ8FOFKY1yeKUdSxG9xjxoX0is=","L8osGMPfA4plP8\u002BDGlloF818jpj8bQjUIRsSPqAmmLM="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"TJ2LTRuPMY5dh+Ys0sp6meZCDAgoVVT755nQ9dkxJ+U=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["PmzPzDLX5kem67gWwuODY2y/hyQd8nKfjwCe/ukzc7c=","LY\u002BzkbCH4BDCRNsN4e4hLpvYL/q343HA7aPqxLAnut4=","JcRKU2Zb4DUaR9Im1Nhj21bq9CS6zqrEyUlIptRQGPk=","oWGMgCB3vBEn8UDnk8gLGSmHUQp9nje0xZwa9jbcJds=","j4zvFombPCFDsE\u002BVLdnMhkrq8OLrHidrxFTLuLU5vMQ=","KJJmmS83E4AFqRDn5z9krFmkNtj5EIaWLgIS37POGr8=","xQg7Ozplq1cFDQPPrR5U6g5tfTz0Tx8zEGJriilBzbY=","xXIxgYvMtC9sEkafVNlrcH1Pv5l0FLdyBQPAp5BPAeY=","tf9mfbbiGyrn8DwXufw5UsDjSSX2bb4/v03tlENYAyQ=","HCEmdDnOaqxSVlCudFM7kXBMB\u002BTnSOIqCZaIDo2\u002BkmY=","OKkUjMjTxHumPV8kCwmKIe5EWTGXpicq5nPdBf1UjgU=","nGJ1y3WFrH56ZKC6r2VTpPKOcPajDLQnhXocDhcXmRg=","cGx77cv7nA0DdmaIS2X36NmMdiNb53a\u002BFYrSSYo5FuI=","FtlA9l0oAxySvxoKIT9fzLZajRC\u002Bb\u002B5TJipa9p57wiQ=","eFkUF78KbACBytwdzYneghMgzZWrsA02z0/ACTjf1LY=","YMmNzNRYlNUaY02cz66xLjTOWrv1loEdDwImShCe1jo=","PeS/S8mByULK0UONqH\u002ByZPgxm1uqX9tdeBSbGFZXR4s=","jKTJ7g0eCxEdDl05oVJEtlTpRXiB2qnvMi2PxRdZ9zc=","rzYf1UGwzK\u002Bt/dnYYqlMR7QuKGfkx/vU7t8YI/Qdey0=","Ww0AK17g0XIkjndgpYH6uveAS5QZvgE6TKFMPxHZgK8=","GA1u7GN8CpPjgtVF9p5meRcHD1sfLghHWP4j/Dqg1Lg=","SF9qmJCiNAHDHHnVc2cEt2z1mO82I0VggENUI8NSZqk=","qCDwNzaKuXnkV0G76t21N4pVOCPzJWmMDrEdjFbCXoc=","iMVw0eiXFIR8VogqY0SuhHCe3w\u002BRtCVecwImsxPMzTw=","HZFxsQaTWeyRUw50nxUt9gRfpEPRI3OFp6NOU5frds0=","2E2DXizaWyyz5hJGy5kQ608yc9QroQLLKm2qQtr4/kU=","GJfwFUk2fZZkZmk0TMk\u002BrB1iqzGaYrLg7MFHXI9oaQM=","XFwG7JLxXxSp7GJoSb8NffDaAy8YL0bpfxI4XZ0qH0s=","rpaQmELSXW5qZL9CsRJ8FOFKY1yeKUdSxG9xjxoX0is=","M\u002BbooiExb8jG2y5dZyG\u002BDf0sAUlX/4mYxMHP4XWh2d4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -9,14 +10,18 @@ namespace OnProfNext.Shared.Models.DTOs
|
|||||||
public class OrderCreateDto
|
public class OrderCreateDto
|
||||||
{
|
{
|
||||||
public int ProjectId { get; set; }
|
public int ProjectId { get; set; }
|
||||||
|
[Required]
|
||||||
public string Auftragsnummer { get; set; } = string.Empty;
|
public string Auftragsnummer { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string Titel { get; set; } = string.Empty;
|
public string Titel { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string Status { get; set; } = "Geplant";
|
public string Status { get; set; } = "Geplant";
|
||||||
public decimal Planstunden { get; set; }
|
public decimal Planstunden { get; set; }
|
||||||
public string? Projektcode { get; set; }
|
public string? Projektcode { get; set; }
|
||||||
public int MandantId { get; set; }
|
public int MandantId { get; set; }
|
||||||
|
|
||||||
// User, die an dem Auftrag beteiligt sind
|
// User, die an dem Auftrag beteiligt sind
|
||||||
public List<int> MitarbeiterIds { get; set; } = new();
|
public List<int> UserIds { get; set; } = new();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -10,8 +11,13 @@ namespace OnProfNext.Shared.Models.DTOs
|
|||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public int ProjectId { get; set; }
|
public int ProjectId { get; set; }
|
||||||
|
[Required]
|
||||||
public string Auftragsnummer { get; set; } = string.Empty;
|
public string Auftragsnummer { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string Titel { get; set; } = string.Empty;
|
public string Titel { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
public string Status { get; set; } = "Geplant";
|
public string Status { get; set; } = "Geplant";
|
||||||
public decimal Planstunden { get; set; }
|
public decimal Planstunden { get; set; }
|
||||||
public decimal Iststunden { get; set; }
|
public decimal Iststunden { get; set; }
|
||||||
@ -22,4 +28,5 @@ namespace OnProfNext.Shared.Models.DTOs
|
|||||||
|
|
||||||
public List<UserDto> Mitarbeiter { get; set; } = new();
|
public List<UserDto> Mitarbeiter { get; set; } = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OnProfNext.Shared")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("OnProfNext.Shared")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+789d44a34459f0132cb03433abffa66c9ff48824")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+910ed8b8f84357d5f19f7be7f67be8f98b22e9c9")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("OnProfNext.Shared")]
|
[assembly: System.Reflection.AssemblyProductAttribute("OnProfNext.Shared")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("OnProfNext.Shared")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("OnProfNext.Shared")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
cb328140769e1134df8dab5c31eb1d8f2b6b2ea4a2c253028a328aa88903a27f
|
57cdff878469b70b9b012776a3c6832ee54e415f6e69489a92366cc8882adf20
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user