From 0725e4f7cf4c6f723264b6d461b91c660d144cb7 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sun, 30 Oct 2022 22:40:03 +0700 Subject: feat: Apiwork --- .../src/Endpoints/V1/Entries/CreateEntryRoute.cs | 107 +++++++++++---------- 1 file changed, 54 insertions(+), 53 deletions(-) (limited to 'code/api/src/Endpoints/V1/Entries/CreateEntryRoute.cs') diff --git a/code/api/src/Endpoints/V1/Entries/CreateEntryRoute.cs b/code/api/src/Endpoints/V1/Entries/CreateEntryRoute.cs index 854ff59..45d8f32 100644 --- a/code/api/src/Endpoints/V1/Entries/CreateEntryRoute.cs +++ b/code/api/src/Endpoints/V1/Entries/CreateEntryRoute.cs @@ -2,65 +2,66 @@ namespace IOL.GreatOffice.Api.Endpoints.V1.Entries; public class CreateEntryRoute : RouteBaseSync.WithRequest.WithActionResult { - private readonly AppDbContext _context; + private readonly MainAppDatabase _database; - public CreateEntryRoute(AppDbContext context) { - _context = context; - } + public CreateEntryRoute(MainAppDatabase database) { + _database = database; + } - /// - /// Create a time entry. - /// - /// - /// - [ApiVersion(ApiSpecV1.VERSION_STRING)] - [BasicAuthentication(AppConstants.TOKEN_ALLOW_CREATE)] - [ProducesResponseType(200)] - [ProducesResponseType(400, Type = typeof(KnownProblemModel))] - [ProducesResponseType(404, Type = typeof(KnownProblemModel))] - [HttpPost("~/v{version:apiVersion}/entries/create")] - public override ActionResult Handle(TimeEntry.TimeEntryDto timeEntryTimeEntryDto) { - if (timeEntryTimeEntryDto.Stop == default) { - return BadRequest(new KnownProblemModel("Invalid form", "A stop date is required")); - } + /// + /// Create a time entry. + /// + /// + /// + [ApiVersion(ApiSpecV1.VERSION_STRING)] + [BasicAuthentication(AppConstants.TOKEN_ALLOW_CREATE)] + [ProducesResponseType(200)] + [ProducesResponseType(400, Type = typeof(KnownProblemModel))] + [ProducesResponseType(404, Type = typeof(KnownProblemModel))] + [HttpPost("~/v{version:apiVersion}/entries/create")] + public override ActionResult Handle(TimeEntry.TimeEntryDto timeEntryTimeEntryDto) { + if (timeEntryTimeEntryDto.Stop == default) { + return BadRequest(new KnownProblemModel("Invalid form", "A stop date is required")); + } - if (timeEntryTimeEntryDto.Start == default) { - return BadRequest(new KnownProblemModel("Invalid form", "A start date is required")); - } + if (timeEntryTimeEntryDto.Start == default) { + return BadRequest(new KnownProblemModel("Invalid form", "A start date is required")); + } - if (timeEntryTimeEntryDto.Category == default) { - return BadRequest(new KnownProblemModel("Invalid form", "A category is required")); - } + if (timeEntryTimeEntryDto.Category == default) { + return BadRequest(new KnownProblemModel("Invalid form", "A category is required")); + } - var category = _context.TimeCategories - .Where(c => c.UserId == LoggedInUser.Id) - .SingleOrDefault(c => c.Id == timeEntryTimeEntryDto.Category.Id); - - if (category == default) { - return NotFound(new KnownProblemModel("Not found", $"Could not find category {timeEntryTimeEntryDto.Category.Name}")); - } + var category = _database.TimeCategories + .Where(c => c.UserId == LoggedInUser.Id) + .SingleOrDefault(c => c.Id == timeEntryTimeEntryDto.Category.Id); - var entry = new TimeEntry(LoggedInUser.Id) { - Category = category, - Start = timeEntryTimeEntryDto.Start.ToUniversalTime(), - Stop = timeEntryTimeEntryDto.Stop.ToUniversalTime(), - Description = timeEntryTimeEntryDto.Description, - }; + if (category == default) { + return NotFound(new KnownProblemModel("Not found", $"Could not find category {timeEntryTimeEntryDto.Category.Name}")); + } - if (timeEntryTimeEntryDto.Labels?.Count > 0) { - var labels = _context.TimeLabels - .Where(c => c.UserId == LoggedInUser.Id) - .Where(c => timeEntryTimeEntryDto.Labels.Select(p => p.Id).Contains(c.Id)) - .ToList(); - if (labels.Count != timeEntryTimeEntryDto.Labels.Count) { - return NotFound(new KnownProblemModel("Not found", "Could not find all of the specified labels")); - } + var entry = new TimeEntry(LoggedInUser) { + Category = category, + Start = timeEntryTimeEntryDto.Start.ToUniversalTime(), + Stop = timeEntryTimeEntryDto.Stop.ToUniversalTime(), + Description = timeEntryTimeEntryDto.Description, + }; + entry.SetOwnerIds(LoggedInUser.Id); - entry.Labels = labels; - } + if (timeEntryTimeEntryDto.Labels?.Count > 0) { + var labels = _database.TimeLabels + .Where(c => c.UserId == LoggedInUser.Id) + .Where(c => timeEntryTimeEntryDto.Labels.Select(p => p.Id).Contains(c.Id)) + .ToList(); + if (labels.Count != timeEntryTimeEntryDto.Labels.Count) { + return NotFound(new KnownProblemModel("Not found", "Could not find all of the specified labels")); + } - _context.TimeEntries.Add(entry); - _context.SaveChanges(); - return Ok(entry.AsDto); - } -} + entry.Labels = labels; + } + + _database.TimeEntries.Add(entry); + _database.SaveChanges(); + return Ok(entry.AsDto); + } +} \ No newline at end of file -- cgit v1.3