namespace IOL.GreatOffice.Api.Endpoints.V1.Labels; public class CreateLabelRoute : RouteBaseSync.WithRequest.WithActionResult { private readonly MainAppDatabase _database; public CreateLabelRoute(MainAppDatabase database) { _database = database; } /// /// Create a time entry label. /// /// /// [ApiVersion(ApiSpecV1.VERSION_STRING)] [BasicAuthentication(AppConstants.TOKEN_ALLOW_CREATE)] [HttpPost("~/v{version:apiVersion}/labels/create")] public override ActionResult Handle(TimeLabel.TimeLabelDto labelTimeLabelDto) { var duplicate = _database.TimeLabels .Where(c => c.UserId == LoggedInUser.Id) .Any(c => c.Name.Trim() == labelTimeLabelDto.Name.Trim()); if (duplicate) { var label = _database.TimeLabels .Where(c => c.UserId == LoggedInUser.Id) .SingleOrDefault(c => c.Name.Trim() == labelTimeLabelDto.Name.Trim()); if (label != default) { return Ok(label.AsDto); } } var newLabel = new TimeLabel(LoggedInUser) { Name = labelTimeLabelDto.Name.Trim(), Color = labelTimeLabelDto.Color }; newLabel.SetOwnerIds(LoggedInUser.Id); _database.TimeLabels.Add(newLabel); _database.SaveChanges(); labelTimeLabelDto.Id = newLabel.Id; return Ok(labelTimeLabelDto); } }