Files
FSI.BT.IR.Organization/scr/FSI.BT.IR.Organization.Db/Services/OrganizationService.cs
2024-10-25 13:25:15 +02:00

101 lines
3.1 KiB
C#

using FSI.BT.IR.Organization.Db.Data;
using Microsoft.EntityFrameworkCore;
namespace FSI.BT.IR.Organization.Db.Services
{
public class OrganizationService : IOrganizationService
{
private readonly AppDbContext _context;
public OrganizationService(AppDbContext context)
{
_context = context;
}
public async Task<Models.Organization> GetDataByIdAsync(int id)
{
return await _context.Organizations.FindAsync(id);
}
public async Task<List<Models.Organization>> GetDatasAsync()
{
return await _context.Organizations.ToListAsync();
}
public async Task<Models.Organization> SetFullShortName(Models.Organization organization)
{
organization.FullShortName = await GetFullShortName(organization.ParentId, organization.ShortName);
return organization;
}
public async Task AddAsync(Models.Organization organization)
{
organization.FullShortName = await GetFullShortName(organization.ParentId, organization.ShortName); // Kürzel updaten
_context.Add(organization);
await _context.SaveChangesAsync();
}
public async Task UpdateAsync(Models.Organization organization)
{
_context.Update(organization);
await _context.SaveChangesAsync();
organization.FullShortName = await GetFullShortName(organization.ParentId, organization.ShortName);
_context.Update(organization);
await _context.SaveChangesAsync();
}
public async Task RemoveAsync(Models.Organization organization)
{
_context.Remove(organization);
await _context.SaveChangesAsync();
}
public async Task SetParentIdNullAsync(int id)
{
_context.Organizations.Where(x => x.ParentId == id).ForEachAsync(x => x.ParentId = null);
}
#region Methods
private async Task UpdateAllFullShortName()
{
List<Models.Organization> organizations = await GetDatasAsync();
foreach (var organization in organizations)
{
organization.FullShortName = await GetFullShortName(organization.ParentId, organization.ShortName);
_context.Update(organization);
}
_context.SaveChanges();
}
private async Task<string> GetFullShortName(int? parentId, string? shortName)
{
foreach (var item in _context.Organizations.ToList())
{
if (item.Id == parentId)
{
if (item.ParentId.HasValue)
{
return await GetFullShortName(item.ParentId.Value, item.ShortName + " " + shortName);
}
else
{
return item.ShortName + shortName + " ";
}
}
}
return shortName;
}
#endregion
}
}