public async Task <IActionResult> AddTechnology( [FromServices] IEntityRepository entityRepository, [FromServices] IQueue queue, [FromServices] ITechnologyRepository technologyRepository, [FromBody] EntityTechnology entityTechnology, string id) { try { var user = HttpContext.User; if (!_validation.Validate(entityTechnology)) { return(BadRequest()); } await entityRepository.AddTechnology(entityTechnology, id, technologyRepository); var author = user.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value; queue.PublishAsync("history", JsonConvert.SerializeObject( new HistoryMessage() { Id = entityTechnology.Id, Data = JsonConvert.SerializeObject( entityTechnology, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore } ), Type = "entity-technology", Author = author } )); return(NoContent()); } catch (ArgumentException ex) { return(BadRequest(new { message = ex.Message })); } catch (MongoWriteException exception) { if (exception.WriteError.Category == ServerErrorCategory.DuplicateKey) { return(Conflict(new { message = "This technology is already in your entity" })); } return(BadRequest()); } }