namespace IOL.GreatOffice.Api.Endpoints.V1.Labels; /// public class CreateLabelRoute : RouteBaseSync.WithRequest.WithActionResult { private readonly AppDbContext _context; /// public CreateLabelRoute(AppDbContext context) { _context = context; } /// /// 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 = _context.TimeLabels .Where(c => c.UserId == LoggedInUser.Id) .Any(c => c.Name.Trim() == labelTimeLabelDto.Name.Trim()); if (duplicate) { var label = _context.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.Id) { Name = labelTimeLabelDto.Name.Trim(), Color = labelTimeLabelDto.Color }; _context.TimeLabels.Add(newLabel); _context.SaveChanges(); labelTimeLabelDto.Id = newLabel.Id; return Ok(labelTimeLabelDto); } }