diff options
Diffstat (limited to 'code/api/src/Endpoints/Internal/Account/GetArchiveRoute.cs')
| -rw-r--r-- | code/api/src/Endpoints/Internal/Account/GetArchiveRoute.cs | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/code/api/src/Endpoints/Internal/Account/GetArchiveRoute.cs b/code/api/src/Endpoints/Internal/Account/GetArchiveRoute.cs deleted file mode 100644 index 0d9f817..0000000 --- a/code/api/src/Endpoints/Internal/Account/GetArchiveRoute.cs +++ /dev/null @@ -1,61 +0,0 @@ -namespace IOL.GreatOffice.Api.Endpoints.Internal.Account; - -public class GetAccountArchiveRoute : RouteBaseAsync.WithoutRequest.WithActionResult<UserArchiveDto> -{ - private readonly MainAppDatabase _database; - - public GetAccountArchiveRoute(MainAppDatabase database) { - _database = database; - } - - /// <summary> - /// Get a data archive with the currently logged on user's data. - /// </summary> - /// <param name="cancellationToken"></param> - /// <returns></returns> - [HttpGet("~/_/account/archive")] - public override async Task<ActionResult<UserArchiveDto>> HandleAsync(CancellationToken cancellationToken = default) { - var user = _database.Users.SingleOrDefault(c => c.Id == LoggedInUser.Id); - if (user == default) { - await HttpContext.SignOutAsync(); - return Unauthorized(); - } - - var entries = _database.TimeEntries - .AsNoTracking() - .Include(c => c.Labels) - .Include(c => c.Category) - .Where(c => c.UserId == user.Id) - .ToList(); - - var jsonOptions = new JsonSerializerOptions { - WriteIndented = true - }; - - var dto = new UserArchiveDto(user); - dto.Entries.AddRange(entries.Select(entry => new UserArchiveDto.EntryDto { - CreatedAt = entry.CreatedAt.ToString("yyyy-MM-ddTHH:mm:ssZ"), - StartDateTime = entry.Start, - StopDateTime = entry.Stop, - Description = entry.Description, - Labels = entry.Labels - .Select(c => new UserArchiveDto.LabelDto { - Name = c.Name, - Color = c.Color - }) - .ToList(), - Category = new UserArchiveDto.CategoryDto { - Name = entry.Category.Name, - Color = entry.Category.Color - }, - })); - - dto.CountEntries(); - - var entriesSerialized = JsonSerializer.SerializeToUtf8Bytes(dto, jsonOptions); - - return File(entriesSerialized, - "application/json", - user.Username + "-time-tracker-archive-" + AppDateTime.UtcNow.ToString("yyyyMMddTHHmmss") + ".json"); - } -}
\ No newline at end of file |
