public async Task <IActionResult> UpdateFlexFieldObject(string id, [FromBody] T flexFieldObject) { CheckXssForObject(flexFieldObject); T loadedFlexFieldObject = await _objectDbAccess.GetFlexFieldObjectById(id); List <string> oldTags = loadedFlexFieldObject.Tags; if (oldTags == null) { oldTags = new List <string>(); } if (flexFieldObject.Tags == null) { flexFieldObject.Tags = new List <string>(); } if (FlexFieldApiUtil.HasDuplicateFieldNames(flexFieldObject.Fields)) { return(StatusCode((int)HttpStatusCode.BadRequest, _localizer["DuplicateFieldNameExist"])); } FlexFieldApiUtil.SetFieldIdsForNewFields(flexFieldObject.Fields); FlexFieldApiUtil.SetFieldIdsForNewFieldsInFolders(flexFieldObject.Fields); bool nameChanged = loadedFlexFieldObject.Name != flexFieldObject.Name; loadedFlexFieldObject.Name = flexFieldObject.Name; loadedFlexFieldObject.Fields = flexFieldObject.Fields; loadedFlexFieldObject.Tags = flexFieldObject.Tags; loadedFlexFieldObject = await RunAdditionalUpdates(flexFieldObject, loadedFlexFieldObject); await this.SetModifiedData(_userManager, loadedFlexFieldObject); await SetNotImplementedFlagOnChange(loadedFlexFieldObject); await _objectDbAccess.UpdateFlexFieldObject(loadedFlexFieldObject); _logger.LogInformation("Flex field object was updated."); await AddNewTags(flexFieldObject.Tags.Except(oldTags, StringComparer.OrdinalIgnoreCase).ToList()); await RemoveUnusedTags(oldTags.Except(flexFieldObject.Tags, StringComparer.OrdinalIgnoreCase).ToList()); _logger.LogInformation("Tags were updated."); if (nameChanged) { await RunMarkerUpdates(loadedFlexFieldObject); } await _timelineService.AddTimelineEntry(ObjectUpdatedEvent, loadedFlexFieldObject.Name, loadedFlexFieldObject.Id); return(Ok(loadedFlexFieldObject)); }
public async Task <IActionResult> CreateFlexFieldObject([FromBody] T flexFieldObject) { if (string.IsNullOrEmpty(flexFieldObject.Name)) { return(StatusCode((int)HttpStatusCode.BadRequest)); } CheckXssForObject(flexFieldObject); if (FlexFieldApiUtil.HasDuplicateFieldNames(flexFieldObject.Fields)) { return(StatusCode((int)HttpStatusCode.BadRequest, _localizer["DuplicateFieldNameExist"])); } FlexFieldApiUtil.SetFieldIdsForNewFields(flexFieldObject.Fields); FlexFieldApiUtil.SetFieldIdsForNewFieldsInFolders(flexFieldObject.Fields); if (flexFieldObject.Tags == null) { flexFieldObject.Tags = new List <string>(); } try { GoNorthProject project = await _projectDbAccess.GetDefaultProject(); flexFieldObject.ProjectId = project.Id; flexFieldObject = await RunAdditionalUpdates(flexFieldObject, flexFieldObject); await this.SetModifiedData(_userManager, flexFieldObject); flexFieldObject = await _objectDbAccess.CreateFlexFieldObject(flexFieldObject); await AddNewTags(flexFieldObject.Tags); await _timelineService.AddTimelineEntry(ObjectCreatedEvent, flexFieldObject.Name, flexFieldObject.Id); return(Ok(flexFieldObject)); } catch (Exception ex) { _logger.LogError(ex, "Could not create flex field object {0}", flexFieldObject.Name); return(StatusCode((int)HttpStatusCode.InternalServerError)); } }
/// <summary> /// Creates a new flex field template /// </summary> /// <param name="template">Template to create</param> /// <returns>Result</returns> protected async Task <IActionResult> BaseCreateFlexFieldTemplate(T template) { if (string.IsNullOrEmpty(template.Name)) { return(StatusCode((int)HttpStatusCode.BadRequest)); } CheckXssForObject(template); if (FlexFieldApiUtil.HasDuplicateFieldNames(template.Fields)) { return(StatusCode((int)HttpStatusCode.BadRequest, _localizer["DuplicateFieldNameExist"])); } template.ParentFolderId = string.Empty; if (template.Tags == null) { template.Tags = new List <string>(); } try { GoNorthProject project = await _projectDbAccess.GetDefaultProject(); template.ProjectId = project.Id; template = await RunAdditionalUpdates(template, template); await this.SetModifiedData(_userManager, template); template = await _templateDbAccess.CreateFlexFieldObject(template); await AddNewTags(template.Tags); await _timelineService.AddTimelineEntry(TemplateCreatedEvent, template.Name, template.Id); return(Ok(template)); } catch (Exception ex) { _logger.LogError(ex, "Could not create flex field template {0}", template.Name); return(StatusCode((int)HttpStatusCode.InternalServerError)); } }
/// <summary> /// Updates a flex field template /// </summary> /// <param name="id">Template Id</param> /// <param name="template">Update template data</param> /// <returns>Result Status Code</returns> protected async Task <IActionResult> BaseUpdateFlexFieldTemplate(string id, T template) { if (FlexFieldApiUtil.HasDuplicateFieldNames(template.Fields)) { return(StatusCode((int)HttpStatusCode.BadRequest, _localizer["DuplicateFieldNameExist"])); } CheckXssForObject(template); T loadedTemplate = await _templateDbAccess.GetFlexFieldObjectById(id); List <string> oldTags = loadedTemplate.Tags; if (oldTags == null) { oldTags = new List <string>(); } if (template.Tags == null) { template.Tags = new List <string>(); } loadedTemplate.Name = template.Name; loadedTemplate.Fields = template.Fields; loadedTemplate.Tags = template.Tags; template = await RunAdditionalUpdates(template, loadedTemplate); await this.SetModifiedData(_userManager, loadedTemplate); await _templateDbAccess.UpdateFlexFieldObject(loadedTemplate); _logger.LogInformation("Template was updated."); await AddNewTags(template.Tags.Except(oldTags, StringComparer.OrdinalIgnoreCase).ToList()); await RemoveUnusedTags(oldTags.Except(template.Tags, StringComparer.OrdinalIgnoreCase).ToList()); _logger.LogInformation("Tags were updated."); await _timelineService.AddTimelineEntry(TemplateUpdatedEvent, loadedTemplate.Name, loadedTemplate.Id); return(Ok(loadedTemplate)); }