public async Task <IActionResult> Delete([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); //return Ok(new ResultMessageModel() { IsSuccess = false, Message = "Under Construction." }); //check for dependencies - if other profile types depend on this, it cannot be deleted. var item = GetItem(model.ID); if (item.Dependencies != null && item.Dependencies.Count > 0) { _logger.LogWarning($"ProfileTypeDefinitionController|Delete|Could not delete type definition because other type definitions depend on it. Id:{model.ID}."); return(Ok(new ResultMessageModel() { IsSuccess = false, Message = "This item cannot be deleted because other type definitions depend on this item." })); } var result = await _dal.Delete(model.ID, userToken); if (result < 0) { _logger.LogWarning($"ProfileTypeDefinitionController|Delete|Could not delete profile type definition. Invalid id:{model.ID}."); return(BadRequest("Could not delete item. Invalid id.")); } _logger.LogInformation($"ProfileTypeDefinitionController|Delete|Deleted profile type definition. Id:{model.ID}."); //return success message object return(Ok(new ResultMessageModel() { IsSuccess = true, Message = "Item was deleted." })); }
public Task <ResultMessageWithDataModel> Export([FromBody] IdIntModel model, [FromServices] OpcUaImporter exporter) { var userToken = UserExtension.DalUserToken(User); var profileItem = _dal.GetById(model.ID, userToken); if (profileItem == null /* || !(profileItem.AuthorId == null || profileItem.AuthorId == userToken)*/) { return(Task.FromResult(new ResultMessageWithDataModel() { IsSuccess = false, Message = $"Item {model?.ID} not found", })); } // Populate the OPC model into a new importer instance string xmlNodeSet = null; using (var xmlNodeSetStream = new MemoryStream()) { if (exporter.ExportProfileItem(profileItem, xmlNodeSetStream, userToken, null)) { xmlNodeSet = Encoding.UTF8.GetString(xmlNodeSetStream.ToArray()); // TODO read and include the required models in a ZIP file, optionally? } } return(Task.FromResult(new ResultMessageWithDataModel() { IsSuccess = true, Message = "Type definition was exported.", Data = xmlNodeSet, })); }
public IActionResult GetByID([FromBody] IdIntModel model) { if (model == null) { _logger.LogWarning($"ProfileTypeDefinitionController|GetByID|Invalid model (null)"); return(BadRequest($"Invalid model (null)")); } var result = this.GetItem(model.ID); if (result == null) { _logger.LogWarning($"ProfileTypeDefinitionController|GetById|No records found matching this ID: {model.ID}"); return(BadRequest($"No records found matching this ID: {model.ID}")); } //increment page visit count for this item var userToken = UserExtension.DalUserToken(User); var analytic = _dalAnalytics.Where(x => x.ProfileTypeDefinitionId == model.ID, userToken, null, null, false).Data.FirstOrDefault(); if (analytic == null) { _dalAnalytics.Add(new ProfileTypeDefinitionAnalyticModel() { ProfileTypeDefinitionId = model.ID, PageVisitCount = 1 }, userToken); } else { analytic.PageVisitCount += 1; _dalAnalytics.Update(analytic, null); } return(Ok(result)); }
public IActionResult GetProfileExplorer([FromBody] IdIntModel model) { if (model == null) { _logger.LogWarning($"ProfileTypeDefinitionController|GetProfileExplorer|Invalid model (null)"); return(BadRequest($"Invalid model (null)")); } var userToken = UserExtension.DalUserToken(User); var profile = _dal.GetById(model.ID, userToken); if (profile == null) { _logger.LogWarning($"ProfileTypeDefinitionController|GetProfileExplorer|No records found matching this ID: {model.ID}"); return(BadRequest($"No records found matching this ID: {model.ID}")); } //Build the explorer... var dependencies = _profileUtils.GenerateDependencies(profile, userToken); //Build the explorer inheritance tree... var treeview = _profileUtils.GenerateAncestoryTree(profile, userToken, true); // note interfaces, compositions already accounted for in profile object var result = new ProfileExplorerModel() { Profile = profile, Dependencies = dependencies, Tree = treeview }; return(Ok(result)); }
public IActionResult CopyUser([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); //get existing user, wipe out certain pieces of info, add new user //update new user's password, var result = _dal.GetById(model.ID, userToken); if (result == null) { //var errors = ExtractModelStateErrors(); return(BadRequest("Original user not found.")); } //keep permissions and organization same result.ID = null; result.Created = DateTime.UtcNow; result.Email = null; result.FirstName = null; result.LastName = null; result.UserName = null; result.LastLogin = null; result.RegistrationComplete = null; return(Ok(result)); }
public async Task <IActionResult> ToggleFavorite([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); var item = _dal.GetById(model.ID, userToken); item.IsFavorite = !item.IsFavorite; return(await UpdateInternal(item, false)); }
public IActionResult LookupProfileRelatedExtend([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); var parent = _dal.GetById(model.ID, userToken); var result = new ProfileLookupModel(); result.Compositions = _profileUtils.BuildCompositionLookupExtend(parent, userToken); result.Interfaces = _profileUtils.BuildInterfaceLookup(null, userToken); return(Ok(result)); }
public IActionResult GetByID([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); var result = _dal.GetById(model.ID, userToken); if (result == null) { return(BadRequest($"No records found matching this ID: {model.ID}")); } return(Ok(result)); }
public IActionResult Extend([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); var parent = _dal.GetById(model.ID, userToken); if (parent == null) { _logger.LogWarning($"ProfileTypeDefinitionController|Extend|No records found matching this ID: {model.ID}"); return(BadRequest($"No records found matching this ID: {model.ID}")); } var result = ExtendTypeDefinitionInternal(parent, null, true, userToken); return(Ok(result)); }
public IActionResult LookupProfileRelated([FromBody] IdIntModel model) { //for a new profile being created from front end, the profile won't have an id yet. if (model == null || model.ID <= 0) { return(Ok(new ProfileLookupModel())); } var userToken = UserExtension.DalUserToken(User); var profile = _dal.GetById(model.ID, userToken); var result = new ProfileLookupModel(); result.Compositions = _profileUtils.BuildCompositionLookup(profile, userToken); result.Interfaces = _profileUtils.BuildInterfaceLookup(profile, userToken); return(Ok(result)); }
public IActionResult GetByID([FromBody] IdIntModel model) { if (model == null) { _logger.LogWarning($"ProfileController|GetByID|Invalid model (null)"); return(BadRequest($"Invalid model (null)")); } var userToken = UserExtension.DalUserToken(User); var result = _dal.GetById(model.ID, userToken); if (result == null) { _logger.LogWarning($"ProfileController|GetById|No records found matching this ID: {model.ID}"); return(BadRequest($"No records found matching this ID: {model.ID}")); } return(Ok(result)); }
public async Task <IActionResult> Delete([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); var result = await _dal.Delete(model.ID, userToken); if (result < 0) { _logger.LogWarning($"Could not delete user. Invalid id:{model.ID}."); return(BadRequest("Could not delete user. Invalid id.")); } _logger.LogInformation($"Deleted user. Id:{model.ID}."); //return success message object return(Ok(new ResultMessageModel() { IsSuccess = true, Message = "Item was deleted." })); }
public async Task <IActionResult> Delete([FromBody] IdIntModel model) { var userToken = UserExtension.DalUserToken(User); //This also deletes all associated type defs, attributes, custom data types, compositions, interfaces //associated with this profile try { var result = await _dal.Delete(model.ID, userToken); if (result <= 0) { _logger.LogWarning($"ProfileController|Delete|Could not delete item. Invalid id:{model.ID}."); return(BadRequest("Could not delete item. Invalid id.")); } _logger.LogInformation($"ProfileController|Delete|Deleted item. Id:{model.ID}."); } catch (Npgsql.PostgresException eDB) { //trap foreign key error and let user know there is a dependency issue _logger.LogCritical($"ProfileController|Delete|Id:{model.ID}.", eDB); if (eDB.Message.ToLower().Contains("violates foreign key constraint")) { return(Ok(new ResultMessageModel() { IsSuccess = false, Message = "This profile cannot be deleted because something else depends on it. Check that no other profiles nor type definitions depend on this profile or this profile's type definitions. " })); } //some other db issue return(Ok(new ResultMessageModel() { IsSuccess = false, Message = "Please contact your system administrator." })); } //return success message object return(Ok(new ResultMessageModel() { IsSuccess = true, Message = "Item was deleted." })); }
public async Task <IActionResult> Export([FromBody] IdIntModel model) { /* * var xml = $"<?xml version=\"1.0\" encoding=\"utf-8\"?><Aliases><Alias Alias=\"Boolean\">i=1</Alias></Aliases>"; * var num = 0; * * switch (num) * { * case 2: * return Ok(new ResultMessageExportModel() { IsSuccess = false, Message = "Error ABC has occurred." }); * case 1: * return Ok(new ResultMessageExportModel() * { * IsSuccess = true, * Message = "", * Data = xml, * Warnings = new List<string>() { "Warning 1", "Warning 2", "Warning 3" } * }); * case 0: * default: * return Ok(new ResultMessageExportModel() { IsSuccess = true, Message = "", Data = xml }); * } */ var userToken = UserExtension.DalUserToken(User); //get profile to export var sw = Stopwatch.StartNew(); _logger.LogTrace("Starting export"); var item = _dal.GetById(model.ID, userToken); if (item == null) { //return Task.FromResult(new ResultMessageWithDataModel() return(Ok( new ResultMessageExportModel() { IsSuccess = false, Message = "Profile not found." } )); } int userId = User.GetUserID(); // Populate the OPC model into a new importer instance try { string result = null; using (var xmlNodeSetStream = new MemoryStream()) { _logger.LogTrace($"Timestamp||Export||Starting: {sw.Elapsed}"); if (_exporter.ExportNodeSet(item, xmlNodeSetStream, userToken, null)) { _logger.LogTrace($"Timestamp||Export||Nodeset Stream generated: {sw.Elapsed}"); result = Encoding.UTF8.GetString(xmlNodeSetStream.ToArray()); _logger.LogTrace($"Timestamp||Export||Data Converted to Response: {sw.Elapsed}"); // TODO read and include the required models in a ZIP file, optionally? //TBD - get the warnings that were logged on import and publish them here. } else { return(Ok(new ResultMessageExportModel() { IsSuccess = false, Message = "An error occurred downloading the profile." })); } } //return Task.FromResult(new ResultMessageWithDataModel() return(Ok(new ResultMessageExportModel() { IsSuccess = true, Message = "", Data = result, Warnings = item.ImportWarnings.Select(x => x.Message).ToList() })); } catch (Exception ex) { _logger.LogCritical(ex, $"ProfileController|Export|Failed:{ex.Message}"); _logger.LogTrace($"Timestamp||Export||Error: {sw.Elapsed}|| {ex.Message}"); return(Ok(new ResultMessageExportModel() { IsSuccess = false, Message = $"Technical details: {ex.Message}" })); } }
internal int?DeleteInternalTestHook(IdIntModel model) { return(_dal.Delete(model.ID, new UserToken { UserId = -1 }).Result); }